dballe-7.21/0000755000175000017500000000000013022523411007660 500000000000000dballe-7.21/missing0000755000175000017500000001533013022512015011177 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: dballe-7.21/show_code_notes0000755000175000017500000000006313022043102012701 00000000000000#!/bin/sh find . | xargs grep 'FIXME\|TODO' | less dballe-7.21/ltmain.sh0000644000175000017500000117147413022512005011434 00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 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. # GNU Libtool 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. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.6 Debian-2.4.6-2" package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 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. # 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 3 of the License, or # (at your option) any later version. # As a special exception to the GNU General Public License, if you distribute # this file as part of a program or library that is built using GNU Libtool, # you may include this file under the same distribution terms that you use # for the rest of that program. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! 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 # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! 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 ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 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. # 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 3 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, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.6-2 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs 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 BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: dballe-7.21/bench/0000755000175000017500000000000013022523410010736 500000000000000dballe-7.21/bench/20160404212258_postgresql_7e9a0f3232841235f05123ed68e4a2d98592d5ca.csv0000644000175000017500000000475413022043102022551 00000000000000postgresql.db_query_parse.station_ana_id,0.50,1931 postgresql.db_query_parse.station_coords,0.50,1541 postgresql.db_query_parse.station_ident,0.50,1794 postgresql.db_query_parse.station_repmemo,0.50,1098 postgresql.db_query_parse.stationdata_ana_id,0.50,1958 postgresql.db_query_parse.stationdata_coords,0.50,1508 postgresql.db_query_parse.stationdata_ident,0.50,1720 postgresql.db_query_parse.stationdata_repmemo,0.50,1139 postgresql.db_query_parse.data_ana_id,0.50,1954 postgresql.db_query_parse.data_coords,0.50,1538 postgresql.db_query_parse.data_ident,0.50,1764 postgresql.db_query_parse.data_repmemo,0.50,1143 postgresql.db_query_parse.data_datetime,0.50,2064 postgresql.db_import.create_synop-cloudbelow.bufr,0.61,4 postgresql.db_import.overwrite_synop-cloudbelow.bufr,0.51,13 postgresql.db_import.create_synop-evapo.bufr,0.53,5 postgresql.db_import.overwrite_synop-evapo.bufr,0.52,17 postgresql.db_import.create_synop-groundtemp.bufr,0.62,3 postgresql.db_import.overwrite_synop-groundtemp.bufr,0.53,8 postgresql.db_import.create_synop-gtscosmo.bufr,0.51,27 postgresql.db_import.overwrite_synop-gtscosmo.bufr,0.50,246 postgresql.db_import.create_synop-longname.bufr,0.51,10 postgresql.db_import.overwrite_synop-longname.bufr,0.50,51 postgresql.db_import.create_temp-gts1.bufr,0.53,8 postgresql.db_import.overwrite_temp-gts1.bufr,0.50,88 postgresql.db_import.create_temp-gts2.bufr,0.65,4 postgresql.db_import.overwrite_temp-gts2.bufr,0.52,15 postgresql.db_import.create_temp-gts3.bufr,0.52,19 postgresql.db_import.overwrite_temp-gts3.bufr,0.50,178 postgresql.db_import.create_temp-gtscosmo.bufr,0.50,39 postgresql.db_import.overwrite_temp-gtscosmo.bufr,0.50,581 postgresql.db_import.create_temp-timesig18.bufr,0.52,17 postgresql.db_import.overwrite_temp-timesig18.bufr,0.50,74 postgresql.db_import.create_gts-acars1.bufr,0.51,44 postgresql.db_import.overwrite_gts-acars1.bufr,0.50,589 postgresql.db_import.create_gts-acars2.bufr,0.51,41 postgresql.db_import.overwrite_gts-acars2.bufr,0.50,538 postgresql.db_import.create_gts-acars-us1.bufr,0.51,43 postgresql.db_import.overwrite_gts-acars-us1.bufr,0.50,558 postgresql.db_import.create_gts-amdar1.bufr,0.51,43 postgresql.db_import.overwrite_gts-amdar1.bufr,0.50,536 postgresql.db_import.create_gts-amdar2.bufr,0.51,44 postgresql.db_import.overwrite_gts-amdar2.bufr,0.50,576 postgresql.db_query.station_coords,0.50,1549 postgresql.db_query.stationdata_coords,0.50,869 postgresql.db_query.data_coords,0.50,578 postgresql.db_query.data_dt,0.50,550 postgresql.db_query.data_varcode,0.55,5 dballe-7.21/bench/20160414161343_mysqlv7_b0506a7cced442520e9b462b3a4e16f2ed0daa66.csv0000644000175000017500000000454013022043102022307 00000000000000mysqlv7.db_query_parse.station_ana_id,0.50,4987 mysqlv7.db_query_parse.station_coords,0.53,3225 mysqlv7.db_query_parse.station_ident,0.50,4179 mysqlv7.db_query_parse.station_repmemo,0.50,3731 mysqlv7.db_query_parse.stationdata_ana_id,0.50,4276 mysqlv7.db_query_parse.stationdata_coords,0.50,3266 mysqlv7.db_query_parse.stationdata_ident,0.50,4092 mysqlv7.db_query_parse.stationdata_repmemo,0.50,3937 mysqlv7.db_query_parse.data_ana_id,0.50,4206 mysqlv7.db_query_parse.data_coords,0.50,3142 mysqlv7.db_query_parse.data_ident,0.50,3997 mysqlv7.db_query_parse.data_repmemo,0.50,3509 mysqlv7.db_query_parse.data_datetime,0.50,5065 mysqlv7.db_import.create_synop-cloudbelow.bufr,0.57,5 mysqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.51,26 mysqlv7.db_import.create_synop-evapo.bufr,0.56,6 mysqlv7.db_import.overwrite_synop-evapo.bufr,0.51,34 mysqlv7.db_import.create_synop-groundtemp.bufr,0.69,3 mysqlv7.db_import.overwrite_synop-groundtemp.bufr,0.51,19 mysqlv7.db_import.create_synop-gtscosmo.bufr,0.51,21 mysqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,158 mysqlv7.db_import.create_synop-longname.bufr,0.50,12 mysqlv7.db_import.overwrite_synop-longname.bufr,0.50,84 mysqlv7.db_import.create_temp-gts1.bufr,0.55,5 mysqlv7.db_import.overwrite_temp-gts1.bufr,0.51,46 mysqlv7.db_import.create_temp-gts2.bufr,0.67,2 mysqlv7.db_import.overwrite_temp-gts2.bufr,0.51,7 mysqlv7.db_import.create_temp-gts3.bufr,0.52,14 mysqlv7.db_import.overwrite_temp-gts3.bufr,0.50,127 mysqlv7.db_import.create_temp-gtscosmo.bufr,0.50,26 mysqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,496 mysqlv7.db_import.create_temp-timesig18.bufr,0.51,21 mysqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,115 mysqlv7.db_import.create_gts-acars1.bufr,0.50,30 mysqlv7.db_import.overwrite_gts-acars1.bufr,0.50,822 mysqlv7.db_import.create_gts-acars2.bufr,0.51,31 mysqlv7.db_import.overwrite_gts-acars2.bufr,0.50,763 mysqlv7.db_import.create_gts-acars-us1.bufr,0.51,30 mysqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,740 mysqlv7.db_import.create_gts-amdar1.bufr,0.51,31 mysqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,789 mysqlv7.db_import.create_gts-amdar2.bufr,0.50,31 mysqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,888 mysqlv7.db_query.station_coords,0.50,2958 mysqlv7.db_query.stationdata_coords,0.50,1962 mysqlv7.db_query.data_coords,0.50,1567 mysqlv7.db_query.data_dt,0.50,1489 mysqlv7.db_query.data_varcode,0.56,4 dballe-7.21/bench/20160324164123_sqlitev7_1a0977a6106e7ead771ddfc02387dd298b5739ae.csv0000644000175000017500000000465713022043102022355 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6979 sqlitev7.db_query_parse.station_coords,0.50,5620 sqlitev7.db_query_parse.station_ident,0.50,6351 sqlitev7.db_query_parse.station_repmemo,0.50,6284 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7115 sqlitev7.db_query_parse.stationdata_coords,0.50,5594 sqlitev7.db_query_parse.stationdata_ident,0.50,6515 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6321 sqlitev7.db_query_parse.data_ana_id,0.50,7180 sqlitev7.db_query_parse.data_coords,0.50,5581 sqlitev7.db_query_parse.data_ident,0.50,6457 sqlitev7.db_query_parse.data_repmemo,0.50,6324 sqlitev7.db_query_parse.data_datetime,0.50,7370 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,52 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,69 sqlitev7.db_import.create_synop-evapo.bufr,0.50,88 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,85 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,36 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.51,39 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,650 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,1245 sqlitev7.db_import.create_synop-longname.bufr,0.50,178 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,238 sqlitev7.db_import.create_temp-gts1.bufr,0.50,96 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,199 sqlitev7.db_import.create_temp-gts2.bufr,0.51,39 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,60 sqlitev7.db_import.create_temp-gts3.bufr,0.50,363 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,695 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1089 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,2480 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,429 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,454 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1200 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,2908 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1204 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,2883 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1166 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,2741 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1222 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,2963 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1228 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,3016 sqlitev7.db_query.station_coords,0.50,5318 sqlitev7.db_query.stationdata_coords,0.50,4215 sqlitev7.db_query.data_coords,0.50,3338 sqlitev7.db_query.data_dt,0.50,3110 sqlitev7.db_query.data_varcode,0.55,8 dballe-7.21/bench/20160325104919_sqlitev7_d23f30d48a4dc472adc1e78c76dfbfab8d9ec657.csv0000644000175000017500000000466113022043102022740 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6911 sqlitev7.db_query_parse.station_coords,0.50,5561 sqlitev7.db_query_parse.station_ident,0.50,6392 sqlitev7.db_query_parse.station_repmemo,0.50,6255 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6437 sqlitev7.db_query_parse.stationdata_coords,0.50,5571 sqlitev7.db_query_parse.stationdata_ident,0.50,6397 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6252 sqlitev7.db_query_parse.data_ana_id,0.50,7014 sqlitev7.db_query_parse.data_coords,0.50,5575 sqlitev7.db_query_parse.data_ident,0.50,6307 sqlitev7.db_query_parse.data_repmemo,0.50,6115 sqlitev7.db_query_parse.data_datetime,0.50,7126 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.51,59 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,68 sqlitev7.db_import.create_synop-evapo.bufr,0.50,103 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,85 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,42 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,38 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,708 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,1260 sqlitev7.db_import.create_synop-longname.bufr,0.50,203 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,239 sqlitev7.db_import.create_temp-gts1.bufr,0.50,100 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,198 sqlitev7.db_import.create_temp-gts2.bufr,0.51,41 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.51,63 sqlitev7.db_import.create_temp-gts3.bufr,0.50,393 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,683 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1215 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,2454 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,613 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,441 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1370 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,2871 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1360 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,2869 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1326 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,2723 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1388 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,2909 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1410 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,3016 sqlitev7.db_query.station_coords,0.50,5391 sqlitev7.db_query.stationdata_coords,0.50,4197 sqlitev7.db_query.data_coords,0.50,3361 sqlitev7.db_query.data_dt,0.50,3090 sqlitev7.db_query.data_varcode,0.54,8 dballe-7.21/bench/20160324095503_sqlitev7_0335bf8bc418f05c982299b095bff72158dc38cf.csv0000644000175000017500000000467513022043102022310 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6949 sqlitev7.db_query_parse.station_coords,0.50,5603 sqlitev7.db_query_parse.station_ident,0.50,6299 sqlitev7.db_query_parse.station_repmemo,0.50,6197 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6979 sqlitev7.db_query_parse.stationdata_coords,0.50,5420 sqlitev7.db_query_parse.stationdata_ident,0.50,6347 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6212 sqlitev7.db_query_parse.data_ana_id,0.50,6997 sqlitev7.db_query_parse.data_coords,0.50,5497 sqlitev7.db_query_parse.data_ident,0.50,6339 sqlitev7.db_query_parse.data_repmemo,0.50,6279 sqlitev7.db_query_parse.data_datetime,0.50,7326 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,50 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,612 sqlitev7.db_import.create_synop-evapo.bufr,0.50,97 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,797 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,40 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,404 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,678 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5697 sqlitev7.db_import.create_synop-longname.bufr,0.50,188 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1971 sqlitev7.db_import.create_temp-gts1.bufr,0.50,105 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,950 sqlitev7.db_import.create_temp-gts2.bufr,0.51,42 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,323 sqlitev7.db_import.create_temp-gts3.bufr,0.50,398 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,3111 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1113 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,12254 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,456 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3606 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1218 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,15157 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1214 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,15333 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1191 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,14583 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1226 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,14954 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1210 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,15846 sqlitev7.db_query.station_coords,0.50,5408 sqlitev7.db_query.stationdata_coords,0.50,4272 sqlitev7.db_query.data_coords,0.50,3403 sqlitev7.db_query.data_dt,0.50,3177 sqlitev7.db_query.data_varcode,0.54,8 dballe-7.21/bench/20160622102712_postgresqlv7_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000512513022043102023215 00000000000000postgresqlv7.db_query_parse.station_ana_id,0.50,2446 postgresqlv7.db_query_parse.station_coords,0.50,1884 postgresqlv7.db_query_parse.station_ident,0.50,2237 postgresqlv7.db_query_parse.station_repmemo,0.50,2362 postgresqlv7.db_query_parse.stationdata_ana_id,0.50,2394 postgresqlv7.db_query_parse.stationdata_coords,0.50,1940 postgresqlv7.db_query_parse.stationdata_ident,0.50,2098 postgresqlv7.db_query_parse.stationdata_repmemo,0.50,2262 postgresqlv7.db_query_parse.data_ana_id,0.50,2233 postgresqlv7.db_query_parse.data_coords,0.50,1934 postgresqlv7.db_query_parse.data_ident,0.50,2475 postgresqlv7.db_query_parse.data_repmemo,0.50,2190 postgresqlv7.db_query_parse.data_datetime,0.50,2928 postgresqlv7.db_import.create_synop-cloudbelow.bufr,0.53,6 postgresqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.50,33 postgresqlv7.db_import.create_synop-evapo.bufr,0.57,8 postgresqlv7.db_import.overwrite_synop-evapo.bufr,0.50,51 postgresqlv7.db_import.create_synop-groundtemp.bufr,0.55,4 postgresqlv7.db_import.overwrite_synop-groundtemp.bufr,0.51,20 postgresqlv7.db_import.create_synop-gtscosmo.bufr,0.51,34 postgresqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,300 postgresqlv7.db_import.create_synop-longname.bufr,0.52,16 postgresqlv7.db_import.overwrite_synop-longname.bufr,0.50,147 postgresqlv7.db_import.create_temp-gts1.bufr,0.56,9 postgresqlv7.db_import.overwrite_temp-gts1.bufr,0.50,78 postgresqlv7.db_import.create_temp-gts2.bufr,0.58,3 postgresqlv7.db_import.overwrite_temp-gts2.bufr,0.52,16 postgresqlv7.db_import.create_temp-gts3.bufr,0.51,22 postgresqlv7.db_import.overwrite_temp-gts3.bufr,0.50,174 postgresqlv7.db_import.create_temp-gtscosmo.bufr,0.50,46 postgresqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,810 postgresqlv7.db_import.create_temp-timesig18.bufr,0.52,26 postgresqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,259 postgresqlv7.db_import.create_gts-acars1.bufr,0.50,52 postgresqlv7.db_import.overwrite_gts-acars1.bufr,0.50,1010 postgresqlv7.db_import.create_gts-acars2.bufr,0.50,52 postgresqlv7.db_import.overwrite_gts-acars2.bufr,0.50,1124 postgresqlv7.db_import.create_gts-acars-us1.bufr,0.51,50 postgresqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,1098 postgresqlv7.db_import.create_gts-amdar1.bufr,0.51,51 postgresqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,1065 postgresqlv7.db_import.create_gts-amdar2.bufr,0.50,52 postgresqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,1247 postgresqlv7.db_query.station_coords,0.50,1874 postgresqlv7.db_query.stationdata_coords,0.50,1177 postgresqlv7.db_query.data_coords,0.50,655 postgresqlv7.db_query.data_dt,0.50,629 postgresqlv7.db_query.data_varcode,0.55,5 dballe-7.21/bench/20160322174314_sqlitev7_fa434f55f18713bf8d8ec1b4b37788f61a98e22e.csv0000644000175000017500000000467213022043102022366 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7406 sqlitev7.db_query_parse.station_coords,0.50,5596 sqlitev7.db_query_parse.station_ident,0.50,6605 sqlitev7.db_query_parse.station_repmemo,0.50,5475 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7256 sqlitev7.db_query_parse.stationdata_coords,0.50,5494 sqlitev7.db_query_parse.stationdata_ident,0.50,6517 sqlitev7.db_query_parse.stationdata_repmemo,0.50,5520 sqlitev7.db_query_parse.data_ana_id,0.50,7434 sqlitev7.db_query_parse.data_coords,0.50,5591 sqlitev7.db_query_parse.data_ident,0.50,6629 sqlitev7.db_query_parse.data_repmemo,0.50,5448 sqlitev7.db_query_parse.data_datetime,0.50,7605 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,42 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,244 sqlitev7.db_import.create_synop-evapo.bufr,0.50,70 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,291 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,30 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,155 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,748 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,4024 sqlitev7.db_import.create_synop-longname.bufr,0.50,152 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,852 sqlitev7.db_import.create_temp-gts1.bufr,0.50,91 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,603 sqlitev7.db_import.create_temp-gts2.bufr,0.51,37 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,206 sqlitev7.db_import.create_temp-gts3.bufr,0.50,373 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2087 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1303 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,8670 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,375 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,1826 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1580 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,11462 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1573 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,11492 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1519 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,10895 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1605 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,11737 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1650 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,12071 sqlitev7.db_query.station_coords,0.50,5524 sqlitev7.db_query.stationdata_coords,0.50,3974 sqlitev7.db_query.data_coords,0.50,3345 sqlitev7.db_query.data_dt,0.50,3089 sqlitev7.db_query.data_varcode,0.57,7 dballe-7.21/bench/20160322213408_sqlitev7_e59b5b7b0d9a39d0581cd1dddb14d30807fdc6a3.csv0000644000175000017500000000467213022043102022546 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7168 sqlitev7.db_query_parse.station_coords,0.50,5636 sqlitev7.db_query_parse.station_ident,0.50,6647 sqlitev7.db_query_parse.station_repmemo,0.50,5511 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7341 sqlitev7.db_query_parse.stationdata_coords,0.50,5713 sqlitev7.db_query_parse.stationdata_ident,0.50,6525 sqlitev7.db_query_parse.stationdata_repmemo,0.50,5471 sqlitev7.db_query_parse.data_ana_id,0.50,7328 sqlitev7.db_query_parse.data_coords,0.50,5730 sqlitev7.db_query_parse.data_ident,0.50,6686 sqlitev7.db_query_parse.data_repmemo,0.50,5555 sqlitev7.db_query_parse.data_datetime,0.50,7482 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.51,44 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,247 sqlitev7.db_import.create_synop-evapo.bufr,0.50,72 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,300 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,31 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,157 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,758 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,4123 sqlitev7.db_import.create_synop-longname.bufr,0.50,156 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,863 sqlitev7.db_import.create_temp-gts1.bufr,0.50,93 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,613 sqlitev7.db_import.create_temp-gts2.bufr,0.50,38 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,208 sqlitev7.db_import.create_temp-gts3.bufr,0.50,407 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2123 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1368 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,8644 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,384 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,1851 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1600 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,11190 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1601 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,11202 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1547 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,10399 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1639 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,11459 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1669 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,11748 sqlitev7.db_query.station_coords,0.50,5536 sqlitev7.db_query.stationdata_coords,0.50,3997 sqlitev7.db_query.data_coords,0.50,3355 sqlitev7.db_query.data_dt,0.50,3150 sqlitev7.db_query.data_varcode,0.56,7 dballe-7.21/bench/20160327205448_sqlitev7_757965dde1e126aface5083a11992c14d16b0cb7.csv0000644000175000017500000000467613022043102022346 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7079 sqlitev7.db_query_parse.station_coords,0.50,5583 sqlitev7.db_query_parse.station_ident,0.50,6308 sqlitev7.db_query_parse.station_repmemo,0.50,6233 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6905 sqlitev7.db_query_parse.stationdata_coords,0.50,5533 sqlitev7.db_query_parse.stationdata_ident,0.50,6332 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6273 sqlitev7.db_query_parse.data_ana_id,0.50,6985 sqlitev7.db_query_parse.data_coords,0.50,5526 sqlitev7.db_query_parse.data_ident,0.50,6322 sqlitev7.db_query_parse.data_repmemo,0.50,6246 sqlitev7.db_query_parse.data_datetime,0.50,7122 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,70 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,507 sqlitev7.db_import.create_synop-evapo.bufr,0.50,102 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,664 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,47 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,322 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,763 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5630 sqlitev7.db_import.create_synop-longname.bufr,0.50,244 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1713 sqlitev7.db_import.create_temp-gts1.bufr,0.50,100 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,833 sqlitev7.db_import.create_temp-gts2.bufr,0.51,41 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,263 sqlitev7.db_import.create_temp-gts3.bufr,0.50,393 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2977 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1225 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,12381 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,605 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3476 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1361 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,15106 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1359 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,15393 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1314 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,14371 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1364 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,15434 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1390 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,15572 sqlitev7.db_query.station_coords,0.50,5191 sqlitev7.db_query.stationdata_coords,0.50,4124 sqlitev7.db_query.data_coords,0.50,3306 sqlitev7.db_query.data_dt,0.50,3085 sqlitev7.db_query.data_varcode,0.55,8 dballe-7.21/bench/20160622102712_sqlite_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000453213022043102022037 00000000000000sqlite.db_query_parse.station_ana_id,0.50,7698 sqlite.db_query_parse.station_coords,0.50,5724 sqlite.db_query_parse.station_ident,0.50,6620 sqlite.db_query_parse.station_repmemo,0.50,5545 sqlite.db_query_parse.stationdata_ana_id,0.50,7237 sqlite.db_query_parse.stationdata_coords,0.50,5717 sqlite.db_query_parse.stationdata_ident,0.50,6727 sqlite.db_query_parse.stationdata_repmemo,0.50,5571 sqlite.db_query_parse.data_ana_id,0.50,7491 sqlite.db_query_parse.data_coords,0.50,5739 sqlite.db_query_parse.data_ident,0.50,6694 sqlite.db_query_parse.data_repmemo,0.50,5592 sqlite.db_query_parse.data_datetime,0.50,7852 sqlite.db_import.create_synop-cloudbelow.bufr,0.50,46 sqlite.db_import.overwrite_synop-cloudbelow.bufr,0.50,253 sqlite.db_import.create_synop-evapo.bufr,0.50,76 sqlite.db_import.overwrite_synop-evapo.bufr,0.50,314 sqlite.db_import.create_synop-groundtemp.bufr,0.50,32 sqlite.db_import.overwrite_synop-groundtemp.bufr,0.50,162 sqlite.db_import.create_synop-gtscosmo.bufr,0.50,770 sqlite.db_import.overwrite_synop-gtscosmo.bufr,0.50,4396 sqlite.db_import.create_synop-longname.bufr,0.50,163 sqlite.db_import.overwrite_synop-longname.bufr,0.50,897 sqlite.db_import.create_temp-gts1.bufr,0.50,99 sqlite.db_import.overwrite_temp-gts1.bufr,0.50,640 sqlite.db_import.create_temp-gts2.bufr,0.51,40 sqlite.db_import.overwrite_temp-gts2.bufr,0.50,216 sqlite.db_import.create_temp-gts3.bufr,0.50,413 sqlite.db_import.overwrite_temp-gts3.bufr,0.50,2228 sqlite.db_import.create_temp-gtscosmo.bufr,0.50,1349 sqlite.db_import.overwrite_temp-gtscosmo.bufr,0.50,9213 sqlite.db_import.create_temp-timesig18.bufr,0.50,391 sqlite.db_import.overwrite_temp-timesig18.bufr,0.50,1985 sqlite.db_import.create_gts-acars1.bufr,0.50,1563 sqlite.db_import.overwrite_gts-acars1.bufr,0.50,11794 sqlite.db_import.create_gts-acars2.bufr,0.50,1526 sqlite.db_import.overwrite_gts-acars2.bufr,0.50,11588 sqlite.db_import.create_gts-acars-us1.bufr,0.50,1481 sqlite.db_import.overwrite_gts-acars-us1.bufr,0.50,11183 sqlite.db_import.create_gts-amdar1.bufr,0.50,1583 sqlite.db_import.overwrite_gts-amdar1.bufr,0.50,11999 sqlite.db_import.create_gts-amdar2.bufr,0.50,1622 sqlite.db_import.overwrite_gts-amdar2.bufr,0.50,12311 sqlite.db_query.station_coords,0.50,5666 sqlite.db_query.stationdata_coords,0.50,4048 sqlite.db_query.data_coords,0.50,3407 sqlite.db_query.data_dt,0.50,3162 sqlite.db_query.data_varcode,0.54,7 dballe-7.21/bench/20160311181512_mem_c4354a67f0b12a3c10d0c401644af73fc7ead9ab.csv0000644000175000017500000000440413022043102021431 00000000000000mem.db_query_parse.station_ana_id,0.50,1086261 mem.db_query_parse.station_coords,0.50,920923 mem.db_query_parse.station_ident,0.50,881524 mem.db_query_parse.station_repmemo,0.50,909454 mem.db_query_parse.stationdata_ana_id,0.50,977354 mem.db_query_parse.stationdata_coords,0.50,923982 mem.db_query_parse.stationdata_ident,0.50,973718 mem.db_query_parse.stationdata_repmemo,0.50,894635 mem.db_query_parse.data_ana_id,0.50,1042541 mem.db_query_parse.data_coords,0.50,924274 mem.db_query_parse.data_ident,0.50,988849 mem.db_query_parse.data_repmemo,0.50,919262 mem.db_query_parse.data_datetime,0.50,1030541 mem.db_import.create_synop-cloudbelow.bufr,0.50,522 mem.db_import.overwrite_synop-cloudbelow.bufr,0.50,578 mem.db_import.create_synop-evapo.bufr,0.50,640 mem.db_import.overwrite_synop-evapo.bufr,0.50,633 mem.db_import.create_synop-groundtemp.bufr,0.50,276 mem.db_import.overwrite_synop-groundtemp.bufr,0.50,284 mem.db_import.create_synop-gtscosmo.bufr,0.50,15127 mem.db_import.overwrite_synop-gtscosmo.bufr,0.50,15037 mem.db_import.create_synop-longname.bufr,0.50,2140 mem.db_import.overwrite_synop-longname.bufr,0.50,2362 mem.db_import.create_temp-gts1.bufr,0.50,660 mem.db_import.overwrite_temp-gts1.bufr,0.50,835 mem.db_import.create_temp-gts2.bufr,0.50,226 mem.db_import.overwrite_temp-gts2.bufr,0.50,232 mem.db_import.create_temp-gts3.bufr,0.50,3982 mem.db_import.overwrite_temp-gts3.bufr,0.50,4575 mem.db_import.create_temp-gtscosmo.bufr,0.50,36500 mem.db_import.overwrite_temp-gtscosmo.bufr,0.50,43866 mem.db_import.create_temp-timesig18.bufr,0.50,8525 mem.db_import.overwrite_temp-timesig18.bufr,0.50,10277 mem.db_import.create_gts-acars1.bufr,0.50,47104 mem.db_import.overwrite_gts-acars1.bufr,0.50,57642 mem.db_import.create_gts-acars2.bufr,0.50,47662 mem.db_import.overwrite_gts-acars2.bufr,0.50,57020 mem.db_import.create_gts-acars-us1.bufr,0.50,36869 mem.db_import.overwrite_gts-acars-us1.bufr,0.50,44754 mem.db_import.create_gts-amdar1.bufr,0.50,55084 mem.db_import.overwrite_gts-amdar1.bufr,0.50,66720 mem.db_import.create_gts-amdar2.bufr,0.50,63093 mem.db_import.overwrite_gts-amdar2.bufr,0.50,77182 mem.db_query.station_coords,0.50,643534 mem.db_query.stationdata_coords,0.50,884894 mem.db_query.data_coords,0.50,818525 mem.db_query.data_dt,0.50,767524 mem.db_query.data_varcode,0.50,38 dballe-7.21/bench/20160323091550_sqlitev7_75515371953e731641c686c301da6aba00724a3e.csv0000644000175000017500000000467213022043102021741 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7173 sqlitev7.db_query_parse.station_coords,0.50,5553 sqlitev7.db_query_parse.station_ident,0.50,6065 sqlitev7.db_query_parse.station_repmemo,0.50,5316 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7013 sqlitev7.db_query_parse.stationdata_coords,0.50,5186 sqlitev7.db_query_parse.stationdata_ident,0.50,6411 sqlitev7.db_query_parse.stationdata_repmemo,0.50,5413 sqlitev7.db_query_parse.data_ana_id,0.50,7228 sqlitev7.db_query_parse.data_coords,0.50,5578 sqlitev7.db_query_parse.data_ident,0.50,6426 sqlitev7.db_query_parse.data_repmemo,0.50,5238 sqlitev7.db_query_parse.data_datetime,0.50,7339 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,41 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,230 sqlitev7.db_import.create_synop-evapo.bufr,0.50,70 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,300 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,30 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,152 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,736 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,4057 sqlitev7.db_import.create_synop-longname.bufr,0.50,151 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,854 sqlitev7.db_import.create_temp-gts1.bufr,0.50,92 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,641 sqlitev7.db_import.create_temp-gts2.bufr,0.50,37 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,214 sqlitev7.db_import.create_temp-gts3.bufr,0.50,399 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2171 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1344 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,8978 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,378 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,1848 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1587 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,11448 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1592 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,11440 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1526 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,10901 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1621 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,11154 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1630 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,11689 sqlitev7.db_query.station_coords,0.50,5484 sqlitev7.db_query.stationdata_coords,0.50,3954 sqlitev7.db_query.data_coords,0.50,3305 sqlitev7.db_query.data_dt,0.50,3103 sqlitev7.db_query.data_varcode,0.57,7 dballe-7.21/bench/20160311184535_sqlite_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000453213022043102022017 00000000000000sqlite.db_query_parse.station_ana_id,0.50,6979 sqlite.db_query_parse.station_coords,0.50,5665 sqlite.db_query_parse.station_ident,0.50,6542 sqlite.db_query_parse.station_repmemo,0.50,5443 sqlite.db_query_parse.stationdata_ana_id,0.50,7111 sqlite.db_query_parse.stationdata_coords,0.50,5582 sqlite.db_query_parse.stationdata_ident,0.50,6560 sqlite.db_query_parse.stationdata_repmemo,0.50,5506 sqlite.db_query_parse.data_ana_id,0.50,7153 sqlite.db_query_parse.data_coords,0.50,5602 sqlite.db_query_parse.data_ident,0.50,6544 sqlite.db_query_parse.data_repmemo,0.50,5433 sqlite.db_query_parse.data_datetime,0.50,7328 sqlite.db_import.create_synop-cloudbelow.bufr,0.51,42 sqlite.db_import.overwrite_synop-cloudbelow.bufr,0.50,245 sqlite.db_import.create_synop-evapo.bufr,0.50,69 sqlite.db_import.overwrite_synop-evapo.bufr,0.50,303 sqlite.db_import.create_synop-groundtemp.bufr,0.52,30 sqlite.db_import.overwrite_synop-groundtemp.bufr,0.50,158 sqlite.db_import.create_synop-gtscosmo.bufr,0.50,736 sqlite.db_import.overwrite_synop-gtscosmo.bufr,0.50,4105 sqlite.db_import.create_synop-longname.bufr,0.50,149 sqlite.db_import.overwrite_synop-longname.bufr,0.50,869 sqlite.db_import.create_temp-gts1.bufr,0.50,88 sqlite.db_import.overwrite_temp-gts1.bufr,0.50,611 sqlite.db_import.create_temp-gts2.bufr,0.51,36 sqlite.db_import.overwrite_temp-gts2.bufr,0.50,208 sqlite.db_import.create_temp-gts3.bufr,0.50,388 sqlite.db_import.overwrite_temp-gts3.bufr,0.50,2163 sqlite.db_import.create_temp-gtscosmo.bufr,0.50,1345 sqlite.db_import.overwrite_temp-gtscosmo.bufr,0.50,8859 sqlite.db_import.create_temp-timesig18.bufr,0.50,367 sqlite.db_import.overwrite_temp-timesig18.bufr,0.50,1906 sqlite.db_import.create_gts-acars1.bufr,0.50,1558 sqlite.db_import.overwrite_gts-acars1.bufr,0.50,11385 sqlite.db_import.create_gts-acars2.bufr,0.50,1559 sqlite.db_import.overwrite_gts-acars2.bufr,0.50,11433 sqlite.db_import.create_gts-acars-us1.bufr,0.50,1496 sqlite.db_import.overwrite_gts-acars-us1.bufr,0.50,10929 sqlite.db_import.create_gts-amdar1.bufr,0.50,1594 sqlite.db_import.overwrite_gts-amdar1.bufr,0.50,11656 sqlite.db_import.create_gts-amdar2.bufr,0.50,1604 sqlite.db_import.overwrite_gts-amdar2.bufr,0.50,11957 sqlite.db_query.station_coords,0.50,5606 sqlite.db_query.stationdata_coords,0.50,4015 sqlite.db_query.data_coords,0.50,3369 sqlite.db_query.data_dt,0.50,3077 sqlite.db_query.data_varcode,0.57,7 dballe-7.21/bench/20160622102712_sqlitev7_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000471013022043102022312 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,13730 sqlitev7.db_query_parse.station_coords,0.50,9821 sqlitev7.db_query_parse.station_ident,0.50,12363 sqlitev7.db_query_parse.station_repmemo,0.50,12157 sqlitev7.db_query_parse.stationdata_ana_id,0.50,14221 sqlitev7.db_query_parse.stationdata_coords,0.50,9854 sqlitev7.db_query_parse.stationdata_ident,0.50,12432 sqlitev7.db_query_parse.stationdata_repmemo,0.50,11666 sqlitev7.db_query_parse.data_ana_id,0.50,14033 sqlitev7.db_query_parse.data_coords,0.50,9925 sqlitev7.db_query_parse.data_ident,0.50,12588 sqlitev7.db_query_parse.data_repmemo,0.50,12019 sqlitev7.db_query_parse.data_datetime,0.50,15445 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,92 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,519 sqlitev7.db_import.create_synop-evapo.bufr,0.50,120 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,666 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,56 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,321 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,950 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5435 sqlitev7.db_import.create_synop-longname.bufr,0.50,311 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1735 sqlitev7.db_import.create_temp-gts1.bufr,0.50,115 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,807 sqlitev7.db_import.create_temp-gts2.bufr,0.51,46 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,255 sqlitev7.db_import.create_temp-gts3.bufr,0.50,463 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2836 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1660 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,11917 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,722 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3533 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1922 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,15137 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1949 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,14691 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1864 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,14195 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1983 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,15269 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1991 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,15835 sqlitev7.db_query.station_coords,0.50,9302 sqlitev7.db_query.stationdata_coords,0.50,5852 sqlitev7.db_query.data_coords,0.50,4143 sqlitev7.db_query.data_dt,0.50,3873 sqlitev7.db_query.data_varcode,0.53,8 dballe-7.21/bench/20160322173923_postgresql_fa434f55f18713bf8d8ec1b4b37788f61a98e22e.csv0000644000175000017500000000475413022043102023021 00000000000000postgresql.db_query_parse.station_ana_id,0.50,1916 postgresql.db_query_parse.station_coords,0.50,1569 postgresql.db_query_parse.station_ident,0.50,1706 postgresql.db_query_parse.station_repmemo,0.50,1133 postgresql.db_query_parse.stationdata_ana_id,0.50,2048 postgresql.db_query_parse.stationdata_coords,0.50,1599 postgresql.db_query_parse.stationdata_ident,0.50,1771 postgresql.db_query_parse.stationdata_repmemo,0.50,1113 postgresql.db_query_parse.data_ana_id,0.50,1986 postgresql.db_query_parse.data_coords,0.50,1580 postgresql.db_query_parse.data_ident,0.50,1792 postgresql.db_query_parse.data_repmemo,0.50,1089 postgresql.db_query_parse.data_datetime,0.50,2031 postgresql.db_import.create_synop-cloudbelow.bufr,0.62,4 postgresql.db_import.overwrite_synop-cloudbelow.bufr,0.51,12 postgresql.db_import.create_synop-evapo.bufr,0.54,5 postgresql.db_import.overwrite_synop-evapo.bufr,0.52,17 postgresql.db_import.create_synop-groundtemp.bufr,0.64,3 postgresql.db_import.overwrite_synop-groundtemp.bufr,0.54,8 postgresql.db_import.create_synop-gtscosmo.bufr,0.50,26 postgresql.db_import.overwrite_synop-gtscosmo.bufr,0.50,241 postgresql.db_import.create_synop-longname.bufr,0.55,10 postgresql.db_import.overwrite_synop-longname.bufr,0.51,46 postgresql.db_import.create_temp-gts1.bufr,0.52,8 postgresql.db_import.overwrite_temp-gts1.bufr,0.50,86 postgresql.db_import.create_temp-gts2.bufr,0.51,3 postgresql.db_import.overwrite_temp-gts2.bufr,0.51,15 postgresql.db_import.create_temp-gts3.bufr,0.51,18 postgresql.db_import.overwrite_temp-gts3.bufr,0.50,148 postgresql.db_import.create_temp-gtscosmo.bufr,0.50,40 postgresql.db_import.overwrite_temp-gtscosmo.bufr,0.50,562 postgresql.db_import.create_temp-timesig18.bufr,0.52,17 postgresql.db_import.overwrite_temp-timesig18.bufr,0.50,69 postgresql.db_import.create_gts-acars1.bufr,0.51,43 postgresql.db_import.overwrite_gts-acars1.bufr,0.50,565 postgresql.db_import.create_gts-acars2.bufr,0.51,43 postgresql.db_import.overwrite_gts-acars2.bufr,0.50,503 postgresql.db_import.create_gts-acars-us1.bufr,0.51,42 postgresql.db_import.overwrite_gts-acars-us1.bufr,0.50,494 postgresql.db_import.create_gts-amdar1.bufr,0.50,42 postgresql.db_import.overwrite_gts-amdar1.bufr,0.50,512 postgresql.db_import.create_gts-amdar2.bufr,0.51,44 postgresql.db_import.overwrite_gts-amdar2.bufr,0.50,571 postgresql.db_query.station_coords,0.50,1552 postgresql.db_query.stationdata_coords,0.50,840 postgresql.db_query.data_coords,0.50,569 postgresql.db_query.data_dt,0.50,504 postgresql.db_query.data_varcode,0.51,4 dballe-7.21/bench/20160401135225_sqlitev7_f9c68eb6f9d69b5c6fddcaaf4162b801f67a85b3.csv0000644000175000017500000000467613022043102022665 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6891 sqlitev7.db_query_parse.station_coords,0.50,5451 sqlitev7.db_query_parse.station_ident,0.50,6282 sqlitev7.db_query_parse.station_repmemo,0.50,6189 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6779 sqlitev7.db_query_parse.stationdata_coords,0.50,5451 sqlitev7.db_query_parse.stationdata_ident,0.50,5794 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6117 sqlitev7.db_query_parse.data_ana_id,0.50,6882 sqlitev7.db_query_parse.data_coords,0.50,5475 sqlitev7.db_query_parse.data_ident,0.50,6234 sqlitev7.db_query_parse.data_repmemo,0.50,6144 sqlitev7.db_query_parse.data_datetime,0.50,7020 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,82 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,515 sqlitev7.db_import.create_synop-evapo.bufr,0.50,108 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,689 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,50 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,330 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,959 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5628 sqlitev7.db_import.create_synop-longname.bufr,0.50,287 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1715 sqlitev7.db_import.create_temp-gts1.bufr,0.50,103 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,821 sqlitev7.db_import.create_temp-gts2.bufr,0.50,41 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,261 sqlitev7.db_import.create_temp-gts3.bufr,0.50,433 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2952 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1679 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,12159 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,714 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3444 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1930 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,15189 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1955 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,14874 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1850 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,14230 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1931 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,15550 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,2002 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,15875 sqlitev7.db_query.station_coords,0.50,5229 sqlitev7.db_query.stationdata_coords,0.50,4161 sqlitev7.db_query.data_coords,0.50,3294 sqlitev7.db_query.data_dt,0.50,3062 sqlitev7.db_query.data_varcode,0.55,8 dballe-7.21/bench/20160622104824_sqlitev7_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000471313022043102022323 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,14639 sqlitev7.db_query_parse.station_coords,0.50,10102 sqlitev7.db_query_parse.station_ident,0.50,12878 sqlitev7.db_query_parse.station_repmemo,0.50,12498 sqlitev7.db_query_parse.stationdata_ana_id,0.50,14579 sqlitev7.db_query_parse.stationdata_coords,0.50,10102 sqlitev7.db_query_parse.stationdata_ident,0.50,12836 sqlitev7.db_query_parse.stationdata_repmemo,0.50,12357 sqlitev7.db_query_parse.data_ana_id,0.50,14653 sqlitev7.db_query_parse.data_coords,0.50,10061 sqlitev7.db_query_parse.data_ident,0.50,12568 sqlitev7.db_query_parse.data_repmemo,0.50,12347 sqlitev7.db_query_parse.data_datetime,0.50,15789 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,92 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,526 sqlitev7.db_import.create_synop-evapo.bufr,0.50,120 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,701 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,56 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,340 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,961 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5710 sqlitev7.db_import.create_synop-longname.bufr,0.50,309 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1761 sqlitev7.db_import.create_temp-gts1.bufr,0.50,114 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,846 sqlitev7.db_import.create_temp-gts2.bufr,0.50,45 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,275 sqlitev7.db_import.create_temp-gts3.bufr,0.50,460 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,3002 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1642 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,12161 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,722 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3519 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1900 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,15114 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1934 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,15042 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1855 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,14216 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1969 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,14184 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1956 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,15809 sqlitev7.db_query.station_coords,0.50,9537 sqlitev7.db_query.stationdata_coords,0.50,5848 sqlitev7.db_query.data_coords,0.50,4091 sqlitev7.db_query.data_dt,0.50,3816 sqlitev7.db_query.data_varcode,0.54,8 dballe-7.21/bench/20160311184535_odbc_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000002513022043102021416 00000000000000Failed with result 0 dballe-7.21/bench/20160322173923_sqlite_fa434f55f18713bf8d8ec1b4b37788f61a98e22e.csv0000644000175000017500000000453213022043102022111 00000000000000sqlite.db_query_parse.station_ana_id,0.50,7151 sqlite.db_query_parse.station_coords,0.50,5665 sqlite.db_query_parse.station_ident,0.50,6501 sqlite.db_query_parse.station_repmemo,0.50,5548 sqlite.db_query_parse.stationdata_ana_id,0.50,7230 sqlite.db_query_parse.stationdata_coords,0.50,5592 sqlite.db_query_parse.stationdata_ident,0.50,6582 sqlite.db_query_parse.stationdata_repmemo,0.50,5487 sqlite.db_query_parse.data_ana_id,0.50,7226 sqlite.db_query_parse.data_coords,0.50,5635 sqlite.db_query_parse.data_ident,0.50,6584 sqlite.db_query_parse.data_repmemo,0.50,5481 sqlite.db_query_parse.data_datetime,0.50,7544 sqlite.db_import.create_synop-cloudbelow.bufr,0.50,43 sqlite.db_import.overwrite_synop-cloudbelow.bufr,0.50,238 sqlite.db_import.create_synop-evapo.bufr,0.50,72 sqlite.db_import.overwrite_synop-evapo.bufr,0.50,293 sqlite.db_import.create_synop-groundtemp.bufr,0.51,31 sqlite.db_import.overwrite_synop-groundtemp.bufr,0.50,152 sqlite.db_import.create_synop-gtscosmo.bufr,0.50,758 sqlite.db_import.overwrite_synop-gtscosmo.bufr,0.50,3969 sqlite.db_import.create_synop-longname.bufr,0.50,152 sqlite.db_import.overwrite_synop-longname.bufr,0.50,841 sqlite.db_import.create_temp-gts1.bufr,0.50,92 sqlite.db_import.overwrite_temp-gts1.bufr,0.50,613 sqlite.db_import.create_temp-gts2.bufr,0.51,38 sqlite.db_import.overwrite_temp-gts2.bufr,0.50,205 sqlite.db_import.create_temp-gts3.bufr,0.50,403 sqlite.db_import.overwrite_temp-gts3.bufr,0.50,2074 sqlite.db_import.create_temp-gtscosmo.bufr,0.50,1388 sqlite.db_import.overwrite_temp-gtscosmo.bufr,0.50,8739 sqlite.db_import.create_temp-timesig18.bufr,0.50,382 sqlite.db_import.overwrite_temp-timesig18.bufr,0.50,1817 sqlite.db_import.create_gts-acars1.bufr,0.50,1593 sqlite.db_import.overwrite_gts-acars1.bufr,0.50,11240 sqlite.db_import.create_gts-acars2.bufr,0.50,1606 sqlite.db_import.overwrite_gts-acars2.bufr,0.50,11223 sqlite.db_import.create_gts-acars-us1.bufr,0.50,1538 sqlite.db_import.overwrite_gts-acars-us1.bufr,0.50,10715 sqlite.db_import.create_gts-amdar1.bufr,0.50,1633 sqlite.db_import.overwrite_gts-amdar1.bufr,0.50,11411 sqlite.db_import.create_gts-amdar2.bufr,0.50,1664 sqlite.db_import.overwrite_gts-amdar2.bufr,0.50,11701 sqlite.db_query.station_coords,0.50,5451 sqlite.db_query.stationdata_coords,0.50,4007 sqlite.db_query.data_coords,0.50,3281 sqlite.db_query.data_dt,0.50,3117 sqlite.db_query.data_varcode,0.58,7 dballe-7.21/bench/20160311181951_odbc_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000002513022043102021415 00000000000000Failed with result 0 dballe-7.21/bench/20160404212208_sqlite_7e9a0f3232841235f05123ed68e4a2d98592d5ca.csv0000644000175000017500000000452313022043102021634 00000000000000sqlite.db_query_parse.station_ana_id,0.50,7203 sqlite.db_query_parse.station_coords,0.50,5445 sqlite.db_query_parse.station_ident,0.50,6556 sqlite.db_query_parse.station_repmemo,0.50,5451 sqlite.db_query_parse.stationdata_ana_id,0.50,7346 sqlite.db_query_parse.stationdata_coords,0.50,5676 sqlite.db_query_parse.stationdata_ident,0.50,6723 sqlite.db_query_parse.stationdata_repmemo,0.50,5572 sqlite.db_query_parse.data_ana_id,0.50,7335 sqlite.db_query_parse.data_coords,0.50,5509 sqlite.db_query_parse.data_ident,0.50,6657 sqlite.db_query_parse.data_repmemo,0.50,5551 sqlite.db_query_parse.data_datetime,0.50,7704 sqlite.db_import.create_synop-cloudbelow.bufr,0.51,42 sqlite.db_import.overwrite_synop-cloudbelow.bufr,0.50,248 sqlite.db_import.create_synop-evapo.bufr,0.50,71 sqlite.db_import.overwrite_synop-evapo.bufr,0.50,296 sqlite.db_import.create_synop-groundtemp.bufr,0.51,30 sqlite.db_import.overwrite_synop-groundtemp.bufr,0.50,146 sqlite.db_import.create_synop-gtscosmo.bufr,0.50,748 sqlite.db_import.overwrite_synop-gtscosmo.bufr,0.50,4122 sqlite.db_import.create_synop-longname.bufr,0.50,153 sqlite.db_import.overwrite_synop-longname.bufr,0.50,857 sqlite.db_import.create_temp-gts1.bufr,0.50,91 sqlite.db_import.overwrite_temp-gts1.bufr,0.50,644 sqlite.db_import.create_temp-gts2.bufr,0.50,36 sqlite.db_import.overwrite_temp-gts2.bufr,0.50,209 sqlite.db_import.create_temp-gts3.bufr,0.50,392 sqlite.db_import.overwrite_temp-gts3.bufr,0.50,2161 sqlite.db_import.create_temp-gtscosmo.bufr,0.50,1370 sqlite.db_import.overwrite_temp-gtscosmo.bufr,0.50,8748 sqlite.db_import.create_temp-timesig18.bufr,0.50,295 sqlite.db_import.overwrite_temp-timesig18.bufr,0.50,1211 sqlite.db_import.create_gts-acars1.bufr,0.50,1273 sqlite.db_import.overwrite_gts-acars1.bufr,0.50,6513 sqlite.db_import.create_gts-acars2.bufr,0.50,910 sqlite.db_import.overwrite_gts-acars2.bufr,0.50,8571 sqlite.db_import.create_gts-acars-us1.bufr,0.50,1064 sqlite.db_import.overwrite_gts-acars-us1.bufr,0.50,6633 sqlite.db_import.create_gts-amdar1.bufr,0.50,1132 sqlite.db_import.overwrite_gts-amdar1.bufr,0.50,6102 sqlite.db_import.create_gts-amdar2.bufr,0.50,985 sqlite.db_import.overwrite_gts-amdar2.bufr,0.50,8950 sqlite.db_query.station_coords,0.50,4269 sqlite.db_query.stationdata_coords,0.50,3458 sqlite.db_query.data_coords,0.50,3110 sqlite.db_query.data_dt,0.50,3059 sqlite.db_query.data_varcode,0.55,6 dballe-7.21/bench/20160311181445_sqlite_c4354a67f0b12a3c10d0c401644af73fc7ead9ab.csv0000644000175000017500000000453213022043102022163 00000000000000sqlite.db_query_parse.station_ana_id,0.50,7281 sqlite.db_query_parse.station_coords,0.50,5677 sqlite.db_query_parse.station_ident,0.50,6742 sqlite.db_query_parse.station_repmemo,0.50,5575 sqlite.db_query_parse.stationdata_ana_id,0.50,7381 sqlite.db_query_parse.stationdata_coords,0.50,5722 sqlite.db_query_parse.stationdata_ident,0.50,6575 sqlite.db_query_parse.stationdata_repmemo,0.50,5553 sqlite.db_query_parse.data_ana_id,0.50,7279 sqlite.db_query_parse.data_coords,0.50,5612 sqlite.db_query_parse.data_ident,0.50,6673 sqlite.db_query_parse.data_repmemo,0.50,5492 sqlite.db_query_parse.data_datetime,0.50,7461 sqlite.db_import.create_synop-cloudbelow.bufr,0.50,37 sqlite.db_import.overwrite_synop-cloudbelow.bufr,0.50,209 sqlite.db_import.create_synop-evapo.bufr,0.51,61 sqlite.db_import.overwrite_synop-evapo.bufr,0.50,269 sqlite.db_import.create_synop-groundtemp.bufr,0.51,27 sqlite.db_import.overwrite_synop-groundtemp.bufr,0.50,138 sqlite.db_import.create_synop-gtscosmo.bufr,0.50,684 sqlite.db_import.overwrite_synop-gtscosmo.bufr,0.50,4176 sqlite.db_import.create_synop-longname.bufr,0.50,133 sqlite.db_import.overwrite_synop-longname.bufr,0.50,742 sqlite.db_import.create_temp-gts1.bufr,0.50,86 sqlite.db_import.overwrite_temp-gts1.bufr,0.50,621 sqlite.db_import.create_temp-gts2.bufr,0.51,35 sqlite.db_import.overwrite_temp-gts2.bufr,0.50,202 sqlite.db_import.create_temp-gts3.bufr,0.50,370 sqlite.db_import.overwrite_temp-gts3.bufr,0.50,2133 sqlite.db_import.create_temp-gtscosmo.bufr,0.50,1244 sqlite.db_import.overwrite_temp-gtscosmo.bufr,0.50,8987 sqlite.db_import.create_temp-timesig18.bufr,0.50,304 sqlite.db_import.overwrite_temp-timesig18.bufr,0.50,1398 sqlite.db_import.create_gts-acars1.bufr,0.50,1413 sqlite.db_import.overwrite_gts-acars1.bufr,0.50,11495 sqlite.db_import.create_gts-acars2.bufr,0.50,1388 sqlite.db_import.overwrite_gts-acars2.bufr,0.50,11525 sqlite.db_import.create_gts-acars-us1.bufr,0.50,1357 sqlite.db_import.overwrite_gts-acars-us1.bufr,0.50,10902 sqlite.db_import.create_gts-amdar1.bufr,0.50,1457 sqlite.db_import.overwrite_gts-amdar1.bufr,0.50,11918 sqlite.db_import.create_gts-amdar2.bufr,0.50,1479 sqlite.db_import.overwrite_gts-amdar2.bufr,0.50,12072 sqlite.db_query.station_coords,0.50,5500 sqlite.db_query.stationdata_coords,0.50,3937 sqlite.db_query.data_coords,0.50,3210 sqlite.db_query.data_dt,0.50,3119 sqlite.db_query.data_varcode,0.58,7 dballe-7.21/bench/20160322173923_mysql_fa434f55f18713bf8d8ec1b4b37788f61a98e22e.csv0000644000175000017500000000437213022043102021757 00000000000000mysql.db_query_parse.station_ana_id,0.50,2928 mysql.db_query_parse.station_coords,0.50,2417 mysql.db_query_parse.station_ident,0.50,2656 mysql.db_query_parse.station_repmemo,0.50,2589 mysql.db_query_parse.stationdata_ana_id,0.50,3356 mysql.db_query_parse.stationdata_coords,0.50,2104 mysql.db_query_parse.stationdata_ident,0.50,2691 mysql.db_query_parse.stationdata_repmemo,0.50,2320 mysql.db_query_parse.data_ana_id,0.50,3176 mysql.db_query_parse.data_coords,0.50,2204 mysql.db_query_parse.data_ident,0.50,2897 mysql.db_query_parse.data_repmemo,0.50,2584 mysql.db_query_parse.data_datetime,0.50,2956 mysql.db_import.create_synop-cloudbelow.bufr,0.59,3 mysql.db_import.overwrite_synop-cloudbelow.bufr,0.51,7 mysql.db_import.create_synop-evapo.bufr,0.62,4 mysql.db_import.overwrite_synop-evapo.bufr,0.52,9 mysql.db_import.create_synop-groundtemp.bufr,0.71,2 mysql.db_import.overwrite_synop-groundtemp.bufr,0.56,3 mysql.db_import.create_synop-gtscosmo.bufr,0.52,20 mysql.db_import.overwrite_synop-gtscosmo.bufr,0.50,134 mysql.db_import.create_synop-longname.bufr,0.56,9 mysql.db_import.overwrite_synop-longname.bufr,0.51,23 mysql.db_import.create_temp-gts1.bufr,0.52,4 mysql.db_import.overwrite_temp-gts1.bufr,0.50,42 mysql.db_import.create_temp-gts2.bufr,0.75,2 mysql.db_import.overwrite_temp-gts2.bufr,0.53,5 mysql.db_import.create_temp-gts3.bufr,0.52,14 mysql.db_import.overwrite_temp-gts3.bufr,0.50,94 mysql.db_import.create_temp-gtscosmo.bufr,0.51,27 mysql.db_import.overwrite_temp-gtscosmo.bufr,0.50,505 mysql.db_import.create_temp-timesig18.bufr,0.52,16 mysql.db_import.overwrite_temp-timesig18.bufr,0.50,75 mysql.db_import.create_gts-acars1.bufr,0.51,30 mysql.db_import.overwrite_gts-acars1.bufr,0.50,711 mysql.db_import.create_gts-acars2.bufr,0.51,29 mysql.db_import.overwrite_gts-acars2.bufr,0.50,595 mysql.db_import.create_gts-acars-us1.bufr,0.51,30 mysql.db_import.overwrite_gts-acars-us1.bufr,0.50,609 mysql.db_import.create_gts-amdar1.bufr,0.51,30 mysql.db_import.overwrite_gts-amdar1.bufr,0.50,618 mysql.db_import.create_gts-amdar2.bufr,0.50,29 mysql.db_import.overwrite_gts-amdar2.bufr,0.50,592 mysql.db_query.station_coords,0.50,1864 mysql.db_query.stationdata_coords,0.50,1121 mysql.db_query.data_coords,0.50,1229 mysql.db_query.data_dt,0.50,1052 mysql.db_query.data_varcode,0.62,4 dballe-7.21/bench/20160311184535_postgresql_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000475413022043102022727 00000000000000postgresql.db_query_parse.station_ana_id,0.50,1879 postgresql.db_query_parse.station_coords,0.50,1577 postgresql.db_query_parse.station_ident,0.50,1736 postgresql.db_query_parse.station_repmemo,0.50,1056 postgresql.db_query_parse.stationdata_ana_id,0.50,1947 postgresql.db_query_parse.stationdata_coords,0.50,1541 postgresql.db_query_parse.stationdata_ident,0.50,1693 postgresql.db_query_parse.stationdata_repmemo,0.50,1109 postgresql.db_query_parse.data_ana_id,0.50,1904 postgresql.db_query_parse.data_coords,0.50,1534 postgresql.db_query_parse.data_ident,0.50,1774 postgresql.db_query_parse.data_repmemo,0.50,1097 postgresql.db_query_parse.data_datetime,0.50,2114 postgresql.db_import.create_synop-cloudbelow.bufr,0.61,4 postgresql.db_import.overwrite_synop-cloudbelow.bufr,0.51,12 postgresql.db_import.create_synop-evapo.bufr,0.53,5 postgresql.db_import.overwrite_synop-evapo.bufr,0.50,15 postgresql.db_import.create_synop-groundtemp.bufr,0.65,3 postgresql.db_import.overwrite_synop-groundtemp.bufr,0.53,7 postgresql.db_import.create_synop-gtscosmo.bufr,0.50,27 postgresql.db_import.overwrite_synop-gtscosmo.bufr,0.50,239 postgresql.db_import.create_synop-longname.bufr,0.54,10 postgresql.db_import.overwrite_synop-longname.bufr,0.50,43 postgresql.db_import.create_temp-gts1.bufr,0.54,8 postgresql.db_import.overwrite_temp-gts1.bufr,0.50,85 postgresql.db_import.create_temp-gts2.bufr,0.51,3 postgresql.db_import.overwrite_temp-gts2.bufr,0.51,13 postgresql.db_import.create_temp-gts3.bufr,0.52,18 postgresql.db_import.overwrite_temp-gts3.bufr,0.50,165 postgresql.db_import.create_temp-gtscosmo.bufr,0.50,38 postgresql.db_import.overwrite_temp-gtscosmo.bufr,0.50,495 postgresql.db_import.create_temp-timesig18.bufr,0.50,17 postgresql.db_import.overwrite_temp-timesig18.bufr,0.50,69 postgresql.db_import.create_gts-acars1.bufr,0.50,43 postgresql.db_import.overwrite_gts-acars1.bufr,0.50,524 postgresql.db_import.create_gts-acars2.bufr,0.51,43 postgresql.db_import.overwrite_gts-acars2.bufr,0.50,530 postgresql.db_import.create_gts-acars-us1.bufr,0.50,41 postgresql.db_import.overwrite_gts-acars-us1.bufr,0.50,542 postgresql.db_import.create_gts-amdar1.bufr,0.50,42 postgresql.db_import.overwrite_gts-amdar1.bufr,0.50,532 postgresql.db_import.create_gts-amdar2.bufr,0.50,43 postgresql.db_import.overwrite_gts-amdar2.bufr,0.50,511 postgresql.db_query.station_coords,0.50,1507 postgresql.db_query.stationdata_coords,0.50,866 postgresql.db_query.data_coords,0.50,580 postgresql.db_query.data_dt,0.50,547 postgresql.db_query.data_varcode,0.59,5 dballe-7.21/bench/20160327205255_postgresqlv7_757965dde1e126aface5083a11992c14d16b0cb7.csv0000644000175000017500000000512413022043102023231 00000000000000postgresqlv7.db_query_parse.station_ana_id,0.50,1928 postgresqlv7.db_query_parse.station_coords,0.50,1495 postgresqlv7.db_query_parse.station_ident,0.50,1707 postgresqlv7.db_query_parse.station_repmemo,0.50,1676 postgresqlv7.db_query_parse.stationdata_ana_id,0.50,1847 postgresqlv7.db_query_parse.stationdata_coords,0.50,1385 postgresqlv7.db_query_parse.stationdata_ident,0.50,1639 postgresqlv7.db_query_parse.stationdata_repmemo,0.50,1719 postgresqlv7.db_query_parse.data_ana_id,0.50,1862 postgresqlv7.db_query_parse.data_coords,0.50,1454 postgresqlv7.db_query_parse.data_ident,0.50,1642 postgresqlv7.db_query_parse.data_repmemo,0.50,1672 postgresqlv7.db_query_parse.data_datetime,0.50,2069 postgresqlv7.db_import.create_synop-cloudbelow.bufr,0.51,5 postgresqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.51,59 postgresqlv7.db_import.create_synop-evapo.bufr,0.58,8 postgresqlv7.db_import.overwrite_synop-evapo.bufr,0.50,66 postgresqlv7.db_import.create_synop-groundtemp.bufr,0.54,4 postgresqlv7.db_import.overwrite_synop-groundtemp.bufr,0.50,38 postgresqlv7.db_import.create_synop-gtscosmo.bufr,0.51,27 postgresqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,298 postgresqlv7.db_import.create_synop-longname.bufr,0.53,13 postgresqlv7.db_import.overwrite_synop-longname.bufr,0.50,148 postgresqlv7.db_import.create_temp-gts1.bufr,0.57,9 postgresqlv7.db_import.overwrite_temp-gts1.bufr,0.50,85 postgresqlv7.db_import.create_temp-gts2.bufr,0.63,4 postgresqlv7.db_import.overwrite_temp-gts2.bufr,0.51,19 postgresqlv7.db_import.create_temp-gts3.bufr,0.51,18 postgresqlv7.db_import.overwrite_temp-gts3.bufr,0.50,199 postgresqlv7.db_import.create_temp-gtscosmo.bufr,0.50,40 postgresqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,808 postgresqlv7.db_import.create_temp-timesig18.bufr,0.52,23 postgresqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,257 postgresqlv7.db_import.create_gts-acars1.bufr,0.50,46 postgresqlv7.db_import.overwrite_gts-acars1.bufr,0.50,1322 postgresqlv7.db_import.create_gts-acars2.bufr,0.51,44 postgresqlv7.db_import.overwrite_gts-acars2.bufr,0.50,1331 postgresqlv7.db_import.create_gts-acars-us1.bufr,0.51,45 postgresqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,1291 postgresqlv7.db_import.create_gts-amdar1.bufr,0.51,45 postgresqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,1325 postgresqlv7.db_import.create_gts-amdar2.bufr,0.51,46 postgresqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,1424 postgresqlv7.db_query.station_coords,0.50,1432 postgresqlv7.db_query.stationdata_coords,0.50,977 postgresqlv7.db_query.data_coords,0.50,605 postgresqlv7.db_query.data_dt,0.50,568 postgresqlv7.db_query.data_varcode,0.60,6 dballe-7.21/bench/20160311181419_mysql_c4354a67f0b12a3c10d0c401644af73fc7ead9ab.csv0000644000175000017500000000437013022043102022030 00000000000000mysql.db_query_parse.station_ana_id,0.50,3191 mysql.db_query_parse.station_coords,0.50,2290 mysql.db_query_parse.station_ident,0.50,2649 mysql.db_query_parse.station_repmemo,0.50,2500 mysql.db_query_parse.stationdata_ana_id,0.50,3045 mysql.db_query_parse.stationdata_coords,0.50,2259 mysql.db_query_parse.stationdata_ident,0.50,2667 mysql.db_query_parse.stationdata_repmemo,0.50,2517 mysql.db_query_parse.data_ana_id,0.50,3236 mysql.db_query_parse.data_coords,0.50,2274 mysql.db_query_parse.data_ident,0.50,2727 mysql.db_query_parse.data_repmemo,0.50,2221 mysql.db_query_parse.data_datetime,0.50,3164 mysql.db_import.create_synop-cloudbelow.bufr,0.51,1 mysql.db_import.overwrite_synop-cloudbelow.bufr,0.50,1 mysql.db_import.create_synop-evapo.bufr,0.69,2 mysql.db_import.overwrite_synop-evapo.bufr,0.52,5 mysql.db_import.create_synop-groundtemp.bufr,0.66,1 mysql.db_import.overwrite_synop-groundtemp.bufr,0.68,1 mysql.db_import.create_synop-gtscosmo.bufr,0.51,14 mysql.db_import.overwrite_synop-gtscosmo.bufr,0.50,156 mysql.db_import.create_synop-longname.bufr,0.65,4 mysql.db_import.overwrite_synop-longname.bufr,0.51,25 mysql.db_import.create_temp-gts1.bufr,0.52,5 mysql.db_import.overwrite_temp-gts1.bufr,0.51,43 mysql.db_import.create_temp-gts2.bufr,0.70,2 mysql.db_import.overwrite_temp-gts2.bufr,0.51,3 mysql.db_import.create_temp-gts3.bufr,0.51,10 mysql.db_import.overwrite_temp-gts3.bufr,0.50,94 mysql.db_import.create_temp-gtscosmo.bufr,0.51,16 mysql.db_import.overwrite_temp-gtscosmo.bufr,0.50,498 mysql.db_import.create_temp-timesig18.bufr,0.52,4 mysql.db_import.overwrite_temp-timesig18.bufr,0.50,54 mysql.db_import.create_gts-acars1.bufr,0.50,17 mysql.db_import.overwrite_gts-acars1.bufr,0.50,661 mysql.db_import.create_gts-acars2.bufr,0.51,17 mysql.db_import.overwrite_gts-acars2.bufr,0.50,576 mysql.db_import.create_gts-acars-us1.bufr,0.51,17 mysql.db_import.overwrite_gts-acars-us1.bufr,0.50,598 mysql.db_import.create_gts-amdar1.bufr,0.52,18 mysql.db_import.overwrite_gts-amdar1.bufr,0.50,608 mysql.db_import.create_gts-amdar2.bufr,0.53,18 mysql.db_import.overwrite_gts-amdar2.bufr,0.50,658 mysql.db_query.station_coords,0.50,2055 mysql.db_query.stationdata_coords,0.50,1050 mysql.db_query.data_coords,0.50,1103 mysql.db_query.data_dt,0.50,975 mysql.db_query.data_varcode,0.55,4 dballe-7.21/bench/20160622102712_mysqlv7_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000453713022043102022165 00000000000000mysqlv7.db_query_parse.station_ana_id,0.50,5587 mysqlv7.db_query_parse.station_coords,0.50,3195 mysqlv7.db_query_parse.station_ident,0.50,4549 mysqlv7.db_query_parse.station_repmemo,0.50,3958 mysqlv7.db_query_parse.stationdata_ana_id,0.50,5438 mysqlv7.db_query_parse.stationdata_coords,0.50,3277 mysqlv7.db_query_parse.stationdata_ident,0.50,3772 mysqlv7.db_query_parse.stationdata_repmemo,0.50,4090 mysqlv7.db_query_parse.data_ana_id,0.50,4575 mysqlv7.db_query_parse.data_coords,0.50,3322 mysqlv7.db_query_parse.data_ident,0.50,4096 mysqlv7.db_query_parse.data_repmemo,0.50,4250 mysqlv7.db_query_parse.data_datetime,0.50,6007 mysqlv7.db_import.create_synop-cloudbelow.bufr,0.61,5 mysqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.51,25 mysqlv7.db_import.create_synop-evapo.bufr,0.58,6 mysqlv7.db_import.overwrite_synop-evapo.bufr,0.51,38 mysqlv7.db_import.create_synop-groundtemp.bufr,0.67,3 mysqlv7.db_import.overwrite_synop-groundtemp.bufr,0.51,15 mysqlv7.db_import.create_synop-gtscosmo.bufr,0.52,22 mysqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,193 mysqlv7.db_import.create_synop-longname.bufr,0.51,12 mysqlv7.db_import.overwrite_synop-longname.bufr,0.50,81 mysqlv7.db_import.create_temp-gts1.bufr,0.52,5 mysqlv7.db_import.overwrite_temp-gts1.bufr,0.50,53 mysqlv7.db_import.create_temp-gts2.bufr,0.63,2 mysqlv7.db_import.overwrite_temp-gts2.bufr,0.50,6 mysqlv7.db_import.create_temp-gts3.bufr,0.50,13 mysqlv7.db_import.overwrite_temp-gts3.bufr,0.50,94 mysqlv7.db_import.create_temp-gtscosmo.bufr,0.51,28 mysqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,486 mysqlv7.db_import.create_temp-timesig18.bufr,0.51,19 mysqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,137 mysqlv7.db_import.create_gts-acars1.bufr,0.51,30 mysqlv7.db_import.overwrite_gts-acars1.bufr,0.50,837 mysqlv7.db_import.create_gts-acars2.bufr,0.50,31 mysqlv7.db_import.overwrite_gts-acars2.bufr,0.50,857 mysqlv7.db_import.create_gts-acars-us1.bufr,0.51,31 mysqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,856 mysqlv7.db_import.create_gts-amdar1.bufr,0.51,31 mysqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,787 mysqlv7.db_import.create_gts-amdar2.bufr,0.51,34 mysqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,943 mysqlv7.db_query.station_coords,0.50,3321 mysqlv7.db_query.stationdata_coords,0.50,2033 mysqlv7.db_query.data_coords,0.50,1723 mysqlv7.db_query.data_dt,0.50,1484 mysqlv7.db_query.data_varcode,0.57,4 dballe-7.21/bench/20160323121851_sqlitev7_5a000eda51e9a741def19a185bbf5fbb8de1004d.csv0000644000175000017500000000467013022043102022610 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7249 sqlitev7.db_query_parse.station_coords,0.50,5660 sqlitev7.db_query_parse.station_ident,0.50,6627 sqlitev7.db_query_parse.station_repmemo,0.50,5536 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7211 sqlitev7.db_query_parse.stationdata_coords,0.50,5670 sqlitev7.db_query_parse.stationdata_ident,0.50,6623 sqlitev7.db_query_parse.stationdata_repmemo,0.50,5486 sqlitev7.db_query_parse.data_ana_id,0.50,7204 sqlitev7.db_query_parse.data_coords,0.50,5647 sqlitev7.db_query_parse.data_ident,0.50,6637 sqlitev7.db_query_parse.data_repmemo,0.50,5461 sqlitev7.db_query_parse.data_datetime,0.50,7459 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,43 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,252 sqlitev7.db_import.create_synop-evapo.bufr,0.50,72 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,306 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,31 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,160 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,763 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,4176 sqlitev7.db_import.create_synop-longname.bufr,0.50,155 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,879 sqlitev7.db_import.create_temp-gts1.bufr,0.50,93 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,639 sqlitev7.db_import.create_temp-gts2.bufr,0.51,38 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,214 sqlitev7.db_import.create_temp-gts3.bufr,0.50,403 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2181 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1333 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,8602 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,373 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,1855 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1584 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,11270 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1582 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,11275 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1425 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,6471 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1256 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,10177 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1163 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,9440 sqlitev7.db_query.station_coords,0.50,3870 sqlitev7.db_query.stationdata_coords,0.50,2737 sqlitev7.db_query.data_coords,0.50,2450 sqlitev7.db_query.data_dt,0.50,2365 sqlitev7.db_query.data_varcode,0.61,5 dballe-7.21/bench/20160323155114_sqlitev7_54b9ba2e600bab1c35ef59a54ff62eea348ba2cf.csv0000644000175000017500000000467513022043102022704 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7039 sqlitev7.db_query_parse.station_coords,0.50,5567 sqlitev7.db_query_parse.station_ident,0.50,6389 sqlitev7.db_query_parse.station_repmemo,0.50,6211 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7012 sqlitev7.db_query_parse.stationdata_coords,0.50,5547 sqlitev7.db_query_parse.stationdata_ident,0.50,6240 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6210 sqlitev7.db_query_parse.data_ana_id,0.50,7024 sqlitev7.db_query_parse.data_coords,0.50,5567 sqlitev7.db_query_parse.data_ident,0.50,6408 sqlitev7.db_query_parse.data_repmemo,0.50,6223 sqlitev7.db_query_parse.data_datetime,0.50,7152 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.51,55 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,586 sqlitev7.db_import.create_synop-evapo.bufr,0.50,96 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,758 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,40 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,395 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,838 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5614 sqlitev7.db_import.create_synop-longname.bufr,0.50,191 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1874 sqlitev7.db_import.create_temp-gts1.bufr,0.50,115 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,948 sqlitev7.db_import.create_temp-gts2.bufr,0.50,47 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,319 sqlitev7.db_import.create_temp-gts3.bufr,0.50,466 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,3114 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1550 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,12023 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,461 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3298 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1787 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,14656 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1782 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,14172 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1696 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,13719 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1791 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,14960 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1831 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,15084 sqlitev7.db_query.station_coords,0.50,5452 sqlitev7.db_query.stationdata_coords,0.50,3991 sqlitev7.db_query.data_coords,0.50,3311 sqlitev7.db_query.data_dt,0.50,3100 sqlitev7.db_query.data_varcode,0.51,7 dballe-7.21/bench/20160322173923_mem_fa434f55f18713bf8d8ec1b4b37788f61a98e22e.csv0000644000175000017500000000440413022043102021364 00000000000000mem.db_query_parse.station_ana_id,0.50,1065259 mem.db_query_parse.station_coords,0.50,898166 mem.db_query_parse.station_ident,0.50,987902 mem.db_query_parse.station_repmemo,0.50,919763 mem.db_query_parse.stationdata_ana_id,0.50,1034547 mem.db_query_parse.stationdata_coords,0.50,896504 mem.db_query_parse.stationdata_ident,0.50,998993 mem.db_query_parse.stationdata_repmemo,0.50,913238 mem.db_query_parse.data_ana_id,0.50,1027341 mem.db_query_parse.data_coords,0.50,914330 mem.db_query_parse.data_ident,0.50,991736 mem.db_query_parse.data_repmemo,0.50,907029 mem.db_query_parse.data_datetime,0.50,922304 mem.db_import.create_synop-cloudbelow.bufr,0.50,515 mem.db_import.overwrite_synop-cloudbelow.bufr,0.50,567 mem.db_import.create_synop-evapo.bufr,0.50,617 mem.db_import.overwrite_synop-evapo.bufr,0.50,609 mem.db_import.create_synop-groundtemp.bufr,0.50,268 mem.db_import.overwrite_synop-groundtemp.bufr,0.50,275 mem.db_import.create_synop-gtscosmo.bufr,0.50,14289 mem.db_import.overwrite_synop-gtscosmo.bufr,0.50,14632 mem.db_import.create_synop-longname.bufr,0.50,2090 mem.db_import.overwrite_synop-longname.bufr,0.50,2295 mem.db_import.create_temp-gts1.bufr,0.50,662 mem.db_import.overwrite_temp-gts1.bufr,0.50,816 mem.db_import.create_temp-gts2.bufr,0.50,221 mem.db_import.overwrite_temp-gts2.bufr,0.50,230 mem.db_import.create_temp-gts3.bufr,0.50,3882 mem.db_import.overwrite_temp-gts3.bufr,0.50,4532 mem.db_import.create_temp-gtscosmo.bufr,0.50,35092 mem.db_import.overwrite_temp-gtscosmo.bufr,0.50,41819 mem.db_import.create_temp-timesig18.bufr,0.50,8299 mem.db_import.overwrite_temp-timesig18.bufr,0.50,10100 mem.db_import.create_gts-acars1.bufr,0.50,45726 mem.db_import.overwrite_gts-acars1.bufr,0.50,55777 mem.db_import.create_gts-acars2.bufr,0.50,45450 mem.db_import.overwrite_gts-acars2.bufr,0.50,56029 mem.db_import.create_gts-acars-us1.bufr,0.50,35290 mem.db_import.overwrite_gts-acars-us1.bufr,0.50,43789 mem.db_import.create_gts-amdar1.bufr,0.50,52632 mem.db_import.overwrite_gts-amdar1.bufr,0.50,64944 mem.db_import.create_gts-amdar2.bufr,0.50,60767 mem.db_import.overwrite_gts-amdar2.bufr,0.50,76653 mem.db_query.station_coords,0.50,646475 mem.db_query.stationdata_coords,0.50,923539 mem.db_query.data_coords,0.50,857788 mem.db_query.data_dt,0.50,783020 mem.db_query.data_varcode,0.51,38 dballe-7.21/bench/20160622102712_mem_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000440513022043102021313 00000000000000mem.db_query_parse.station_ana_id,0.50,1081712 mem.db_query_parse.station_coords,0.50,915198 mem.db_query_parse.station_ident,0.50,973328 mem.db_query_parse.station_repmemo,0.50,919939 mem.db_query_parse.stationdata_ana_id,0.50,1051515 mem.db_query_parse.stationdata_coords,0.50,923766 mem.db_query_parse.stationdata_ident,0.50,983322 mem.db_query_parse.stationdata_repmemo,0.50,887645 mem.db_query_parse.data_ana_id,0.50,1062166 mem.db_query_parse.data_coords,0.50,935334 mem.db_query_parse.data_ident,0.50,983402 mem.db_query_parse.data_repmemo,0.50,895952 mem.db_query_parse.data_datetime,0.50,1019086 mem.db_import.create_synop-cloudbelow.bufr,0.50,507 mem.db_import.overwrite_synop-cloudbelow.bufr,0.50,571 mem.db_import.create_synop-evapo.bufr,0.50,627 mem.db_import.overwrite_synop-evapo.bufr,0.50,627 mem.db_import.create_synop-groundtemp.bufr,0.50,272 mem.db_import.overwrite_synop-groundtemp.bufr,0.50,280 mem.db_import.create_synop-gtscosmo.bufr,0.50,14434 mem.db_import.overwrite_synop-gtscosmo.bufr,0.50,14755 mem.db_import.create_synop-longname.bufr,0.50,2121 mem.db_import.overwrite_synop-longname.bufr,0.50,2319 mem.db_import.create_temp-gts1.bufr,0.50,647 mem.db_import.overwrite_temp-gts1.bufr,0.50,816 mem.db_import.create_temp-gts2.bufr,0.50,221 mem.db_import.overwrite_temp-gts2.bufr,0.50,228 mem.db_import.create_temp-gts3.bufr,0.50,3903 mem.db_import.overwrite_temp-gts3.bufr,0.50,4500 mem.db_import.create_temp-gtscosmo.bufr,0.50,35337 mem.db_import.overwrite_temp-gtscosmo.bufr,0.50,43145 mem.db_import.create_temp-timesig18.bufr,0.50,8466 mem.db_import.overwrite_temp-timesig18.bufr,0.50,10190 mem.db_import.create_gts-acars1.bufr,0.50,45420 mem.db_import.overwrite_gts-acars1.bufr,0.50,56478 mem.db_import.create_gts-acars2.bufr,0.50,45359 mem.db_import.overwrite_gts-acars2.bufr,0.50,56521 mem.db_import.create_gts-acars-us1.bufr,0.50,35524 mem.db_import.overwrite_gts-acars-us1.bufr,0.50,43620 mem.db_import.create_gts-amdar1.bufr,0.50,48719 mem.db_import.overwrite_gts-amdar1.bufr,0.50,63654 mem.db_import.create_gts-amdar2.bufr,0.50,60939 mem.db_import.overwrite_gts-amdar2.bufr,0.50,76489 mem.db_query.station_coords,0.50,618775 mem.db_query.stationdata_coords,0.50,878906 mem.db_query.data_coords,0.50,837808 mem.db_query.data_dt,0.50,727757 mem.db_query.data_varcode,0.50,38 dballe-7.21/bench/20160311184535_mem_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000440313022043102021271 00000000000000mem.db_query_parse.station_ana_id,0.50,1071735 mem.db_query_parse.station_coords,0.50,888532 mem.db_query_parse.station_ident,0.50,970156 mem.db_query_parse.station_repmemo,0.50,885878 mem.db_query_parse.stationdata_ana_id,0.50,1003295 mem.db_query_parse.stationdata_coords,0.50,892650 mem.db_query_parse.stationdata_ident,0.50,951809 mem.db_query_parse.stationdata_repmemo,0.50,903450 mem.db_query_parse.data_ana_id,0.50,1024006 mem.db_query_parse.data_coords,0.50,897938 mem.db_query_parse.data_ident,0.50,971031 mem.db_query_parse.data_repmemo,0.50,918878 mem.db_query_parse.data_datetime,0.50,996234 mem.db_import.create_synop-cloudbelow.bufr,0.50,525 mem.db_import.overwrite_synop-cloudbelow.bufr,0.50,575 mem.db_import.create_synop-evapo.bufr,0.50,638 mem.db_import.overwrite_synop-evapo.bufr,0.50,637 mem.db_import.create_synop-groundtemp.bufr,0.50,274 mem.db_import.overwrite_synop-groundtemp.bufr,0.50,281 mem.db_import.create_synop-gtscosmo.bufr,0.50,14958 mem.db_import.overwrite_synop-gtscosmo.bufr,0.50,14867 mem.db_import.create_synop-longname.bufr,0.50,2124 mem.db_import.overwrite_synop-longname.bufr,0.50,2265 mem.db_import.create_temp-gts1.bufr,0.50,654 mem.db_import.overwrite_temp-gts1.bufr,0.50,821 mem.db_import.create_temp-gts2.bufr,0.50,224 mem.db_import.overwrite_temp-gts2.bufr,0.50,232 mem.db_import.create_temp-gts3.bufr,0.50,3928 mem.db_import.overwrite_temp-gts3.bufr,0.50,4651 mem.db_import.create_temp-gtscosmo.bufr,0.50,35951 mem.db_import.overwrite_temp-gtscosmo.bufr,0.50,43527 mem.db_import.create_temp-timesig18.bufr,0.50,8328 mem.db_import.overwrite_temp-timesig18.bufr,0.50,9854 mem.db_import.create_gts-acars1.bufr,0.50,45441 mem.db_import.overwrite_gts-acars1.bufr,0.50,56370 mem.db_import.create_gts-acars2.bufr,0.50,45953 mem.db_import.overwrite_gts-acars2.bufr,0.50,56065 mem.db_import.create_gts-acars-us1.bufr,0.50,35763 mem.db_import.overwrite_gts-acars-us1.bufr,0.50,44006 mem.db_import.create_gts-amdar1.bufr,0.50,52878 mem.db_import.overwrite_gts-amdar1.bufr,0.50,66358 mem.db_import.create_gts-amdar2.bufr,0.50,61090 mem.db_import.overwrite_gts-amdar2.bufr,0.50,76430 mem.db_query.station_coords,0.50,659328 mem.db_query.stationdata_coords,0.50,708712 mem.db_query.data_coords,0.50,837232 mem.db_query.data_dt,0.50,775151 mem.db_query.data_varcode,0.51,38 dballe-7.21/bench/20160414161224_mysql_b0506a7cced442520e9b462b3a4e16f2ed0daa66.csv0000644000175000017500000000437313022043102022034 00000000000000mysql.db_query_parse.station_ana_id,0.50,3146 mysql.db_query_parse.station_coords,0.50,2131 mysql.db_query_parse.station_ident,0.50,2798 mysql.db_query_parse.station_repmemo,0.50,2570 mysql.db_query_parse.stationdata_ana_id,0.50,3134 mysql.db_query_parse.stationdata_coords,0.50,1981 mysql.db_query_parse.stationdata_ident,0.50,2761 mysql.db_query_parse.stationdata_repmemo,0.50,2566 mysql.db_query_parse.data_ana_id,0.50,2908 mysql.db_query_parse.data_coords,0.50,2196 mysql.db_query_parse.data_ident,0.50,2644 mysql.db_query_parse.data_repmemo,0.50,2660 mysql.db_query_parse.data_datetime,0.50,3318 mysql.db_import.create_synop-cloudbelow.bufr,0.61,3 mysql.db_import.overwrite_synop-cloudbelow.bufr,0.52,7 mysql.db_import.create_synop-evapo.bufr,0.66,4 mysql.db_import.overwrite_synop-evapo.bufr,0.54,10 mysql.db_import.create_synop-groundtemp.bufr,0.68,2 mysql.db_import.overwrite_synop-groundtemp.bufr,0.50,3 mysql.db_import.create_synop-gtscosmo.bufr,0.51,20 mysql.db_import.overwrite_synop-gtscosmo.bufr,0.50,150 mysql.db_import.create_synop-longname.bufr,0.55,9 mysql.db_import.overwrite_synop-longname.bufr,0.51,31 mysql.db_import.create_temp-gts1.bufr,0.50,4 mysql.db_import.overwrite_temp-gts1.bufr,0.51,44 mysql.db_import.create_temp-gts2.bufr,0.63,2 mysql.db_import.overwrite_temp-gts2.bufr,0.53,6 mysql.db_import.create_temp-gts3.bufr,0.51,14 mysql.db_import.overwrite_temp-gts3.bufr,0.50,103 mysql.db_import.create_temp-gtscosmo.bufr,0.51,29 mysql.db_import.overwrite_temp-gtscosmo.bufr,0.50,457 mysql.db_import.create_temp-timesig18.bufr,0.52,15 mysql.db_import.overwrite_temp-timesig18.bufr,0.51,69 mysql.db_import.create_gts-acars1.bufr,0.51,31 mysql.db_import.overwrite_gts-acars1.bufr,0.50,628 mysql.db_import.create_gts-acars2.bufr,0.51,31 mysql.db_import.overwrite_gts-acars2.bufr,0.50,666 mysql.db_import.create_gts-acars-us1.bufr,0.51,29 mysql.db_import.overwrite_gts-acars-us1.bufr,0.50,663 mysql.db_import.create_gts-amdar1.bufr,0.50,30 mysql.db_import.overwrite_gts-amdar1.bufr,0.50,617 mysql.db_import.create_gts-amdar2.bufr,0.51,14 mysql.db_import.overwrite_gts-amdar2.bufr,0.50,715 mysql.db_query.station_coords,0.50,2073 mysql.db_query.stationdata_coords,0.50,1342 mysql.db_query.data_coords,0.50,1125 mysql.db_query.data_dt,0.50,908 mysql.db_query.data_varcode,0.55,4 dballe-7.21/bench/20160622104824_mem_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000433513022043102021323 00000000000000mem.db_query_parse.station_ana_id,0.50,19604 mem.db_query_parse.station_coords,0.50,12905 mem.db_query_parse.station_ident,0.50,17710 mem.db_query_parse.station_repmemo,0.50,16719 mem.db_query_parse.stationdata_ana_id,0.50,19752 mem.db_query_parse.stationdata_coords,0.50,12987 mem.db_query_parse.stationdata_ident,0.50,17667 mem.db_query_parse.stationdata_repmemo,0.50,17113 mem.db_query_parse.data_ana_id,0.50,20055 mem.db_query_parse.data_coords,0.50,12855 mem.db_query_parse.data_ident,0.50,17756 mem.db_query_parse.data_repmemo,0.50,17119 mem.db_query_parse.data_datetime,0.50,22491 mem.db_import.create_synop-cloudbelow.bufr,0.50,93 mem.db_import.overwrite_synop-cloudbelow.bufr,0.50,539 mem.db_import.create_synop-evapo.bufr,0.50,121 mem.db_import.overwrite_synop-evapo.bufr,0.50,712 mem.db_import.create_synop-groundtemp.bufr,0.50,56 mem.db_import.overwrite_synop-groundtemp.bufr,0.50,340 mem.db_import.create_synop-gtscosmo.bufr,0.50,1080 mem.db_import.overwrite_synop-gtscosmo.bufr,0.50,6379 mem.db_import.create_synop-longname.bufr,0.50,317 mem.db_import.overwrite_synop-longname.bufr,0.50,1858 mem.db_import.create_temp-gts1.bufr,0.50,118 mem.db_import.overwrite_temp-gts1.bufr,0.50,885 mem.db_import.create_temp-gts2.bufr,0.51,47 mem.db_import.overwrite_temp-gts2.bufr,0.50,277 mem.db_import.create_temp-gts3.bufr,0.50,486 mem.db_import.overwrite_temp-gts3.bufr,0.50,3205 mem.db_import.create_temp-gtscosmo.bufr,0.50,1937 mem.db_import.overwrite_temp-gtscosmo.bufr,0.50,15547 mem.db_import.create_temp-timesig18.bufr,0.50,772 mem.db_import.overwrite_temp-timesig18.bufr,0.50,3885 mem.db_import.create_gts-acars1.bufr,0.50,2344 mem.db_import.overwrite_gts-acars1.bufr,0.50,20364 mem.db_import.create_gts-acars2.bufr,0.50,2341 mem.db_import.overwrite_gts-acars2.bufr,0.50,20451 mem.db_import.create_gts-acars-us1.bufr,0.50,2201 mem.db_import.overwrite_gts-acars-us1.bufr,0.50,19125 mem.db_import.create_gts-amdar1.bufr,0.50,2396 mem.db_import.overwrite_gts-amdar1.bufr,0.50,21237 mem.db_import.create_gts-amdar2.bufr,0.50,2453 mem.db_import.overwrite_gts-amdar2.bufr,0.50,21922 mem.db_query.station_coords,0.50,12225 mem.db_query.stationdata_coords,0.50,6827 mem.db_query.data_coords,0.50,4750 mem.db_query.data_dt,0.50,4245 mem.db_query.data_varcode,0.53,8 dballe-7.21/bench/20160325170119_sqlitev7_9d6801c08aa9fbc2533a556fe55412acc81eb8ee.csv0000644000175000017500000000467313022043102022502 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6673 sqlitev7.db_query_parse.station_coords,0.50,5250 sqlitev7.db_query_parse.station_ident,0.50,6097 sqlitev7.db_query_parse.station_repmemo,0.50,5972 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6692 sqlitev7.db_query_parse.stationdata_coords,0.50,5114 sqlitev7.db_query_parse.stationdata_ident,0.50,5904 sqlitev7.db_query_parse.stationdata_repmemo,0.50,5980 sqlitev7.db_query_parse.data_ana_id,0.50,6699 sqlitev7.db_query_parse.data_coords,0.50,5291 sqlitev7.db_query_parse.data_ident,0.50,6121 sqlitev7.db_query_parse.data_repmemo,0.50,5944 sqlitev7.db_query_parse.data_datetime,0.50,6865 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.51,55 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,336 sqlitev7.db_import.create_synop-evapo.bufr,0.50,96 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,458 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,39 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,211 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,658 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,4294 sqlitev7.db_import.create_synop-longname.bufr,0.50,188 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1167 sqlitev7.db_import.create_temp-gts1.bufr,0.50,92 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,522 sqlitev7.db_import.create_temp-gts2.bufr,0.51,39 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,184 sqlitev7.db_import.create_temp-gts3.bufr,0.50,368 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2019 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1146 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,9394 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,547 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,2451 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1263 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,12041 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1278 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,11786 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1233 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,11347 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1301 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,12319 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1329 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,12596 sqlitev7.db_query.station_coords,0.50,5025 sqlitev7.db_query.stationdata_coords,0.50,3950 sqlitev7.db_query.data_coords,0.50,3115 sqlitev7.db_query.data_dt,0.50,2895 sqlitev7.db_query.data_varcode,0.57,8 dballe-7.21/bench/20160323094108_sqlitev7_fb6a85827a71ca6e5ac6071ea82b6c393b134b11.csv0000644000175000017500000000467213022043102022326 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7325 sqlitev7.db_query_parse.station_coords,0.50,5608 sqlitev7.db_query_parse.station_ident,0.50,6250 sqlitev7.db_query_parse.station_repmemo,0.50,5478 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7255 sqlitev7.db_query_parse.stationdata_coords,0.50,5624 sqlitev7.db_query_parse.stationdata_ident,0.50,6545 sqlitev7.db_query_parse.stationdata_repmemo,0.50,5456 sqlitev7.db_query_parse.data_ana_id,0.50,7282 sqlitev7.db_query_parse.data_coords,0.50,5591 sqlitev7.db_query_parse.data_ident,0.50,6516 sqlitev7.db_query_parse.data_repmemo,0.50,5475 sqlitev7.db_query_parse.data_datetime,0.50,7072 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,43 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,247 sqlitev7.db_import.create_synop-evapo.bufr,0.51,72 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,301 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,30 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,159 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,756 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,4076 sqlitev7.db_import.create_synop-longname.bufr,0.50,154 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,867 sqlitev7.db_import.create_temp-gts1.bufr,0.50,92 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,634 sqlitev7.db_import.create_temp-gts2.bufr,0.51,38 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,212 sqlitev7.db_import.create_temp-gts3.bufr,0.50,398 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2156 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1387 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,8822 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,383 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,1847 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1591 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,11272 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1599 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,11284 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1539 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,10834 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1621 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,11572 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1674 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,11808 sqlitev7.db_query.station_coords,0.50,5495 sqlitev7.db_query.stationdata_coords,0.50,3959 sqlitev7.db_query.data_coords,0.50,3266 sqlitev7.db_query.data_dt,0.50,3085 sqlitev7.db_query.data_varcode,0.57,7 dballe-7.21/bench/20160622102712_postgresql_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000475213022043102022745 00000000000000postgresql.db_query_parse.station_ana_id,0.50,1432 postgresql.db_query_parse.station_coords,0.50,1224 postgresql.db_query_parse.station_ident,0.50,1639 postgresql.db_query_parse.station_repmemo,0.50,980 postgresql.db_query_parse.stationdata_ana_id,0.50,1375 postgresql.db_query_parse.stationdata_coords,0.50,1191 postgresql.db_query_parse.stationdata_ident,0.50,1352 postgresql.db_query_parse.stationdata_repmemo,0.50,1057 postgresql.db_query_parse.data_ana_id,0.50,1287 postgresql.db_query_parse.data_coords,0.50,1211 postgresql.db_query_parse.data_ident,0.50,1745 postgresql.db_query_parse.data_repmemo,0.50,825 postgresql.db_query_parse.data_datetime,0.50,1882 postgresql.db_import.create_synop-cloudbelow.bufr,0.61,4 postgresql.db_import.overwrite_synop-cloudbelow.bufr,0.51,11 postgresql.db_import.create_synop-evapo.bufr,0.53,5 postgresql.db_import.overwrite_synop-evapo.bufr,0.51,16 postgresql.db_import.create_synop-groundtemp.bufr,0.64,3 postgresql.db_import.overwrite_synop-groundtemp.bufr,0.50,7 postgresql.db_import.create_synop-gtscosmo.bufr,0.51,31 postgresql.db_import.overwrite_synop-gtscosmo.bufr,0.50,251 postgresql.db_import.create_synop-longname.bufr,0.50,10 postgresql.db_import.overwrite_synop-longname.bufr,0.51,44 postgresql.db_import.create_temp-gts1.bufr,0.54,8 postgresql.db_import.overwrite_temp-gts1.bufr,0.50,75 postgresql.db_import.create_temp-gts2.bufr,0.65,4 postgresql.db_import.overwrite_temp-gts2.bufr,0.52,13 postgresql.db_import.create_temp-gts3.bufr,0.52,22 postgresql.db_import.overwrite_temp-gts3.bufr,0.50,154 postgresql.db_import.create_temp-gtscosmo.bufr,0.50,43 postgresql.db_import.overwrite_temp-gtscosmo.bufr,0.50,527 postgresql.db_import.create_temp-timesig18.bufr,0.52,20 postgresql.db_import.overwrite_temp-timesig18.bufr,0.50,74 postgresql.db_import.create_gts-acars1.bufr,0.50,46 postgresql.db_import.overwrite_gts-acars1.bufr,0.50,519 postgresql.db_import.create_gts-acars2.bufr,0.50,46 postgresql.db_import.overwrite_gts-acars2.bufr,0.50,525 postgresql.db_import.create_gts-acars-us1.bufr,0.50,49 postgresql.db_import.overwrite_gts-acars-us1.bufr,0.50,526 postgresql.db_import.create_gts-amdar1.bufr,0.51,47 postgresql.db_import.overwrite_gts-amdar1.bufr,0.50,575 postgresql.db_import.create_gts-amdar2.bufr,0.51,48 postgresql.db_import.overwrite_gts-amdar2.bufr,0.50,531 postgresql.db_query.station_coords,0.50,1225 postgresql.db_query.stationdata_coords,0.50,830 postgresql.db_query.data_coords,0.50,575 postgresql.db_query.data_dt,0.50,508 postgresql.db_query.data_varcode,0.52,4 dballe-7.21/bench/20160311182018_mem_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000440313022043102021263 00000000000000mem.db_query_parse.station_ana_id,0.50,1062159 mem.db_query_parse.station_coords,0.50,889523 mem.db_query_parse.station_ident,0.50,942710 mem.db_query_parse.station_repmemo,0.50,880018 mem.db_query_parse.stationdata_ana_id,0.50,999390 mem.db_query_parse.stationdata_coords,0.50,890908 mem.db_query_parse.stationdata_ident,0.50,941526 mem.db_query_parse.stationdata_repmemo,0.50,883692 mem.db_query_parse.data_ana_id,0.50,1014593 mem.db_query_parse.data_coords,0.50,900199 mem.db_query_parse.data_ident,0.50,955878 mem.db_query_parse.data_repmemo,0.50,886888 mem.db_query_parse.data_datetime,0.50,970298 mem.db_import.create_synop-cloudbelow.bufr,0.50,530 mem.db_import.overwrite_synop-cloudbelow.bufr,0.50,584 mem.db_import.create_synop-evapo.bufr,0.50,643 mem.db_import.overwrite_synop-evapo.bufr,0.50,627 mem.db_import.create_synop-groundtemp.bufr,0.50,274 mem.db_import.overwrite_synop-groundtemp.bufr,0.50,283 mem.db_import.create_synop-gtscosmo.bufr,0.50,15072 mem.db_import.overwrite_synop-gtscosmo.bufr,0.50,14935 mem.db_import.create_synop-longname.bufr,0.50,2149 mem.db_import.overwrite_synop-longname.bufr,0.50,2336 mem.db_import.create_temp-gts1.bufr,0.50,655 mem.db_import.overwrite_temp-gts1.bufr,0.50,840 mem.db_import.create_temp-gts2.bufr,0.50,223 mem.db_import.overwrite_temp-gts2.bufr,0.50,232 mem.db_import.create_temp-gts3.bufr,0.50,3949 mem.db_import.overwrite_temp-gts3.bufr,0.50,4648 mem.db_import.create_temp-gtscosmo.bufr,0.50,36387 mem.db_import.overwrite_temp-gtscosmo.bufr,0.50,44171 mem.db_import.create_temp-timesig18.bufr,0.50,8489 mem.db_import.overwrite_temp-timesig18.bufr,0.50,10094 mem.db_import.create_gts-acars1.bufr,0.50,45948 mem.db_import.overwrite_gts-acars1.bufr,0.50,56790 mem.db_import.create_gts-acars2.bufr,0.50,46193 mem.db_import.overwrite_gts-acars2.bufr,0.50,57221 mem.db_import.create_gts-acars-us1.bufr,0.50,36278 mem.db_import.overwrite_gts-acars-us1.bufr,0.50,44546 mem.db_import.create_gts-amdar1.bufr,0.50,52299 mem.db_import.overwrite_gts-amdar1.bufr,0.50,67367 mem.db_import.create_gts-amdar2.bufr,0.50,62540 mem.db_import.overwrite_gts-amdar2.bufr,0.50,77478 mem.db_query.station_coords,0.50,622001 mem.db_query.stationdata_coords,0.50,917451 mem.db_query.data_coords,0.50,841393 mem.db_query.data_dt,0.50,760984 mem.db_query.data_varcode,0.50,38 dballe-7.21/bench/20160311181808_postgresql_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000475113022043102022724 00000000000000postgresql.db_query_parse.station_ana_id,0.50,1863 postgresql.db_query_parse.station_coords,0.50,1550 postgresql.db_query_parse.station_ident,0.50,1728 postgresql.db_query_parse.station_repmemo,0.50,1125 postgresql.db_query_parse.stationdata_ana_id,0.50,1993 postgresql.db_query_parse.stationdata_coords,0.50,1513 postgresql.db_query_parse.stationdata_ident,0.50,1705 postgresql.db_query_parse.stationdata_repmemo,0.50,1100 postgresql.db_query_parse.data_ana_id,0.50,1888 postgresql.db_query_parse.data_coords,0.50,1528 postgresql.db_query_parse.data_ident,0.50,1725 postgresql.db_query_parse.data_repmemo,0.50,1087 postgresql.db_query_parse.data_datetime,0.50,2019 postgresql.db_import.create_synop-cloudbelow.bufr,0.70,2 postgresql.db_import.overwrite_synop-cloudbelow.bufr,0.50,6 postgresql.db_import.create_synop-evapo.bufr,0.68,3 postgresql.db_import.overwrite_synop-evapo.bufr,0.51,11 postgresql.db_import.create_synop-groundtemp.bufr,0.87,2 postgresql.db_import.overwrite_synop-groundtemp.bufr,0.56,3 postgresql.db_import.create_synop-gtscosmo.bufr,0.50,19 postgresql.db_import.overwrite_synop-gtscosmo.bufr,0.50,256 postgresql.db_import.create_synop-longname.bufr,0.57,5 postgresql.db_import.overwrite_synop-longname.bufr,0.51,37 postgresql.db_import.create_temp-gts1.bufr,0.54,7 postgresql.db_import.overwrite_temp-gts1.bufr,0.50,78 postgresql.db_import.create_temp-gts2.bufr,0.72,3 postgresql.db_import.overwrite_temp-gts2.bufr,0.52,10 postgresql.db_import.create_temp-gts3.bufr,0.52,14 postgresql.db_import.overwrite_temp-gts3.bufr,0.50,167 postgresql.db_import.create_temp-gtscosmo.bufr,0.51,24 postgresql.db_import.overwrite_temp-gtscosmo.bufr,0.50,533 postgresql.db_import.create_temp-timesig18.bufr,0.51,6 postgresql.db_import.overwrite_temp-timesig18.bufr,0.50,68 postgresql.db_import.create_gts-acars1.bufr,0.52,26 postgresql.db_import.overwrite_gts-acars1.bufr,0.50,517 postgresql.db_import.create_gts-acars2.bufr,0.51,26 postgresql.db_import.overwrite_gts-acars2.bufr,0.50,504 postgresql.db_import.create_gts-acars-us1.bufr,0.50,26 postgresql.db_import.overwrite_gts-acars-us1.bufr,0.50,511 postgresql.db_import.create_gts-amdar1.bufr,0.51,26 postgresql.db_import.overwrite_gts-amdar1.bufr,0.50,515 postgresql.db_import.create_gts-amdar2.bufr,0.51,27 postgresql.db_import.overwrite_gts-amdar2.bufr,0.50,508 postgresql.db_query.station_coords,0.50,1571 postgresql.db_query.stationdata_coords,0.50,850 postgresql.db_query.data_coords,0.50,574 postgresql.db_query.data_dt,0.50,542 postgresql.db_query.data_varcode,0.53,5 dballe-7.21/bench/20160311181445_odbc_c4354a67f0b12a3c10d0c401644af73fc7ead9ab.csv0000644000175000017500000000002513022043102021562 00000000000000Failed with result 0 dballe-7.21/bench/20160404211602_sqlitev7_7e9a0f3232841235f05123ed68e4a2d98592d5ca.csv0000644000175000017500000000471313022043102022107 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,14058 sqlitev7.db_query_parse.station_coords,0.50,10004 sqlitev7.db_query_parse.station_ident,0.50,12691 sqlitev7.db_query_parse.station_repmemo,0.50,12445 sqlitev7.db_query_parse.stationdata_ana_id,0.50,14328 sqlitev7.db_query_parse.stationdata_coords,0.50,10043 sqlitev7.db_query_parse.stationdata_ident,0.50,12674 sqlitev7.db_query_parse.stationdata_repmemo,0.50,12374 sqlitev7.db_query_parse.data_ana_id,0.50,14486 sqlitev7.db_query_parse.data_coords,0.50,10115 sqlitev7.db_query_parse.data_ident,0.50,12521 sqlitev7.db_query_parse.data_repmemo,0.50,12382 sqlitev7.db_query_parse.data_datetime,0.50,15529 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,86 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,535 sqlitev7.db_import.create_synop-evapo.bufr,0.50,109 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,700 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,52 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,340 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,975 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5568 sqlitev7.db_import.create_synop-longname.bufr,0.50,294 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1770 sqlitev7.db_import.create_temp-gts1.bufr,0.50,103 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,847 sqlitev7.db_import.create_temp-gts2.bufr,0.51,43 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,271 sqlitev7.db_import.create_temp-gts3.bufr,0.50,437 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2980 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1711 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,12097 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,715 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3549 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1982 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,14597 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1970 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,14442 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1902 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,14465 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,2019 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,15128 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,2080 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,15856 sqlitev7.db_query.station_coords,0.50,9206 sqlitev7.db_query.stationdata_coords,0.50,5753 sqlitev7.db_query.data_coords,0.50,4171 sqlitev7.db_query.data_dt,0.50,3816 sqlitev7.db_query.data_varcode,0.55,8 dballe-7.21/bench/20160323170651_sqlitev7_c03b6a4e3137058f1b5f425713a6d26854282b4b.csv0000644000175000017500000000467513022043102022030 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7026 sqlitev7.db_query_parse.station_coords,0.50,5508 sqlitev7.db_query_parse.station_ident,0.50,6339 sqlitev7.db_query_parse.station_repmemo,0.50,6227 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6978 sqlitev7.db_query_parse.stationdata_coords,0.50,5473 sqlitev7.db_query_parse.stationdata_ident,0.50,6387 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6303 sqlitev7.db_query_parse.data_ana_id,0.50,7113 sqlitev7.db_query_parse.data_coords,0.50,5586 sqlitev7.db_query_parse.data_ident,0.50,6416 sqlitev7.db_query_parse.data_repmemo,0.50,6295 sqlitev7.db_query_parse.data_datetime,0.50,7219 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.51,51 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,571 sqlitev7.db_import.create_synop-evapo.bufr,0.50,86 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,736 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,37 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,376 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,716 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5520 sqlitev7.db_import.create_synop-longname.bufr,0.50,175 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1844 sqlitev7.db_import.create_temp-gts1.bufr,0.50,105 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,926 sqlitev7.db_import.create_temp-gts2.bufr,0.51,44 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,316 sqlitev7.db_import.create_temp-gts3.bufr,0.50,412 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,3030 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1225 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,11570 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,407 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3216 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1363 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,14141 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1363 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,14163 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1324 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,13540 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1389 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,13646 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1398 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,14373 sqlitev7.db_query.station_coords,0.50,5452 sqlitev7.db_query.stationdata_coords,0.50,3959 sqlitev7.db_query.data_coords,0.50,3299 sqlitev7.db_query.data_dt,0.50,3117 sqlitev7.db_query.data_varcode,0.51,7 dballe-7.21/bench/20160322173923_odbc_fa434f55f18713bf8d8ec1b4b37788f61a98e22e.csv0000644000175000017500000000002513022043102021510 00000000000000Failed with result 0 dballe-7.21/bench/20160326082613_sqlitev7_d9e5a9a6dabc3f674b37ba0b0dea48f0565a015f.csv0000644000175000017500000000467413022043102022633 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6964 sqlitev7.db_query_parse.station_coords,0.50,5489 sqlitev7.db_query_parse.station_ident,0.50,6319 sqlitev7.db_query_parse.station_repmemo,0.50,6298 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6949 sqlitev7.db_query_parse.stationdata_coords,0.50,5556 sqlitev7.db_query_parse.stationdata_ident,0.50,6367 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6278 sqlitev7.db_query_parse.data_ana_id,0.50,6953 sqlitev7.db_query_parse.data_coords,0.50,5540 sqlitev7.db_query_parse.data_ident,0.50,6338 sqlitev7.db_query_parse.data_repmemo,0.50,6227 sqlitev7.db_query_parse.data_datetime,0.50,7190 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,69 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,375 sqlitev7.db_import.create_synop-evapo.bufr,0.50,99 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,496 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,45 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,238 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,762 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,4719 sqlitev7.db_import.create_synop-longname.bufr,0.50,239 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1283 sqlitev7.db_import.create_temp-gts1.bufr,0.50,96 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,575 sqlitev7.db_import.create_temp-gts2.bufr,0.50,39 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,206 sqlitev7.db_import.create_temp-gts3.bufr,0.50,384 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2245 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1189 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,10159 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,595 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,2789 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1332 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,12747 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1336 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,12824 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1297 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,11698 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1310 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,13027 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1375 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,13419 sqlitev7.db_query.station_coords,0.50,5202 sqlitev7.db_query.stationdata_coords,0.50,4136 sqlitev7.db_query.data_coords,0.50,3312 sqlitev7.db_query.data_dt,0.50,3068 sqlitev7.db_query.data_varcode,0.56,8 dballe-7.21/bench/20160323122115_sqlitev7_5a000eda51e9a741def19a185bbf5fbb8de1004d.csv0000644000175000017500000000467213022043102022604 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7205 sqlitev7.db_query_parse.station_coords,0.50,5641 sqlitev7.db_query_parse.station_ident,0.50,6557 sqlitev7.db_query_parse.station_repmemo,0.50,5537 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7442 sqlitev7.db_query_parse.stationdata_coords,0.50,5703 sqlitev7.db_query_parse.stationdata_ident,0.50,6639 sqlitev7.db_query_parse.stationdata_repmemo,0.50,5556 sqlitev7.db_query_parse.data_ana_id,0.50,7460 sqlitev7.db_query_parse.data_coords,0.50,5715 sqlitev7.db_query_parse.data_ident,0.50,6676 sqlitev7.db_query_parse.data_repmemo,0.50,5545 sqlitev7.db_query_parse.data_datetime,0.50,7622 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.51,44 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,250 sqlitev7.db_import.create_synop-evapo.bufr,0.50,72 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,306 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,30 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,159 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,748 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,4125 sqlitev7.db_import.create_synop-longname.bufr,0.50,154 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,864 sqlitev7.db_import.create_temp-gts1.bufr,0.51,93 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,635 sqlitev7.db_import.create_temp-gts2.bufr,0.51,38 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,214 sqlitev7.db_import.create_temp-gts3.bufr,0.50,401 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2138 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1357 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,8699 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,376 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,1857 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1583 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,11132 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1575 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,11210 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1531 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,10740 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1614 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,11539 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1667 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,11718 sqlitev7.db_query.station_coords,0.50,5488 sqlitev7.db_query.stationdata_coords,0.50,4009 sqlitev7.db_query.data_coords,0.50,3341 sqlitev7.db_query.data_dt,0.50,3127 sqlitev7.db_query.data_varcode,0.56,7 dballe-7.21/bench/20160311181925_mysql_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000437113022043102021664 00000000000000mysql.db_query_parse.station_ana_id,0.50,3190 mysql.db_query_parse.station_coords,0.50,2214 mysql.db_query_parse.station_ident,0.50,2818 mysql.db_query_parse.station_repmemo,0.50,2411 mysql.db_query_parse.stationdata_ana_id,0.50,2985 mysql.db_query_parse.stationdata_coords,0.50,2021 mysql.db_query_parse.stationdata_ident,0.50,2608 mysql.db_query_parse.stationdata_repmemo,0.50,2501 mysql.db_query_parse.data_ana_id,0.50,2798 mysql.db_query_parse.data_coords,0.50,2340 mysql.db_query_parse.data_ident,0.50,2691 mysql.db_query_parse.data_repmemo,0.50,2599 mysql.db_query_parse.data_datetime,0.50,3497 mysql.db_import.create_synop-cloudbelow.bufr,0.51,1 mysql.db_import.overwrite_synop-cloudbelow.bufr,0.55,1 mysql.db_import.create_synop-evapo.bufr,0.69,2 mysql.db_import.overwrite_synop-evapo.bufr,0.52,4 mysql.db_import.create_synop-groundtemp.bufr,0.70,1 mysql.db_import.overwrite_synop-groundtemp.bufr,0.70,1 mysql.db_import.create_synop-gtscosmo.bufr,0.52,14 mysql.db_import.overwrite_synop-gtscosmo.bufr,0.50,164 mysql.db_import.create_synop-longname.bufr,0.64,4 mysql.db_import.overwrite_synop-longname.bufr,0.51,23 mysql.db_import.create_temp-gts1.bufr,0.51,5 mysql.db_import.overwrite_temp-gts1.bufr,0.50,37 mysql.db_import.create_temp-gts2.bufr,0.76,2 mysql.db_import.overwrite_temp-gts2.bufr,0.53,4 mysql.db_import.create_temp-gts3.bufr,0.50,10 mysql.db_import.overwrite_temp-gts3.bufr,0.50,114 mysql.db_import.create_temp-gtscosmo.bufr,0.51,16 mysql.db_import.overwrite_temp-gtscosmo.bufr,0.50,497 mysql.db_import.create_temp-timesig18.bufr,0.59,2 mysql.db_import.overwrite_temp-timesig18.bufr,0.50,52 mysql.db_import.create_gts-acars1.bufr,0.52,17 mysql.db_import.overwrite_gts-acars1.bufr,0.50,635 mysql.db_import.create_gts-acars2.bufr,0.51,18 mysql.db_import.overwrite_gts-acars2.bufr,0.50,661 mysql.db_import.create_gts-acars-us1.bufr,0.50,17 mysql.db_import.overwrite_gts-acars-us1.bufr,0.50,647 mysql.db_import.create_gts-amdar1.bufr,0.52,17 mysql.db_import.overwrite_gts-amdar1.bufr,0.50,603 mysql.db_import.create_gts-amdar2.bufr,0.52,17 mysql.db_import.overwrite_gts-amdar2.bufr,0.50,668 mysql.db_query.station_coords,0.50,2020 mysql.db_query.stationdata_coords,0.50,1128 mysql.db_query.data_coords,0.50,1094 mysql.db_query.data_dt,0.50,983 mysql.db_query.data_varcode,0.56,4 dballe-7.21/bench/20160402093518_postgresqlv7_1449d30b8e281b53c0c3d2e85d106ea56645bf0d.csv0000644000175000017500000000512413022043102023144 00000000000000postgresqlv7.db_query_parse.station_ana_id,0.50,1837 postgresqlv7.db_query_parse.station_coords,0.50,1467 postgresqlv7.db_query_parse.station_ident,0.50,1670 postgresqlv7.db_query_parse.station_repmemo,0.50,1800 postgresqlv7.db_query_parse.stationdata_ana_id,0.50,1930 postgresqlv7.db_query_parse.stationdata_coords,0.50,1478 postgresqlv7.db_query_parse.stationdata_ident,0.50,1710 postgresqlv7.db_query_parse.stationdata_repmemo,0.50,1719 postgresqlv7.db_query_parse.data_ana_id,0.50,1815 postgresqlv7.db_query_parse.data_coords,0.50,1574 postgresqlv7.db_query_parse.data_ident,0.50,1688 postgresqlv7.db_query_parse.data_repmemo,0.50,1716 postgresqlv7.db_query_parse.data_datetime,0.50,1949 postgresqlv7.db_import.create_synop-cloudbelow.bufr,0.59,7 postgresqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.51,35 postgresqlv7.db_import.create_synop-evapo.bufr,0.51,7 postgresqlv7.db_import.overwrite_synop-evapo.bufr,0.50,53 postgresqlv7.db_import.create_synop-groundtemp.bufr,0.62,5 postgresqlv7.db_import.overwrite_synop-groundtemp.bufr,0.50,20 postgresqlv7.db_import.create_synop-gtscosmo.bufr,0.52,30 postgresqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,272 postgresqlv7.db_import.create_synop-longname.bufr,0.52,15 postgresqlv7.db_import.overwrite_synop-longname.bufr,0.50,143 postgresqlv7.db_import.create_temp-gts1.bufr,0.54,9 postgresqlv7.db_import.overwrite_temp-gts1.bufr,0.50,75 postgresqlv7.db_import.create_temp-gts2.bufr,0.62,4 postgresqlv7.db_import.overwrite_temp-gts2.bufr,0.51,18 postgresqlv7.db_import.create_temp-gts3.bufr,0.50,19 postgresqlv7.db_import.overwrite_temp-gts3.bufr,0.50,165 postgresqlv7.db_import.create_temp-gtscosmo.bufr,0.50,43 postgresqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,906 postgresqlv7.db_import.create_temp-timesig18.bufr,0.51,24 postgresqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,262 postgresqlv7.db_import.create_gts-acars1.bufr,0.51,47 postgresqlv7.db_import.overwrite_gts-acars1.bufr,0.50,1332 postgresqlv7.db_import.create_gts-acars2.bufr,0.51,47 postgresqlv7.db_import.overwrite_gts-acars2.bufr,0.50,1327 postgresqlv7.db_import.create_gts-acars-us1.bufr,0.51,46 postgresqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,1191 postgresqlv7.db_import.create_gts-amdar1.bufr,0.50,47 postgresqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,1355 postgresqlv7.db_import.create_gts-amdar2.bufr,0.50,47 postgresqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,1302 postgresqlv7.db_query.station_coords,0.50,1426 postgresqlv7.db_query.stationdata_coords,0.50,991 postgresqlv7.db_query.data_coords,0.50,607 postgresqlv7.db_query.data_dt,0.50,563 postgresqlv7.db_query.data_varcode,0.53,5 dballe-7.21/bench/20160622104824_mysqlv7_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000454013022043102022165 00000000000000mysqlv7.db_query_parse.station_ana_id,0.50,5175 mysqlv7.db_query_parse.station_coords,0.50,3331 mysqlv7.db_query_parse.station_ident,0.50,4590 mysqlv7.db_query_parse.station_repmemo,0.50,4045 mysqlv7.db_query_parse.stationdata_ana_id,0.50,5289 mysqlv7.db_query_parse.stationdata_coords,0.50,3674 mysqlv7.db_query_parse.stationdata_ident,0.50,4136 mysqlv7.db_query_parse.stationdata_repmemo,0.50,3614 mysqlv7.db_query_parse.data_ana_id,0.50,4482 mysqlv7.db_query_parse.data_coords,0.50,3288 mysqlv7.db_query_parse.data_ident,0.50,4203 mysqlv7.db_query_parse.data_repmemo,0.50,3395 mysqlv7.db_query_parse.data_datetime,0.50,5348 mysqlv7.db_import.create_synop-cloudbelow.bufr,0.58,5 mysqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.50,27 mysqlv7.db_import.create_synop-evapo.bufr,0.52,6 mysqlv7.db_import.overwrite_synop-evapo.bufr,0.51,40 mysqlv7.db_import.create_synop-groundtemp.bufr,0.69,3 mysqlv7.db_import.overwrite_synop-groundtemp.bufr,0.50,16 mysqlv7.db_import.create_synop-gtscosmo.bufr,0.51,22 mysqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,201 mysqlv7.db_import.create_synop-longname.bufr,0.53,12 mysqlv7.db_import.overwrite_synop-longname.bufr,0.50,86 mysqlv7.db_import.create_temp-gts1.bufr,0.53,5 mysqlv7.db_import.overwrite_temp-gts1.bufr,0.50,41 mysqlv7.db_import.create_temp-gts2.bufr,0.60,2 mysqlv7.db_import.overwrite_temp-gts2.bufr,0.51,7 mysqlv7.db_import.create_temp-gts3.bufr,0.51,14 mysqlv7.db_import.overwrite_temp-gts3.bufr,0.50,106 mysqlv7.db_import.create_temp-gtscosmo.bufr,0.51,29 mysqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,450 mysqlv7.db_import.create_temp-timesig18.bufr,0.50,19 mysqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,127 mysqlv7.db_import.create_gts-acars1.bufr,0.51,31 mysqlv7.db_import.overwrite_gts-acars1.bufr,0.50,885 mysqlv7.db_import.create_gts-acars2.bufr,0.51,31 mysqlv7.db_import.overwrite_gts-acars2.bufr,0.50,688 mysqlv7.db_import.create_gts-acars-us1.bufr,0.50,31 mysqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,654 mysqlv7.db_import.create_gts-amdar1.bufr,0.51,32 mysqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,791 mysqlv7.db_import.create_gts-amdar2.bufr,0.51,33 mysqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,938 mysqlv7.db_query.station_coords,0.50,3431 mysqlv7.db_query.stationdata_coords,0.50,2006 mysqlv7.db_query.data_coords,0.50,1635 mysqlv7.db_query.data_dt,0.50,1531 mysqlv7.db_query.data_varcode,0.60,4 dballe-7.21/bench/20160322132218_odbc_14c890a8f65dcc7c8c34dea121c5c608f98123f9.csv0000644000175000017500000000002513022043102021465 00000000000000Failed with result 0 dballe-7.21/bench/20160325165747_sqlitev7_f1e3c89ea09a507823a2f6058b101244b30837de.csv0000644000175000017500000000465713022043102022125 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6643 sqlitev7.db_query_parse.station_coords,0.50,5170 sqlitev7.db_query_parse.station_ident,0.50,5971 sqlitev7.db_query_parse.station_repmemo,0.50,6005 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6745 sqlitev7.db_query_parse.stationdata_coords,0.50,5328 sqlitev7.db_query_parse.stationdata_ident,0.50,6191 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6020 sqlitev7.db_query_parse.data_ana_id,0.50,6726 sqlitev7.db_query_parse.data_coords,0.50,5260 sqlitev7.db_query_parse.data_ident,0.50,6240 sqlitev7.db_query_parse.data_repmemo,0.50,6020 sqlitev7.db_query_parse.data_datetime,0.50,6749 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,55 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.51,78 sqlitev7.db_import.create_synop-evapo.bufr,0.50,96 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.51,93 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,38 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.51,41 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,653 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,1355 sqlitev7.db_import.create_synop-longname.bufr,0.50,182 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,276 sqlitev7.db_import.create_temp-gts1.bufr,0.50,92 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,190 sqlitev7.db_import.create_temp-gts2.bufr,0.51,38 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,61 sqlitev7.db_import.create_temp-gts3.bufr,0.50,364 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,711 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1093 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,3074 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,567 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,619 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1270 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,3648 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1265 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,3682 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1244 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,3489 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1266 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,3807 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1315 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,3905 sqlitev7.db_query.station_coords,0.50,5012 sqlitev7.db_query.stationdata_coords,0.50,3942 sqlitev7.db_query.data_coords,0.50,3135 sqlitev7.db_query.data_dt,0.50,2900 sqlitev7.db_query.data_varcode,0.50,7 dballe-7.21/bench/20160322132218_sqlite_14c890a8f65dcc7c8c34dea121c5c608f98123f9.csv0000644000175000017500000000453213022043102022066 00000000000000sqlite.db_query_parse.station_ana_id,0.50,7148 sqlite.db_query_parse.station_coords,0.50,5591 sqlite.db_query_parse.station_ident,0.50,6647 sqlite.db_query_parse.station_repmemo,0.50,5414 sqlite.db_query_parse.stationdata_ana_id,0.50,6875 sqlite.db_query_parse.stationdata_coords,0.50,5674 sqlite.db_query_parse.stationdata_ident,0.50,6601 sqlite.db_query_parse.stationdata_repmemo,0.50,5516 sqlite.db_query_parse.data_ana_id,0.50,7157 sqlite.db_query_parse.data_coords,0.50,5544 sqlite.db_query_parse.data_ident,0.50,6485 sqlite.db_query_parse.data_repmemo,0.50,5485 sqlite.db_query_parse.data_datetime,0.50,7083 sqlite.db_import.create_synop-cloudbelow.bufr,0.50,42 sqlite.db_import.overwrite_synop-cloudbelow.bufr,0.50,235 sqlite.db_import.create_synop-evapo.bufr,0.51,71 sqlite.db_import.overwrite_synop-evapo.bufr,0.50,276 sqlite.db_import.create_synop-groundtemp.bufr,0.51,30 sqlite.db_import.overwrite_synop-groundtemp.bufr,0.50,149 sqlite.db_import.create_synop-gtscosmo.bufr,0.50,750 sqlite.db_import.overwrite_synop-gtscosmo.bufr,0.50,3924 sqlite.db_import.create_synop-longname.bufr,0.50,150 sqlite.db_import.overwrite_synop-longname.bufr,0.50,833 sqlite.db_import.create_temp-gts1.bufr,0.50,90 sqlite.db_import.overwrite_temp-gts1.bufr,0.50,618 sqlite.db_import.create_temp-gts2.bufr,0.51,37 sqlite.db_import.overwrite_temp-gts2.bufr,0.50,202 sqlite.db_import.create_temp-gts3.bufr,0.50,361 sqlite.db_import.overwrite_temp-gts3.bufr,0.50,2059 sqlite.db_import.create_temp-gtscosmo.bufr,0.50,1268 sqlite.db_import.overwrite_temp-gtscosmo.bufr,0.50,8319 sqlite.db_import.create_temp-timesig18.bufr,0.50,328 sqlite.db_import.overwrite_temp-timesig18.bufr,0.50,1705 sqlite.db_import.create_gts-acars1.bufr,0.50,1586 sqlite.db_import.overwrite_gts-acars1.bufr,0.50,11316 sqlite.db_import.create_gts-acars2.bufr,0.50,1597 sqlite.db_import.overwrite_gts-acars2.bufr,0.50,11288 sqlite.db_import.create_gts-acars-us1.bufr,0.50,1519 sqlite.db_import.overwrite_gts-acars-us1.bufr,0.50,10878 sqlite.db_import.create_gts-amdar1.bufr,0.50,1617 sqlite.db_import.overwrite_gts-amdar1.bufr,0.50,11677 sqlite.db_import.create_gts-amdar2.bufr,0.50,1666 sqlite.db_import.overwrite_gts-amdar2.bufr,0.50,11988 sqlite.db_query.station_coords,0.50,5524 sqlite.db_query.stationdata_coords,0.50,3997 sqlite.db_query.data_coords,0.50,3288 sqlite.db_query.data_dt,0.50,3049 sqlite.db_query.data_varcode,0.58,7 dballe-7.21/bench/20160325103739_sqlitev7_ce1e01d5616ccb65bc2ce5d8b6f6210b53aae075.csv0000644000175000017500000000465213022043102022537 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6947 sqlitev7.db_query_parse.station_coords,0.50,5459 sqlitev7.db_query_parse.station_ident,0.50,6325 sqlitev7.db_query_parse.station_repmemo,0.50,5965 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6931 sqlitev7.db_query_parse.stationdata_coords,0.50,5405 sqlitev7.db_query_parse.stationdata_ident,0.50,6338 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6113 sqlitev7.db_query_parse.data_ana_id,0.50,6938 sqlitev7.db_query_parse.data_coords,0.50,5427 sqlitev7.db_query_parse.data_ident,0.50,6374 sqlitev7.db_query_parse.data_repmemo,0.50,6111 sqlitev7.db_query_parse.data_datetime,0.50,7087 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.51,51 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,67 sqlitev7.db_import.create_synop-evapo.bufr,0.50,93 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,86 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,39 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.51,40 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,673 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,1268 sqlitev7.db_import.create_synop-longname.bufr,0.50,186 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,238 sqlitev7.db_import.create_temp-gts1.bufr,0.50,99 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,200 sqlitev7.db_import.create_temp-gts2.bufr,0.50,40 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.51,64 sqlitev7.db_import.create_temp-gts3.bufr,0.50,373 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,693 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1010 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,1940 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,420 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,344 sqlitev7.db_import.create_gts-acars1.bufr,0.50,935 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,1959 sqlitev7.db_import.create_gts-acars2.bufr,0.50,705 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,1749 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,688 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,1661 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,741 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,2046 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,879 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,2133 sqlitev7.db_query.station_coords,0.50,4322 sqlitev7.db_query.stationdata_coords,0.50,3155 sqlitev7.db_query.data_coords,0.50,2596 sqlitev7.db_query.data_dt,0.50,2406 sqlitev7.db_query.data_varcode,0.52,6 dballe-7.21/bench/20160622104824_mysql_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000437313022043102021714 00000000000000mysql.db_query_parse.station_ana_id,0.50,2812 mysql.db_query_parse.station_coords,0.50,2513 mysql.db_query_parse.station_ident,0.50,2868 mysql.db_query_parse.station_repmemo,0.50,2877 mysql.db_query_parse.stationdata_ana_id,0.50,3215 mysql.db_query_parse.stationdata_coords,0.50,2529 mysql.db_query_parse.stationdata_ident,0.50,2992 mysql.db_query_parse.stationdata_repmemo,0.50,2869 mysql.db_query_parse.data_ana_id,0.50,3523 mysql.db_query_parse.data_coords,0.50,2608 mysql.db_query_parse.data_ident,0.50,3293 mysql.db_query_parse.data_repmemo,0.50,2947 mysql.db_query_parse.data_datetime,0.50,3833 mysql.db_import.create_synop-cloudbelow.bufr,0.60,3 mysql.db_import.overwrite_synop-cloudbelow.bufr,0.52,8 mysql.db_import.create_synop-evapo.bufr,0.64,4 mysql.db_import.overwrite_synop-evapo.bufr,0.51,10 mysql.db_import.create_synop-groundtemp.bufr,0.70,2 mysql.db_import.overwrite_synop-groundtemp.bufr,0.55,4 mysql.db_import.create_synop-gtscosmo.bufr,0.52,20 mysql.db_import.overwrite_synop-gtscosmo.bufr,0.50,171 mysql.db_import.create_synop-longname.bufr,0.51,8 mysql.db_import.overwrite_synop-longname.bufr,0.51,37 mysql.db_import.create_temp-gts1.bufr,0.54,4 mysql.db_import.overwrite_temp-gts1.bufr,0.50,42 mysql.db_import.create_temp-gts2.bufr,0.67,2 mysql.db_import.overwrite_temp-gts2.bufr,0.53,7 mysql.db_import.create_temp-gts3.bufr,0.52,14 mysql.db_import.overwrite_temp-gts3.bufr,0.50,100 mysql.db_import.create_temp-gtscosmo.bufr,0.50,14 mysql.db_import.overwrite_temp-gtscosmo.bufr,0.50,500 mysql.db_import.create_temp-timesig18.bufr,0.56,17 mysql.db_import.overwrite_temp-timesig18.bufr,0.50,67 mysql.db_import.create_gts-acars1.bufr,0.50,31 mysql.db_import.overwrite_gts-acars1.bufr,0.50,717 mysql.db_import.create_gts-acars2.bufr,0.50,29 mysql.db_import.overwrite_gts-acars2.bufr,0.50,731 mysql.db_import.create_gts-acars-us1.bufr,0.51,30 mysql.db_import.overwrite_gts-acars-us1.bufr,0.50,659 mysql.db_import.create_gts-amdar1.bufr,0.51,32 mysql.db_import.overwrite_gts-amdar1.bufr,0.50,628 mysql.db_import.create_gts-amdar2.bufr,0.51,31 mysql.db_import.overwrite_gts-amdar2.bufr,0.50,775 mysql.db_query.station_coords,0.50,2209 mysql.db_query.stationdata_coords,0.50,1255 mysql.db_query.data_coords,0.50,1213 mysql.db_query.data_dt,0.50,919 mysql.db_query.data_varcode,0.59,4 dballe-7.21/bench/20160622102712_mysql_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000437313022043102021706 00000000000000mysql.db_query_parse.station_ana_id,0.50,3162 mysql.db_query_parse.station_coords,0.50,2123 mysql.db_query_parse.station_ident,0.50,2813 mysql.db_query_parse.station_repmemo,0.50,2628 mysql.db_query_parse.stationdata_ana_id,0.50,3356 mysql.db_query_parse.stationdata_coords,0.50,2337 mysql.db_query_parse.stationdata_ident,0.50,3087 mysql.db_query_parse.stationdata_repmemo,0.50,2803 mysql.db_query_parse.data_ana_id,0.50,3193 mysql.db_query_parse.data_coords,0.50,2322 mysql.db_query_parse.data_ident,0.50,3074 mysql.db_query_parse.data_repmemo,0.50,2885 mysql.db_query_parse.data_datetime,0.50,3423 mysql.db_import.create_synop-cloudbelow.bufr,0.60,3 mysql.db_import.overwrite_synop-cloudbelow.bufr,0.54,8 mysql.db_import.create_synop-evapo.bufr,0.61,4 mysql.db_import.overwrite_synop-evapo.bufr,0.51,9 mysql.db_import.create_synop-groundtemp.bufr,0.70,2 mysql.db_import.overwrite_synop-groundtemp.bufr,0.51,3 mysql.db_import.create_synop-gtscosmo.bufr,0.50,19 mysql.db_import.overwrite_synop-gtscosmo.bufr,0.50,171 mysql.db_import.create_synop-longname.bufr,0.56,9 mysql.db_import.overwrite_synop-longname.bufr,0.50,27 mysql.db_import.create_temp-gts1.bufr,0.61,5 mysql.db_import.overwrite_temp-gts1.bufr,0.51,53 mysql.db_import.create_temp-gts2.bufr,0.69,2 mysql.db_import.overwrite_temp-gts2.bufr,0.51,6 mysql.db_import.create_temp-gts3.bufr,0.50,14 mysql.db_import.overwrite_temp-gts3.bufr,0.50,115 mysql.db_import.create_temp-gtscosmo.bufr,0.51,28 mysql.db_import.overwrite_temp-gtscosmo.bufr,0.50,524 mysql.db_import.create_temp-timesig18.bufr,0.52,15 mysql.db_import.overwrite_temp-timesig18.bufr,0.50,67 mysql.db_import.create_gts-acars1.bufr,0.51,31 mysql.db_import.overwrite_gts-acars1.bufr,0.50,676 mysql.db_import.create_gts-acars2.bufr,0.51,31 mysql.db_import.overwrite_gts-acars2.bufr,0.50,673 mysql.db_import.create_gts-acars-us1.bufr,0.51,30 mysql.db_import.overwrite_gts-acars-us1.bufr,0.50,637 mysql.db_import.create_gts-amdar1.bufr,0.51,30 mysql.db_import.overwrite_gts-amdar1.bufr,0.50,728 mysql.db_import.create_gts-amdar2.bufr,0.51,30 mysql.db_import.overwrite_gts-amdar2.bufr,0.50,595 mysql.db_query.station_coords,0.50,2036 mysql.db_query.stationdata_coords,0.50,1255 mysql.db_query.data_coords,0.50,1213 mysql.db_query.data_dt,0.50,1077 mysql.db_query.data_varcode,0.58,4 dballe-7.21/bench/20160622104824_postgresql_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000475313022043102022754 00000000000000postgresql.db_query_parse.station_ana_id,0.50,1364 postgresql.db_query_parse.station_coords,0.50,1086 postgresql.db_query_parse.station_ident,0.50,1370 postgresql.db_query_parse.station_repmemo,0.50,1046 postgresql.db_query_parse.stationdata_ana_id,0.50,1363 postgresql.db_query_parse.stationdata_coords,0.50,1409 postgresql.db_query_parse.stationdata_ident,0.50,1502 postgresql.db_query_parse.stationdata_repmemo,0.50,1090 postgresql.db_query_parse.data_ana_id,0.50,1288 postgresql.db_query_parse.data_coords,0.50,1492 postgresql.db_query_parse.data_ident,0.50,1431 postgresql.db_query_parse.data_repmemo,0.50,946 postgresql.db_query_parse.data_datetime,0.50,1534 postgresql.db_import.create_synop-cloudbelow.bufr,0.63,4 postgresql.db_import.overwrite_synop-cloudbelow.bufr,0.52,11 postgresql.db_import.create_synop-evapo.bufr,0.53,5 postgresql.db_import.overwrite_synop-evapo.bufr,0.50,14 postgresql.db_import.create_synop-groundtemp.bufr,0.63,3 postgresql.db_import.overwrite_synop-groundtemp.bufr,0.53,7 postgresql.db_import.create_synop-gtscosmo.bufr,0.50,28 postgresql.db_import.overwrite_synop-gtscosmo.bufr,0.50,227 postgresql.db_import.create_synop-longname.bufr,0.50,10 postgresql.db_import.overwrite_synop-longname.bufr,0.51,45 postgresql.db_import.create_temp-gts1.bufr,0.54,8 postgresql.db_import.overwrite_temp-gts1.bufr,0.50,78 postgresql.db_import.create_temp-gts2.bufr,0.50,3 postgresql.db_import.overwrite_temp-gts2.bufr,0.51,13 postgresql.db_import.create_temp-gts3.bufr,0.52,20 postgresql.db_import.overwrite_temp-gts3.bufr,0.50,157 postgresql.db_import.create_temp-gtscosmo.bufr,0.50,45 postgresql.db_import.overwrite_temp-gtscosmo.bufr,0.50,480 postgresql.db_import.create_temp-timesig18.bufr,0.52,19 postgresql.db_import.overwrite_temp-timesig18.bufr,0.50,77 postgresql.db_import.create_gts-acars1.bufr,0.51,47 postgresql.db_import.overwrite_gts-acars1.bufr,0.50,594 postgresql.db_import.create_gts-acars2.bufr,0.50,47 postgresql.db_import.overwrite_gts-acars2.bufr,0.50,535 postgresql.db_import.create_gts-acars-us1.bufr,0.51,50 postgresql.db_import.overwrite_gts-acars-us1.bufr,0.50,518 postgresql.db_import.create_gts-amdar1.bufr,0.51,50 postgresql.db_import.overwrite_gts-amdar1.bufr,0.50,536 postgresql.db_import.create_gts-amdar2.bufr,0.51,47 postgresql.db_import.overwrite_gts-amdar2.bufr,0.50,542 postgresql.db_query.station_coords,0.50,1542 postgresql.db_query.stationdata_coords,0.50,833 postgresql.db_query.data_coords,0.50,517 postgresql.db_query.data_dt,0.50,456 postgresql.db_query.data_varcode,0.59,5 dballe-7.21/bench/20160322132218_mysql_14c890a8f65dcc7c8c34dea121c5c608f98123f9.csv0000644000175000017500000000437213022043102021734 00000000000000mysql.db_query_parse.station_ana_id,0.50,3348 mysql.db_query_parse.station_coords,0.50,2335 mysql.db_query_parse.station_ident,0.50,2712 mysql.db_query_parse.station_repmemo,0.50,2686 mysql.db_query_parse.stationdata_ana_id,0.50,2582 mysql.db_query_parse.stationdata_coords,0.50,2228 mysql.db_query_parse.stationdata_ident,0.50,2901 mysql.db_query_parse.stationdata_repmemo,0.50,2539 mysql.db_query_parse.data_ana_id,0.50,2858 mysql.db_query_parse.data_coords,0.50,2154 mysql.db_query_parse.data_ident,0.50,2579 mysql.db_query_parse.data_repmemo,0.50,2202 mysql.db_query_parse.data_datetime,0.50,3011 mysql.db_import.create_synop-cloudbelow.bufr,0.66,3 mysql.db_import.overwrite_synop-cloudbelow.bufr,0.50,6 mysql.db_import.create_synop-evapo.bufr,0.63,4 mysql.db_import.overwrite_synop-evapo.bufr,0.53,10 mysql.db_import.create_synop-groundtemp.bufr,0.72,2 mysql.db_import.overwrite_synop-groundtemp.bufr,0.53,3 mysql.db_import.create_synop-gtscosmo.bufr,0.51,20 mysql.db_import.overwrite_synop-gtscosmo.bufr,0.50,172 mysql.db_import.create_synop-longname.bufr,0.53,9 mysql.db_import.overwrite_synop-longname.bufr,0.51,31 mysql.db_import.create_temp-gts1.bufr,0.59,5 mysql.db_import.overwrite_temp-gts1.bufr,0.51,47 mysql.db_import.create_temp-gts2.bufr,0.55,1 mysql.db_import.overwrite_temp-gts2.bufr,0.54,5 mysql.db_import.create_temp-gts3.bufr,0.52,15 mysql.db_import.overwrite_temp-gts3.bufr,0.50,97 mysql.db_import.create_temp-gtscosmo.bufr,0.50,15 mysql.db_import.overwrite_temp-gtscosmo.bufr,0.50,493 mysql.db_import.create_temp-timesig18.bufr,0.62,12 mysql.db_import.overwrite_temp-timesig18.bufr,0.50,77 mysql.db_import.create_gts-acars1.bufr,0.54,25 mysql.db_import.overwrite_gts-acars1.bufr,0.50,615 mysql.db_import.create_gts-acars2.bufr,0.51,30 mysql.db_import.overwrite_gts-acars2.bufr,0.50,602 mysql.db_import.create_gts-acars-us1.bufr,0.51,29 mysql.db_import.overwrite_gts-acars-us1.bufr,0.50,678 mysql.db_import.create_gts-amdar1.bufr,0.50,31 mysql.db_import.overwrite_gts-amdar1.bufr,0.50,702 mysql.db_import.create_gts-amdar2.bufr,0.51,30 mysql.db_import.overwrite_gts-amdar2.bufr,0.50,631 mysql.db_query.station_coords,0.50,1921 mysql.db_query.stationdata_coords,0.50,1202 mysql.db_query.data_coords,0.50,1270 mysql.db_query.data_dt,0.50,889 mysql.db_query.data_varcode,0.57,4 dballe-7.21/bench/20160323124925_sqlitev7_a3d1e3ec15ce9d8185e831110efadb9de3cdb104.csv0000644000175000017500000000467613022043102022631 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6853 sqlitev7.db_query_parse.station_coords,0.50,5448 sqlitev7.db_query_parse.station_ident,0.50,6255 sqlitev7.db_query_parse.station_repmemo,0.50,6102 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6847 sqlitev7.db_query_parse.stationdata_coords,0.50,5485 sqlitev7.db_query_parse.stationdata_ident,0.50,6229 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6157 sqlitev7.db_query_parse.data_ana_id,0.50,6918 sqlitev7.db_query_parse.data_coords,0.50,5501 sqlitev7.db_query_parse.data_ident,0.50,6359 sqlitev7.db_query_parse.data_repmemo,0.50,6208 sqlitev7.db_query_parse.data_datetime,0.50,7110 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.51,52 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,397 sqlitev7.db_import.create_synop-evapo.bufr,0.50,89 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,488 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,38 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,256 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,852 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,6252 sqlitev7.db_import.create_synop-longname.bufr,0.50,180 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1398 sqlitev7.db_import.create_temp-gts1.bufr,0.50,117 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,1007 sqlitev7.db_import.create_temp-gts2.bufr,0.51,48 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,336 sqlitev7.db_import.create_temp-gts3.bufr,0.50,475 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,3456 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1544 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,12629 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,433 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,2729 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1738 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,14979 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1754 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,14892 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1677 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,14285 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1791 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,15139 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1823 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,14875 sqlitev7.db_query.station_coords,0.50,5391 sqlitev7.db_query.stationdata_coords,0.50,3885 sqlitev7.db_query.data_coords,0.50,3299 sqlitev7.db_query.data_dt,0.50,3077 sqlitev7.db_query.data_varcode,0.51,7 dballe-7.21/bench/20160327145541_sqlitev7_5ceef6ca7e0cca8bd8be7729c2c73a52a1a3c41f.csv0000644000175000017500000000467613022043102023001 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,6834 sqlitev7.db_query_parse.station_coords,0.50,5578 sqlitev7.db_query_parse.station_ident,0.50,6440 sqlitev7.db_query_parse.station_repmemo,0.50,6262 sqlitev7.db_query_parse.stationdata_ana_id,0.50,6732 sqlitev7.db_query_parse.stationdata_coords,0.50,5536 sqlitev7.db_query_parse.stationdata_ident,0.50,6464 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6129 sqlitev7.db_query_parse.data_ana_id,0.50,6971 sqlitev7.db_query_parse.data_coords,0.50,5545 sqlitev7.db_query_parse.data_ident,0.50,6459 sqlitev7.db_query_parse.data_repmemo,0.50,6256 sqlitev7.db_query_parse.data_datetime,0.50,7175 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,71 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,543 sqlitev7.db_import.create_synop-evapo.bufr,0.50,103 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,719 sqlitev7.db_import.create_synop-groundtemp.bufr,0.50,47 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,343 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,767 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5821 sqlitev7.db_import.create_synop-longname.bufr,0.50,241 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1794 sqlitev7.db_import.create_temp-gts1.bufr,0.50,100 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,873 sqlitev7.db_import.create_temp-gts2.bufr,0.51,41 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,276 sqlitev7.db_import.create_temp-gts3.bufr,0.50,391 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,3070 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1209 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,12907 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,598 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3586 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1350 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,15986 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1350 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,15870 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1300 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,15442 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1382 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,16616 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1405 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,17067 sqlitev7.db_query.station_coords,0.50,5276 sqlitev7.db_query.stationdata_coords,0.50,4174 sqlitev7.db_query.data_coords,0.50,3334 sqlitev7.db_query.data_dt,0.50,3083 sqlitev7.db_query.data_varcode,0.54,8 dballe-7.21/bench/20160322132218_mem_14c890a8f65dcc7c8c34dea121c5c608f98123f9.csv0000644000175000017500000000440413022043102021341 00000000000000mem.db_query_parse.station_ana_id,0.50,1048802 mem.db_query_parse.station_coords,0.50,899410 mem.db_query_parse.station_ident,0.50,949443 mem.db_query_parse.station_repmemo,0.50,885205 mem.db_query_parse.stationdata_ana_id,0.50,1017657 mem.db_query_parse.stationdata_coords,0.50,859976 mem.db_query_parse.stationdata_ident,0.50,918978 mem.db_query_parse.stationdata_repmemo,0.50,870573 mem.db_query_parse.data_ana_id,0.50,1013819 mem.db_query_parse.data_coords,0.50,885726 mem.db_query_parse.data_ident,0.50,897785 mem.db_query_parse.data_repmemo,0.50,889100 mem.db_query_parse.data_datetime,0.50,988048 mem.db_import.create_synop-cloudbelow.bufr,0.50,508 mem.db_import.overwrite_synop-cloudbelow.bufr,0.50,548 mem.db_import.create_synop-evapo.bufr,0.50,611 mem.db_import.overwrite_synop-evapo.bufr,0.50,621 mem.db_import.create_synop-groundtemp.bufr,0.50,268 mem.db_import.overwrite_synop-groundtemp.bufr,0.50,278 mem.db_import.create_synop-gtscosmo.bufr,0.50,14412 mem.db_import.overwrite_synop-gtscosmo.bufr,0.50,14757 mem.db_import.create_synop-longname.bufr,0.50,2096 mem.db_import.overwrite_synop-longname.bufr,0.50,2327 mem.db_import.create_temp-gts1.bufr,0.50,632 mem.db_import.overwrite_temp-gts1.bufr,0.50,784 mem.db_import.create_temp-gts2.bufr,0.50,217 mem.db_import.overwrite_temp-gts2.bufr,0.50,227 mem.db_import.create_temp-gts3.bufr,0.50,3811 mem.db_import.overwrite_temp-gts3.bufr,0.50,4508 mem.db_import.create_temp-gtscosmo.bufr,0.50,34969 mem.db_import.overwrite_temp-gtscosmo.bufr,0.50,42884 mem.db_import.create_temp-timesig18.bufr,0.50,8312 mem.db_import.overwrite_temp-timesig18.bufr,0.50,10145 mem.db_import.create_gts-acars1.bufr,0.50,45595 mem.db_import.overwrite_gts-acars1.bufr,0.50,57417 mem.db_import.create_gts-acars2.bufr,0.50,45000 mem.db_import.overwrite_gts-acars2.bufr,0.50,56815 mem.db_import.create_gts-acars-us1.bufr,0.50,34763 mem.db_import.overwrite_gts-acars-us1.bufr,0.50,43814 mem.db_import.create_gts-amdar1.bufr,0.50,51315 mem.db_import.overwrite_gts-amdar1.bufr,0.50,65905 mem.db_import.create_gts-amdar2.bufr,0.50,59476 mem.db_import.overwrite_gts-amdar2.bufr,0.50,77038 mem.db_query.station_coords,0.50,640339 mem.db_query.stationdata_coords,0.50,812454 mem.db_query.data_coords,0.50,743300 mem.db_query.data_dt,0.50,645366 mem.db_query.data_varcode,0.51,37 dballe-7.21/bench/20160311181951_sqlite_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000453213022043102022016 00000000000000sqlite.db_query_parse.station_ana_id,0.50,7077 sqlite.db_query_parse.station_coords,0.50,5629 sqlite.db_query_parse.station_ident,0.50,6629 sqlite.db_query_parse.station_repmemo,0.50,5454 sqlite.db_query_parse.stationdata_ana_id,0.50,7006 sqlite.db_query_parse.stationdata_coords,0.50,5583 sqlite.db_query_parse.stationdata_ident,0.50,6692 sqlite.db_query_parse.stationdata_repmemo,0.50,5510 sqlite.db_query_parse.data_ana_id,0.50,7203 sqlite.db_query_parse.data_coords,0.50,5618 sqlite.db_query_parse.data_ident,0.50,6697 sqlite.db_query_parse.data_repmemo,0.50,5506 sqlite.db_query_parse.data_datetime,0.50,7383 sqlite.db_import.create_synop-cloudbelow.bufr,0.51,38 sqlite.db_import.overwrite_synop-cloudbelow.bufr,0.50,211 sqlite.db_import.create_synop-evapo.bufr,0.51,62 sqlite.db_import.overwrite_synop-evapo.bufr,0.50,269 sqlite.db_import.create_synop-groundtemp.bufr,0.51,27 sqlite.db_import.overwrite_synop-groundtemp.bufr,0.50,138 sqlite.db_import.create_synop-gtscosmo.bufr,0.50,688 sqlite.db_import.overwrite_synop-gtscosmo.bufr,0.50,4112 sqlite.db_import.create_synop-longname.bufr,0.50,134 sqlite.db_import.overwrite_synop-longname.bufr,0.50,737 sqlite.db_import.create_temp-gts1.bufr,0.50,85 sqlite.db_import.overwrite_temp-gts1.bufr,0.50,617 sqlite.db_import.create_temp-gts2.bufr,0.51,35 sqlite.db_import.overwrite_temp-gts2.bufr,0.50,202 sqlite.db_import.create_temp-gts3.bufr,0.50,372 sqlite.db_import.overwrite_temp-gts3.bufr,0.50,2160 sqlite.db_import.create_temp-gtscosmo.bufr,0.50,1247 sqlite.db_import.overwrite_temp-gtscosmo.bufr,0.50,9051 sqlite.db_import.create_temp-timesig18.bufr,0.50,304 sqlite.db_import.overwrite_temp-timesig18.bufr,0.50,1412 sqlite.db_import.create_gts-acars1.bufr,0.50,1413 sqlite.db_import.overwrite_gts-acars1.bufr,0.50,11286 sqlite.db_import.create_gts-acars2.bufr,0.50,1422 sqlite.db_import.overwrite_gts-acars2.bufr,0.50,11606 sqlite.db_import.create_gts-acars-us1.bufr,0.50,1353 sqlite.db_import.overwrite_gts-acars-us1.bufr,0.50,10924 sqlite.db_import.create_gts-amdar1.bufr,0.50,1452 sqlite.db_import.overwrite_gts-amdar1.bufr,0.50,11655 sqlite.db_import.create_gts-amdar2.bufr,0.50,1456 sqlite.db_import.overwrite_gts-amdar2.bufr,0.50,11949 sqlite.db_query.station_coords,0.50,5511 sqlite.db_query.stationdata_coords,0.50,4020 sqlite.db_query.data_coords,0.50,3331 sqlite.db_query.data_dt,0.50,3111 sqlite.db_query.data_varcode,0.58,7 dballe-7.21/bench/20160328124829_postgresqlv7_3bb9fd9f2c2acf2dec14e800425fef9971b953d1.csv0000644000175000017500000000512313022043102023475 00000000000000postgresqlv7.db_query_parse.station_ana_id,0.50,1929 postgresqlv7.db_query_parse.station_coords,0.50,1483 postgresqlv7.db_query_parse.station_ident,0.50,1703 postgresqlv7.db_query_parse.station_repmemo,0.50,1765 postgresqlv7.db_query_parse.stationdata_ana_id,0.50,1868 postgresqlv7.db_query_parse.stationdata_coords,0.50,1476 postgresqlv7.db_query_parse.stationdata_ident,0.50,1713 postgresqlv7.db_query_parse.stationdata_repmemo,0.50,1751 postgresqlv7.db_query_parse.data_ana_id,0.50,1990 postgresqlv7.db_query_parse.data_coords,0.50,1536 postgresqlv7.db_query_parse.data_ident,0.50,1724 postgresqlv7.db_query_parse.data_repmemo,0.50,1695 postgresqlv7.db_query_parse.data_datetime,0.50,1980 postgresqlv7.db_import.create_synop-cloudbelow.bufr,0.59,6 postgresqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.50,35 postgresqlv7.db_import.create_synop-evapo.bufr,0.57,8 postgresqlv7.db_import.overwrite_synop-evapo.bufr,0.51,52 postgresqlv7.db_import.create_synop-groundtemp.bufr,0.57,4 postgresqlv7.db_import.overwrite_synop-groundtemp.bufr,0.52,21 postgresqlv7.db_import.create_synop-gtscosmo.bufr,0.51,28 postgresqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,311 postgresqlv7.db_import.create_synop-longname.bufr,0.50,10 postgresqlv7.db_import.overwrite_synop-longname.bufr,0.50,156 postgresqlv7.db_import.create_temp-gts1.bufr,0.53,8 postgresqlv7.db_import.overwrite_temp-gts1.bufr,0.50,80 postgresqlv7.db_import.create_temp-gts2.bufr,0.67,4 postgresqlv7.db_import.overwrite_temp-gts2.bufr,0.51,19 postgresqlv7.db_import.create_temp-gts3.bufr,0.51,18 postgresqlv7.db_import.overwrite_temp-gts3.bufr,0.50,165 postgresqlv7.db_import.create_temp-gtscosmo.bufr,0.51,43 postgresqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,863 postgresqlv7.db_import.create_temp-timesig18.bufr,0.51,22 postgresqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,247 postgresqlv7.db_import.create_gts-acars1.bufr,0.50,44 postgresqlv7.db_import.overwrite_gts-acars1.bufr,0.50,1066 postgresqlv7.db_import.create_gts-acars2.bufr,0.51,46 postgresqlv7.db_import.overwrite_gts-acars2.bufr,0.50,1310 postgresqlv7.db_import.create_gts-acars-us1.bufr,0.51,44 postgresqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,1140 postgresqlv7.db_import.create_gts-amdar1.bufr,0.51,44 postgresqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,943 postgresqlv7.db_import.create_gts-amdar2.bufr,0.51,46 postgresqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,1410 postgresqlv7.db_query.station_coords,0.50,1453 postgresqlv7.db_query.stationdata_coords,0.50,999 postgresqlv7.db_query.data_coords,0.50,598 postgresqlv7.db_query.data_dt,0.50,546 postgresqlv7.db_query.data_varcode,0.54,5 dballe-7.21/bench/20160322132218_postgresql_14c890a8f65dcc7c8c34dea121c5c608f98123f9.csv0000644000175000017500000000475413022043102022776 00000000000000postgresql.db_query_parse.station_ana_id,0.50,2022 postgresql.db_query_parse.station_coords,0.50,1534 postgresql.db_query_parse.station_ident,0.50,1713 postgresql.db_query_parse.station_repmemo,0.50,1088 postgresql.db_query_parse.stationdata_ana_id,0.50,1956 postgresql.db_query_parse.stationdata_coords,0.50,1519 postgresql.db_query_parse.stationdata_ident,0.50,1772 postgresql.db_query_parse.stationdata_repmemo,0.50,1099 postgresql.db_query_parse.data_ana_id,0.50,1944 postgresql.db_query_parse.data_coords,0.50,1560 postgresql.db_query_parse.data_ident,0.50,1779 postgresql.db_query_parse.data_repmemo,0.50,1092 postgresql.db_query_parse.data_datetime,0.50,2102 postgresql.db_import.create_synop-cloudbelow.bufr,0.60,4 postgresql.db_import.overwrite_synop-cloudbelow.bufr,0.53,11 postgresql.db_import.create_synop-evapo.bufr,0.53,5 postgresql.db_import.overwrite_synop-evapo.bufr,0.52,16 postgresql.db_import.create_synop-groundtemp.bufr,0.63,3 postgresql.db_import.overwrite_synop-groundtemp.bufr,0.50,7 postgresql.db_import.create_synop-gtscosmo.bufr,0.51,27 postgresql.db_import.overwrite_synop-gtscosmo.bufr,0.50,251 postgresql.db_import.create_synop-longname.bufr,0.54,10 postgresql.db_import.overwrite_synop-longname.bufr,0.51,41 postgresql.db_import.create_temp-gts1.bufr,0.56,8 postgresql.db_import.overwrite_temp-gts1.bufr,0.50,78 postgresql.db_import.create_temp-gts2.bufr,0.53,3 postgresql.db_import.overwrite_temp-gts2.bufr,0.52,14 postgresql.db_import.create_temp-gts3.bufr,0.53,18 postgresql.db_import.overwrite_temp-gts3.bufr,0.50,155 postgresql.db_import.create_temp-gtscosmo.bufr,0.51,39 postgresql.db_import.overwrite_temp-gtscosmo.bufr,0.50,528 postgresql.db_import.create_temp-timesig18.bufr,0.51,17 postgresql.db_import.overwrite_temp-timesig18.bufr,0.51,74 postgresql.db_import.create_gts-acars1.bufr,0.50,42 postgresql.db_import.overwrite_gts-acars1.bufr,0.50,570 postgresql.db_import.create_gts-acars2.bufr,0.51,44 postgresql.db_import.overwrite_gts-acars2.bufr,0.50,553 postgresql.db_import.create_gts-acars-us1.bufr,0.51,43 postgresql.db_import.overwrite_gts-acars-us1.bufr,0.50,549 postgresql.db_import.create_gts-amdar1.bufr,0.50,43 postgresql.db_import.overwrite_gts-amdar1.bufr,0.50,520 postgresql.db_import.create_gts-amdar2.bufr,0.50,45 postgresql.db_import.overwrite_gts-amdar2.bufr,0.50,535 postgresql.db_query.station_coords,0.50,1523 postgresql.db_query.stationdata_coords,0.50,878 postgresql.db_query.data_coords,0.50,575 postgresql.db_query.data_dt,0.50,533 postgresql.db_query.data_varcode,0.60,5 dballe-7.21/bench/20160322183338_sqlitev7_7988e1524eca004b36b0879cd89e2dc2a322f097.csv0000644000175000017500000000467213022043102022216 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7340 sqlitev7.db_query_parse.station_coords,0.50,5804 sqlitev7.db_query_parse.station_ident,0.50,6761 sqlitev7.db_query_parse.station_repmemo,0.50,5640 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7450 sqlitev7.db_query_parse.stationdata_coords,0.50,5751 sqlitev7.db_query_parse.stationdata_ident,0.50,6747 sqlitev7.db_query_parse.stationdata_repmemo,0.50,5639 sqlitev7.db_query_parse.data_ana_id,0.50,7492 sqlitev7.db_query_parse.data_coords,0.50,5766 sqlitev7.db_query_parse.data_ident,0.50,6807 sqlitev7.db_query_parse.data_repmemo,0.50,5644 sqlitev7.db_query_parse.data_datetime,0.50,7646 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.51,44 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,242 sqlitev7.db_import.create_synop-evapo.bufr,0.51,73 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,303 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,31 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,155 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,767 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,4105 sqlitev7.db_import.create_synop-longname.bufr,0.50,156 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,860 sqlitev7.db_import.create_temp-gts1.bufr,0.50,91 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,599 sqlitev7.db_import.create_temp-gts2.bufr,0.50,38 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,207 sqlitev7.db_import.create_temp-gts3.bufr,0.50,405 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2127 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1385 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,8578 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,379 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,1836 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1598 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,10999 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1608 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,11305 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1545 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,10678 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1619 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,11374 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1659 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,11620 sqlitev7.db_query.station_coords,0.50,5600 sqlitev7.db_query.stationdata_coords,0.50,4040 sqlitev7.db_query.data_coords,0.50,3349 sqlitev7.db_query.data_dt,0.50,3134 sqlitev7.db_query.data_varcode,0.55,7 dballe-7.21/bench/20160327203123_postgresqlv7_a6625b2f642d5979c24af0f8c1fd8c1f177377fe.csv0000644000175000017500000000512413022043102023253 00000000000000postgresqlv7.db_query_parse.station_ana_id,0.50,1872 postgresqlv7.db_query_parse.station_coords,0.50,1503 postgresqlv7.db_query_parse.station_ident,0.50,1653 postgresqlv7.db_query_parse.station_repmemo,0.50,1733 postgresqlv7.db_query_parse.stationdata_ana_id,0.50,1879 postgresqlv7.db_query_parse.stationdata_coords,0.50,1537 postgresqlv7.db_query_parse.stationdata_ident,0.50,1690 postgresqlv7.db_query_parse.stationdata_repmemo,0.50,1744 postgresqlv7.db_query_parse.data_ana_id,0.50,1838 postgresqlv7.db_query_parse.data_coords,0.50,1463 postgresqlv7.db_query_parse.data_ident,0.50,1671 postgresqlv7.db_query_parse.data_repmemo,0.50,1694 postgresqlv7.db_query_parse.data_datetime,0.50,1988 postgresqlv7.db_import.create_synop-cloudbelow.bufr,0.51,5 postgresqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.51,53 postgresqlv7.db_import.create_synop-evapo.bufr,0.51,7 postgresqlv7.db_import.overwrite_synop-evapo.bufr,0.50,76 postgresqlv7.db_import.create_synop-groundtemp.bufr,0.54,4 postgresqlv7.db_import.overwrite_synop-groundtemp.bufr,0.51,40 postgresqlv7.db_import.create_synop-gtscosmo.bufr,0.51,28 postgresqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,313 postgresqlv7.db_import.create_synop-longname.bufr,0.52,13 postgresqlv7.db_import.overwrite_synop-longname.bufr,0.50,180 postgresqlv7.db_import.create_temp-gts1.bufr,0.51,8 postgresqlv7.db_import.overwrite_temp-gts1.bufr,0.50,74 postgresqlv7.db_import.create_temp-gts2.bufr,0.65,4 postgresqlv7.db_import.overwrite_temp-gts2.bufr,0.51,19 postgresqlv7.db_import.create_temp-gts3.bufr,0.50,17 postgresqlv7.db_import.overwrite_temp-gts3.bufr,0.50,199 postgresqlv7.db_import.create_temp-gtscosmo.bufr,0.51,42 postgresqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,939 postgresqlv7.db_import.create_temp-timesig18.bufr,0.51,24 postgresqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,272 postgresqlv7.db_import.create_gts-acars1.bufr,0.50,43 postgresqlv7.db_import.overwrite_gts-acars1.bufr,0.50,1353 postgresqlv7.db_import.create_gts-acars2.bufr,0.50,46 postgresqlv7.db_import.overwrite_gts-acars2.bufr,0.50,1318 postgresqlv7.db_import.create_gts-acars-us1.bufr,0.51,45 postgresqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,1304 postgresqlv7.db_import.create_gts-amdar1.bufr,0.51,46 postgresqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,1076 postgresqlv7.db_import.create_gts-amdar2.bufr,0.51,47 postgresqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,1227 postgresqlv7.db_query.station_coords,0.50,1481 postgresqlv7.db_query.stationdata_coords,0.50,961 postgresqlv7.db_query.data_coords,0.50,594 postgresqlv7.db_query.data_dt,0.50,559 postgresqlv7.db_query.data_varcode,0.51,5 dballe-7.21/bench/20160327203227_postgresql_a6625b2f642d5979c24af0f8c1fd8c1f177377fe.csv0000644000175000017500000000475413022043102023013 00000000000000postgresql.db_query_parse.station_ana_id,0.50,1952 postgresql.db_query_parse.station_coords,0.50,1548 postgresql.db_query_parse.station_ident,0.50,1798 postgresql.db_query_parse.station_repmemo,0.50,1087 postgresql.db_query_parse.stationdata_ana_id,0.50,1914 postgresql.db_query_parse.stationdata_coords,0.50,1512 postgresql.db_query_parse.stationdata_ident,0.50,1709 postgresql.db_query_parse.stationdata_repmemo,0.50,1098 postgresql.db_query_parse.data_ana_id,0.50,2011 postgresql.db_query_parse.data_coords,0.50,1530 postgresql.db_query_parse.data_ident,0.50,1784 postgresql.db_query_parse.data_repmemo,0.50,1068 postgresql.db_query_parse.data_datetime,0.50,2001 postgresql.db_import.create_synop-cloudbelow.bufr,0.63,4 postgresql.db_import.overwrite_synop-cloudbelow.bufr,0.52,12 postgresql.db_import.create_synop-evapo.bufr,0.56,5 postgresql.db_import.overwrite_synop-evapo.bufr,0.53,16 postgresql.db_import.create_synop-groundtemp.bufr,0.66,3 postgresql.db_import.overwrite_synop-groundtemp.bufr,0.52,7 postgresql.db_import.create_synop-gtscosmo.bufr,0.51,27 postgresql.db_import.overwrite_synop-gtscosmo.bufr,0.50,233 postgresql.db_import.create_synop-longname.bufr,0.53,10 postgresql.db_import.overwrite_synop-longname.bufr,0.50,44 postgresql.db_import.create_temp-gts1.bufr,0.54,8 postgresql.db_import.overwrite_temp-gts1.bufr,0.50,81 postgresql.db_import.create_temp-gts2.bufr,0.52,3 postgresql.db_import.overwrite_temp-gts2.bufr,0.51,13 postgresql.db_import.create_temp-gts3.bufr,0.51,17 postgresql.db_import.overwrite_temp-gts3.bufr,0.50,169 postgresql.db_import.create_temp-gtscosmo.bufr,0.51,40 postgresql.db_import.overwrite_temp-gtscosmo.bufr,0.50,536 postgresql.db_import.create_temp-timesig18.bufr,0.52,17 postgresql.db_import.overwrite_temp-timesig18.bufr,0.50,73 postgresql.db_import.create_gts-acars1.bufr,0.50,44 postgresql.db_import.overwrite_gts-acars1.bufr,0.50,551 postgresql.db_import.create_gts-acars2.bufr,0.50,43 postgresql.db_import.overwrite_gts-acars2.bufr,0.50,568 postgresql.db_import.create_gts-acars-us1.bufr,0.50,41 postgresql.db_import.overwrite_gts-acars-us1.bufr,0.50,532 postgresql.db_import.create_gts-amdar1.bufr,0.50,44 postgresql.db_import.overwrite_gts-amdar1.bufr,0.50,555 postgresql.db_import.create_gts-amdar2.bufr,0.50,43 postgresql.db_import.overwrite_gts-amdar2.bufr,0.50,567 postgresql.db_query.station_coords,0.50,1498 postgresql.db_query.stationdata_coords,0.50,834 postgresql.db_query.data_coords,0.50,579 postgresql.db_query.data_dt,0.50,525 postgresql.db_query.data_varcode,0.60,5 dballe-7.21/bench/20160622104824_postgresqlv7_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000512513022043102023223 00000000000000postgresqlv7.db_query_parse.station_ana_id,0.50,2242 postgresqlv7.db_query_parse.station_coords,0.50,1883 postgresqlv7.db_query_parse.station_ident,0.50,2209 postgresqlv7.db_query_parse.station_repmemo,0.50,2209 postgresqlv7.db_query_parse.stationdata_ana_id,0.50,2314 postgresqlv7.db_query_parse.stationdata_coords,0.50,1895 postgresqlv7.db_query_parse.stationdata_ident,0.50,2202 postgresqlv7.db_query_parse.stationdata_repmemo,0.50,2264 postgresqlv7.db_query_parse.data_ana_id,0.50,2261 postgresqlv7.db_query_parse.data_coords,0.50,1913 postgresqlv7.db_query_parse.data_ident,0.50,2104 postgresqlv7.db_query_parse.data_repmemo,0.50,2395 postgresqlv7.db_query_parse.data_datetime,0.50,2939 postgresqlv7.db_import.create_synop-cloudbelow.bufr,0.52,6 postgresqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.51,36 postgresqlv7.db_import.create_synop-evapo.bufr,0.55,8 postgresqlv7.db_import.overwrite_synop-evapo.bufr,0.50,51 postgresqlv7.db_import.create_synop-groundtemp.bufr,0.56,4 postgresqlv7.db_import.overwrite_synop-groundtemp.bufr,0.51,20 postgresqlv7.db_import.create_synop-gtscosmo.bufr,0.50,34 postgresqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,308 postgresqlv7.db_import.create_synop-longname.bufr,0.50,15 postgresqlv7.db_import.overwrite_synop-longname.bufr,0.50,157 postgresqlv7.db_import.create_temp-gts1.bufr,0.50,8 postgresqlv7.db_import.overwrite_temp-gts1.bufr,0.50,76 postgresqlv7.db_import.create_temp-gts2.bufr,0.62,4 postgresqlv7.db_import.overwrite_temp-gts2.bufr,0.52,17 postgresqlv7.db_import.create_temp-gts3.bufr,0.50,22 postgresqlv7.db_import.overwrite_temp-gts3.bufr,0.50,189 postgresqlv7.db_import.create_temp-gtscosmo.bufr,0.51,49 postgresqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,776 postgresqlv7.db_import.create_temp-timesig18.bufr,0.51,27 postgresqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,237 postgresqlv7.db_import.create_gts-acars1.bufr,0.50,54 postgresqlv7.db_import.overwrite_gts-acars1.bufr,0.50,1361 postgresqlv7.db_import.create_gts-acars2.bufr,0.51,52 postgresqlv7.db_import.overwrite_gts-acars2.bufr,0.50,1182 postgresqlv7.db_import.create_gts-acars-us1.bufr,0.51,53 postgresqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,1117 postgresqlv7.db_import.create_gts-amdar1.bufr,0.50,51 postgresqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,1347 postgresqlv7.db_import.create_gts-amdar2.bufr,0.51,52 postgresqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,1239 postgresqlv7.db_query.station_coords,0.50,1856 postgresqlv7.db_query.stationdata_coords,0.50,1073 postgresqlv7.db_query.data_coords,0.50,647 postgresqlv7.db_query.data_dt,0.50,560 postgresqlv7.db_query.data_varcode,0.55,5 dballe-7.21/bench/20160311184535_mysql_c966a1de4e52ff6da991b7f104396d475a0e1385.csv0000644000175000017500000000437313022043102021666 00000000000000mysql.db_query_parse.station_ana_id,0.50,3121 mysql.db_query_parse.station_coords,0.50,2182 mysql.db_query_parse.station_ident,0.50,2803 mysql.db_query_parse.station_repmemo,0.50,2489 mysql.db_query_parse.stationdata_ana_id,0.50,3197 mysql.db_query_parse.stationdata_coords,0.50,2359 mysql.db_query_parse.stationdata_ident,0.50,2560 mysql.db_query_parse.stationdata_repmemo,0.50,2417 mysql.db_query_parse.data_ana_id,0.50,3013 mysql.db_query_parse.data_coords,0.50,1990 mysql.db_query_parse.data_ident,0.50,2701 mysql.db_query_parse.data_repmemo,0.50,2545 mysql.db_query_parse.data_datetime,0.50,3192 mysql.db_import.create_synop-cloudbelow.bufr,0.62,3 mysql.db_import.overwrite_synop-cloudbelow.bufr,0.53,7 mysql.db_import.create_synop-evapo.bufr,0.62,4 mysql.db_import.overwrite_synop-evapo.bufr,0.50,9 mysql.db_import.create_synop-groundtemp.bufr,0.72,2 mysql.db_import.overwrite_synop-groundtemp.bufr,0.50,3 mysql.db_import.create_synop-gtscosmo.bufr,0.51,20 mysql.db_import.overwrite_synop-gtscosmo.bufr,0.50,157 mysql.db_import.create_synop-longname.bufr,0.53,8 mysql.db_import.overwrite_synop-longname.bufr,0.50,29 mysql.db_import.create_temp-gts1.bufr,0.59,5 mysql.db_import.overwrite_temp-gts1.bufr,0.50,40 mysql.db_import.create_temp-gts2.bufr,0.62,2 mysql.db_import.overwrite_temp-gts2.bufr,0.54,6 mysql.db_import.create_temp-gts3.bufr,0.52,13 mysql.db_import.overwrite_temp-gts3.bufr,0.50,108 mysql.db_import.create_temp-gtscosmo.bufr,0.55,25 mysql.db_import.overwrite_temp-gtscosmo.bufr,0.50,487 mysql.db_import.create_temp-timesig18.bufr,0.51,15 mysql.db_import.overwrite_temp-timesig18.bufr,0.51,74 mysql.db_import.create_gts-acars1.bufr,0.50,29 mysql.db_import.overwrite_gts-acars1.bufr,0.50,695 mysql.db_import.create_gts-acars2.bufr,0.50,30 mysql.db_import.overwrite_gts-acars2.bufr,0.50,616 mysql.db_import.create_gts-acars-us1.bufr,0.50,28 mysql.db_import.overwrite_gts-acars-us1.bufr,0.50,619 mysql.db_import.create_gts-amdar1.bufr,0.50,30 mysql.db_import.overwrite_gts-amdar1.bufr,0.50,571 mysql.db_import.create_gts-amdar2.bufr,0.51,30 mysql.db_import.overwrite_gts-amdar2.bufr,0.50,567 mysql.db_query.station_coords,0.50,1819 mysql.db_query.stationdata_coords,0.50,1139 mysql.db_query.data_coords,0.50,1107 mysql.db_query.data_dt,0.50,1043 mysql.db_query.data_varcode,0.61,4 dballe-7.21/bench/20160404211334_postgresqlv7_7e9a0f3232841235f05123ed68e4a2d98592d5ca.csv0000644000175000017500000000512513022043102023011 00000000000000postgresqlv7.db_query_parse.station_ana_id,0.50,2437 postgresqlv7.db_query_parse.station_coords,0.50,1875 postgresqlv7.db_query_parse.station_ident,0.50,2308 postgresqlv7.db_query_parse.station_repmemo,0.50,2408 postgresqlv7.db_query_parse.stationdata_ana_id,0.50,2495 postgresqlv7.db_query_parse.stationdata_coords,0.50,2009 postgresqlv7.db_query_parse.stationdata_ident,0.50,2425 postgresqlv7.db_query_parse.stationdata_repmemo,0.50,2430 postgresqlv7.db_query_parse.data_ana_id,0.50,2525 postgresqlv7.db_query_parse.data_coords,0.50,2115 postgresqlv7.db_query_parse.data_ident,0.50,2243 postgresqlv7.db_query_parse.data_repmemo,0.50,2352 postgresqlv7.db_query_parse.data_datetime,0.50,3215 postgresqlv7.db_import.create_synop-cloudbelow.bufr,0.53,6 postgresqlv7.db_import.overwrite_synop-cloudbelow.bufr,0.50,35 postgresqlv7.db_import.create_synop-evapo.bufr,0.56,8 postgresqlv7.db_import.overwrite_synop-evapo.bufr,0.50,51 postgresqlv7.db_import.create_synop-groundtemp.bufr,0.51,4 postgresqlv7.db_import.overwrite_synop-groundtemp.bufr,0.50,21 postgresqlv7.db_import.create_synop-gtscosmo.bufr,0.51,28 postgresqlv7.db_import.overwrite_synop-gtscosmo.bufr,0.50,273 postgresqlv7.db_import.create_synop-longname.bufr,0.51,15 postgresqlv7.db_import.overwrite_synop-longname.bufr,0.50,137 postgresqlv7.db_import.create_temp-gts1.bufr,0.56,9 postgresqlv7.db_import.overwrite_temp-gts1.bufr,0.50,66 postgresqlv7.db_import.create_temp-gts2.bufr,0.62,4 postgresqlv7.db_import.overwrite_temp-gts2.bufr,0.51,17 postgresqlv7.db_import.create_temp-gts3.bufr,0.51,19 postgresqlv7.db_import.overwrite_temp-gts3.bufr,0.50,188 postgresqlv7.db_import.create_temp-gtscosmo.bufr,0.51,41 postgresqlv7.db_import.overwrite_temp-gtscosmo.bufr,0.50,760 postgresqlv7.db_import.create_temp-timesig18.bufr,0.51,20 postgresqlv7.db_import.overwrite_temp-timesig18.bufr,0.50,209 postgresqlv7.db_import.create_gts-acars1.bufr,0.51,41 postgresqlv7.db_import.overwrite_gts-acars1.bufr,0.50,1023 postgresqlv7.db_import.create_gts-acars2.bufr,0.51,45 postgresqlv7.db_import.overwrite_gts-acars2.bufr,0.50,1230 postgresqlv7.db_import.create_gts-acars-us1.bufr,0.51,44 postgresqlv7.db_import.overwrite_gts-acars-us1.bufr,0.50,1261 postgresqlv7.db_import.create_gts-amdar1.bufr,0.50,48 postgresqlv7.db_import.overwrite_gts-amdar1.bufr,0.50,1139 postgresqlv7.db_import.create_gts-amdar2.bufr,0.51,49 postgresqlv7.db_import.overwrite_gts-amdar2.bufr,0.50,1181 postgresqlv7.db_query.station_coords,0.50,1813 postgresqlv7.db_query.stationdata_coords,0.50,1094 postgresqlv7.db_query.data_coords,0.50,639 postgresqlv7.db_query.data_dt,0.50,610 postgresqlv7.db_query.data_varcode,0.50,5 dballe-7.21/bench/20160622104824_sqlite_191af0a1e72dd162aab8fb81fd688750633c4f01.csv0000644000175000017500000000453313022043102022046 00000000000000sqlite.db_query_parse.station_ana_id,0.50,7476 sqlite.db_query_parse.station_coords,0.50,5700 sqlite.db_query_parse.station_ident,0.50,6655 sqlite.db_query_parse.station_repmemo,0.50,5519 sqlite.db_query_parse.stationdata_ana_id,0.50,7229 sqlite.db_query_parse.stationdata_coords,0.50,5660 sqlite.db_query_parse.stationdata_ident,0.50,6644 sqlite.db_query_parse.stationdata_repmemo,0.50,5518 sqlite.db_query_parse.data_ana_id,0.50,7393 sqlite.db_query_parse.data_coords,0.50,5659 sqlite.db_query_parse.data_ident,0.50,6637 sqlite.db_query_parse.data_repmemo,0.50,5548 sqlite.db_query_parse.data_datetime,0.50,7379 sqlite.db_import.create_synop-cloudbelow.bufr,0.50,46 sqlite.db_import.overwrite_synop-cloudbelow.bufr,0.50,251 sqlite.db_import.create_synop-evapo.bufr,0.50,77 sqlite.db_import.overwrite_synop-evapo.bufr,0.50,311 sqlite.db_import.create_synop-groundtemp.bufr,0.50,32 sqlite.db_import.overwrite_synop-groundtemp.bufr,0.50,160 sqlite.db_import.create_synop-gtscosmo.bufr,0.50,764 sqlite.db_import.overwrite_synop-gtscosmo.bufr,0.50,4363 sqlite.db_import.create_synop-longname.bufr,0.50,163 sqlite.db_import.overwrite_synop-longname.bufr,0.50,891 sqlite.db_import.create_temp-gts1.bufr,0.50,100 sqlite.db_import.overwrite_temp-gts1.bufr,0.50,637 sqlite.db_import.create_temp-gts2.bufr,0.50,41 sqlite.db_import.overwrite_temp-gts2.bufr,0.50,215 sqlite.db_import.create_temp-gts3.bufr,0.50,418 sqlite.db_import.overwrite_temp-gts3.bufr,0.50,2211 sqlite.db_import.create_temp-gtscosmo.bufr,0.50,1350 sqlite.db_import.overwrite_temp-gtscosmo.bufr,0.50,9086 sqlite.db_import.create_temp-timesig18.bufr,0.50,396 sqlite.db_import.overwrite_temp-timesig18.bufr,0.50,1952 sqlite.db_import.create_gts-acars1.bufr,0.50,1569 sqlite.db_import.overwrite_gts-acars1.bufr,0.50,11603 sqlite.db_import.create_gts-acars2.bufr,0.50,1573 sqlite.db_import.overwrite_gts-acars2.bufr,0.50,11478 sqlite.db_import.create_gts-acars-us1.bufr,0.50,1503 sqlite.db_import.overwrite_gts-acars-us1.bufr,0.50,10982 sqlite.db_import.create_gts-amdar1.bufr,0.50,1575 sqlite.db_import.overwrite_gts-amdar1.bufr,0.50,11812 sqlite.db_import.create_gts-amdar2.bufr,0.50,1630 sqlite.db_import.overwrite_gts-amdar2.bufr,0.50,12149 sqlite.db_query.station_coords,0.50,5646 sqlite.db_query.stationdata_coords,0.50,4074 sqlite.db_query.data_coords,0.50,3411 sqlite.db_query.data_dt,0.50,3183 sqlite.db_query.data_varcode,0.56,7 dballe-7.21/bench/20160311181304_postgresql_c4354a67f0b12a3c10d0c401644af73fc7ead9ab.csv0000644000175000017500000000475113022043102023062 00000000000000postgresql.db_query_parse.station_ana_id,0.50,1914 postgresql.db_query_parse.station_coords,0.50,1587 postgresql.db_query_parse.station_ident,0.50,1730 postgresql.db_query_parse.station_repmemo,0.50,1101 postgresql.db_query_parse.stationdata_ana_id,0.50,1921 postgresql.db_query_parse.stationdata_coords,0.50,1566 postgresql.db_query_parse.stationdata_ident,0.50,1761 postgresql.db_query_parse.stationdata_repmemo,0.50,1093 postgresql.db_query_parse.data_ana_id,0.50,1899 postgresql.db_query_parse.data_coords,0.50,1493 postgresql.db_query_parse.data_ident,0.50,1717 postgresql.db_query_parse.data_repmemo,0.50,1088 postgresql.db_query_parse.data_datetime,0.50,1986 postgresql.db_import.create_synop-cloudbelow.bufr,0.68,2 postgresql.db_import.overwrite_synop-cloudbelow.bufr,0.51,6 postgresql.db_import.create_synop-evapo.bufr,0.71,3 postgresql.db_import.overwrite_synop-evapo.bufr,0.50,10 postgresql.db_import.create_synop-groundtemp.bufr,0.88,2 postgresql.db_import.overwrite_synop-groundtemp.bufr,0.53,3 postgresql.db_import.create_synop-gtscosmo.bufr,0.50,18 postgresql.db_import.overwrite_synop-gtscosmo.bufr,0.50,250 postgresql.db_import.create_synop-longname.bufr,0.56,5 postgresql.db_import.overwrite_synop-longname.bufr,0.51,35 postgresql.db_import.create_temp-gts1.bufr,0.55,7 postgresql.db_import.overwrite_temp-gts1.bufr,0.50,83 postgresql.db_import.create_temp-gts2.bufr,0.69,3 postgresql.db_import.overwrite_temp-gts2.bufr,0.52,12 postgresql.db_import.create_temp-gts3.bufr,0.52,14 postgresql.db_import.overwrite_temp-gts3.bufr,0.50,171 postgresql.db_import.create_temp-gtscosmo.bufr,0.50,25 postgresql.db_import.overwrite_temp-gtscosmo.bufr,0.50,529 postgresql.db_import.create_temp-timesig18.bufr,0.52,6 postgresql.db_import.overwrite_temp-timesig18.bufr,0.51,69 postgresql.db_import.create_gts-acars1.bufr,0.51,26 postgresql.db_import.overwrite_gts-acars1.bufr,0.50,492 postgresql.db_import.create_gts-acars2.bufr,0.50,26 postgresql.db_import.overwrite_gts-acars2.bufr,0.50,533 postgresql.db_import.create_gts-acars-us1.bufr,0.51,26 postgresql.db_import.overwrite_gts-acars-us1.bufr,0.50,559 postgresql.db_import.create_gts-amdar1.bufr,0.51,26 postgresql.db_import.overwrite_gts-amdar1.bufr,0.50,516 postgresql.db_import.create_gts-amdar2.bufr,0.51,26 postgresql.db_import.overwrite_gts-amdar2.bufr,0.50,527 postgresql.db_query.station_coords,0.50,1551 postgresql.db_query.stationdata_coords,0.50,860 postgresql.db_query.data_coords,0.50,569 postgresql.db_query.data_dt,0.50,545 postgresql.db_query.data_varcode,0.53,5 dballe-7.21/bench/20160326094541_sqlitev7_49daba5b9e9004ec0e155fff71a81cb25786624b.csv0000644000175000017500000000467513022043102022433 00000000000000sqlitev7.db_query_parse.station_ana_id,0.50,7052 sqlitev7.db_query_parse.station_coords,0.50,5575 sqlitev7.db_query_parse.station_ident,0.50,6414 sqlitev7.db_query_parse.station_repmemo,0.50,6238 sqlitev7.db_query_parse.stationdata_ana_id,0.50,7027 sqlitev7.db_query_parse.stationdata_coords,0.50,5592 sqlitev7.db_query_parse.stationdata_ident,0.50,6316 sqlitev7.db_query_parse.stationdata_repmemo,0.50,6141 sqlitev7.db_query_parse.data_ana_id,0.50,6930 sqlitev7.db_query_parse.data_coords,0.50,5626 sqlitev7.db_query_parse.data_ident,0.50,6448 sqlitev7.db_query_parse.data_repmemo,0.50,6330 sqlitev7.db_query_parse.data_datetime,0.50,7127 sqlitev7.db_import.create_synop-cloudbelow.bufr,0.50,69 sqlitev7.db_import.overwrite_synop-cloudbelow.bufr,0.50,521 sqlitev7.db_import.create_synop-evapo.bufr,0.50,102 sqlitev7.db_import.overwrite_synop-evapo.bufr,0.50,677 sqlitev7.db_import.create_synop-groundtemp.bufr,0.51,47 sqlitev7.db_import.overwrite_synop-groundtemp.bufr,0.50,331 sqlitev7.db_import.create_synop-gtscosmo.bufr,0.50,765 sqlitev7.db_import.overwrite_synop-gtscosmo.bufr,0.50,5559 sqlitev7.db_import.create_synop-longname.bufr,0.50,242 sqlitev7.db_import.overwrite_synop-longname.bufr,0.50,1733 sqlitev7.db_import.create_temp-gts1.bufr,0.50,99 sqlitev7.db_import.overwrite_temp-gts1.bufr,0.50,784 sqlitev7.db_import.create_temp-gts2.bufr,0.50,41 sqlitev7.db_import.overwrite_temp-gts2.bufr,0.50,265 sqlitev7.db_import.create_temp-gts3.bufr,0.50,382 sqlitev7.db_import.overwrite_temp-gts3.bufr,0.50,2851 sqlitev7.db_import.create_temp-gtscosmo.bufr,0.50,1211 sqlitev7.db_import.overwrite_temp-gtscosmo.bufr,0.50,12239 sqlitev7.db_import.create_temp-timesig18.bufr,0.50,592 sqlitev7.db_import.overwrite_temp-timesig18.bufr,0.50,3569 sqlitev7.db_import.create_gts-acars1.bufr,0.50,1367 sqlitev7.db_import.overwrite_gts-acars1.bufr,0.50,15728 sqlitev7.db_import.create_gts-acars2.bufr,0.50,1369 sqlitev7.db_import.overwrite_gts-acars2.bufr,0.50,15569 sqlitev7.db_import.create_gts-acars-us1.bufr,0.50,1318 sqlitev7.db_import.overwrite_gts-acars-us1.bufr,0.50,14800 sqlitev7.db_import.create_gts-amdar1.bufr,0.50,1388 sqlitev7.db_import.overwrite_gts-amdar1.bufr,0.50,16146 sqlitev7.db_import.create_gts-amdar2.bufr,0.50,1410 sqlitev7.db_import.overwrite_gts-amdar2.bufr,0.50,16384 sqlitev7.db_query.station_coords,0.50,5249 sqlitev7.db_query.stationdata_coords,0.50,4189 sqlitev7.db_query.data_coords,0.50,3307 sqlitev7.db_query.data_dt,0.50,3106 sqlitev7.db_query.data_varcode,0.55,8 dballe-7.21/tables/0000755000175000017500000000000013022523410011131 500000000000000dballe-7.21/tables/D0000000000200014001.txt0000644000175000017500000025404013022043102013625 00000000000000 300002 2 000002 000003 300003 3 000010 000011 000012 300004 9 300003 000013 000014 000015 000016 000017 000018 000019 000020 300010 4 300003 101000 031001 000030 301001 2 001001 001002 301002 3 001003 001004 001005 301003 3 001011 001012 001013 301004 4 001001 001002 001015 002001 301005 2 001035 001034 301011 3 004001 004002 004003 301012 2 004004 004005 301013 3 004004 004005 004006 301014 3 102002 301011 301012 301021 2 005001 006001 301022 3 005001 006001 007001 301023 2 005002 006002 301024 3 005002 006002 007001 301025 3 301023 004003 301012 301026 7 301021 004003 004003 004004 004004 004005 004005 301027 5 008007 101000 031001 301028 008007 301028 8 008040 033042 007010 101000 031002 301023 019007 008040 301031 5 301001 002001 301011 301012 301022 301032 5 301001 002001 301011 301012 301024 301033 5 001005 002001 301011 301012 301021 301034 5 001005 002001 301011 301012 301023 301035 7 001005 001012 001013 002001 301011 301012 301023 301036 5 301003 002001 301011 301012 301023 301037 6 301001 002011 002012 301011 301012 301022 301038 6 301001 002011 002012 301011 301012 301024 301039 6 301003 002011 002012 301011 301012 301023 301040 6 301003 002011 002012 301011 301012 301024 301041 5 001007 002021 002022 301011 301012 301042 2 301041 301021 301043 5 001007 002023 301011 301013 301021 301044 5 001007 002024 301011 301013 301021 301045 9 301011 301012 201138 202131 004006 201000 202000 304030 304031 301046 10 001007 001012 002048 021119 025060 202124 002026 002027 202000 005040 301047 15 001007 025060 001033 001034 001012 301045 002021 301011 301012 201138 202131 004006 201000 202000 301023 301048 14 002104 002121 002113 002026 002027 002111 002140 202127 001013 202126 007001 202000 025010 021064 301049 5 002111 002112 021062 021063 021065 301051 6 001006 002061 301011 301012 301021 008004 301055 7 001005 002001 301011 301012 301021 001012 001014 301062 3 101000 031001 301001 301065 8 001006 001008 002001 002002 002005 002062 002070 002065 301066 6 301011 301013 301023 007004 002064 008004 301070 3 002143 002142 002144 301071 5 001007 001031 002020 002028 002029 301072 4 301071 301011 301013 301021 301074 4 002143 002142 002145 002146 301075 6 301001 001015 301024 008021 301011 301012 301076 3 002011 002143 002142 301090 6 301004 301011 301012 301021 007030 007031 301091 10 002180 002181 002182 002183 002184 002179 002186 002187 002188 002189 301092 9 001011 001003 002001 301011 301012 301021 007030 007031 033024 301093 3 301036 007030 007031 301110 5 301001 001011 002011 002014 002003 301111 6 301001 001011 002011 002013 002014 002003 301112 5 001006 002011 002013 002014 002003 301113 3 008021 301011 301013 301114 5 301021 007030 007031 007007 033024 301120 4 301001 001094 002011 301121 301121 5 008041 301122 301021 007031 007007 301122 7 301011 301012 201135 202130 004006 202000 201000 301123 33 102002 008041 001062 301001 001094 002011 001018 001095 025061 025068 001082 001083 001081 002067 002066 002014 025067 025065 025066 002095 002096 002097 002016 002083 002080 002081 001093 002084 002085 002086 002082 008041 301011 301125 6 001033 001034 025060 001007 002019 001012 301193 5 001007 001031 002196 002221 002222 301194 9 001194 001012 001013 002011 002012 301011 301012 301023 007001 301195 9 001195 001012 001013 002011 002012 301011 301012 301023 007001 301196 7 301003 002011 002012 301011 301012 301023 007001 301197 9 001006 001008 002061 002062 002002 002005 002070 002063 002001 301198 9 001011 001012 001013 002011 002012 301011 301012 301023 007001 301200 2 001032 033194 301201 2 101003 033193 301202 2 001031 001032 301237 12 001007 001012 002021 301011 004004 004005 201138 202131 004006 201000 202000 301023 301238 14 002104 002121 002113 002026 002027 002111 002192 202127 001013 202126 007001 202000 025010 021194 301239 5 002111 002112 021192 021193 021195 301240 5 201131 202129 022021 201000 202000 301241 5 201141 202130 007001 201000 202000 301242 6 021207 021208 021209 021210 021211 021212 301250 4 301193 301011 301013 301021 302001 4 010004 010051 010061 010063 302002 5 010004 007004 010003 010061 010063 302003 9 011011 011012 012004 012006 013003 020001 020003 020004 020005 302004 7 020010 008002 020011 020013 020012 020012 020012 302005 4 008002 020011 020012 020013 302006 4 010004 010051 010062 010063 302011 3 302001 302003 302004 302012 3 302002 302003 302004 302013 5 302006 302003 101000 031001 302005 302021 3 022001 022011 022021 302022 3 022002 022012 022022 302023 3 022003 022013 022023 302024 3 302022 101002 302023 302031 4 302001 010062 007004 010009 302032 4 007032 012101 012103 013003 302033 2 007032 020001 302034 2 007032 013023 302035 8 302032 302033 302034 007032 302004 101000 031001 302005 302036 7 105000 031001 008002 020011 020012 020014 020017 302037 3 020062 013013 012113 302038 4 020003 004024 020004 020005 302039 2 004024 014031 302040 4 007032 102002 004024 013011 302041 7 007032 004024 004024 012111 004024 004024 012112 302042 11 007032 002002 008021 004025 011001 011002 008021 103002 004025 011043 011041 302043 7 302038 101002 302039 302040 302041 302042 007032 302044 3 004024 002004 013033 302045 7 004024 014002 014004 014016 014028 014029 014030 302046 3 004024 004024 012049 302047 3 102003 008002 020054 302048 5 005021 007021 020012 005021 007021 302049 7 008002 020011 020013 020012 020012 020012 008002 302050 31 008041 005021 007005 202130 006021 202000 008041 201131 202129 002115 010004 002115 013003 202000 201000 002115 011001 011002 002115 102002 012101 004024 002115 012103 012102 101003 020012 020011 020013 101002 020003 302051 12 010004 010051 007004 010003 012004 012051 012016 012017 013004 102004 008051 008020 302052 7 007032 007033 012101 002039 012102 012103 013003 302053 3 007032 007033 020001 302054 9 302052 302053 007033 302034 007032 302004 101000 031001 302005 302055 8 020031 020032 020033 020034 020035 020036 020037 020038 302056 4 002038 007063 022043 007063 302057 3 302056 302021 302024 302058 8 007032 007033 004024 004024 012111 004024 004024 012112 302059 12 007032 007033 002002 008021 004025 011001 011002 008021 103002 004025 011043 011041 302060 4 302038 302040 302058 302059 302062 24 302001 302052 302053 007033 101000 031000 302034 007032 101000 031001 302005 008002 101000 031000 302055 101000 031000 302056 101000 031000 302021 101000 031000 302024 302063 8 302038 101000 031000 302040 101000 031000 302058 302059 302066 16 020023 020024 020027 020054 020023 020027 020054 020025 020026 020027 020040 020066 020027 020021 020067 020027 302069 4 007032 007033 033041 020001 302070 8 007032 007033 011001 011002 011043 011041 011016 011017 302071 14 007032 007033 008021 004025 011001 011002 008021 103002 004025 011043 011041 004025 011016 011017 302072 5 007032 007033 012101 012103 013003 302073 7 020010 105004 008002 020011 020012 033041 020013 302074 4 020003 004025 020004 020005 302075 5 008021 004025 013055 013058 008021 302076 7 020021 020022 026020 020023 020024 020025 020026 302077 8 007032 007033 004025 012111 012112 007032 004025 012112 302078 4 002176 020062 002177 013013 302079 5 007032 002175 002178 004025 013011 302080 3 002185 004025 013033 302081 2 004025 014031 302082 7 004025 014002 014004 014016 014028 014029 014030 302083 8 004025 008023 010004 011001 011002 012101 013003 008023 302205 5 201131 202129 022021 201000 202000 302206 9 302205 201130 202129 022011 201000 202000 022001 011001 011002 302207 5 022193 022194 022195 022196 022197 302250 5 102000 031001 020193 020194 020012 303001 3 007003 011001 011002 303002 3 007004 011001 011002 303003 4 007004 010003 012001 012003 303004 6 007004 010003 012001 012003 011001 011002 303011 4 007003 008001 011001 011002 303012 4 007004 008001 011001 011002 303013 7 007004 008001 010003 012001 013003 011001 011002 303014 7 007004 008001 010003 012001 012003 011001 011002 303021 4 007004 007004 204007 031021 303022 3 303021 010003 204000 303023 3 303021 012001 204000 303024 3 303021 013016 204000 303025 5 002025 204007 031021 012063 204000 303026 6 007004 008003 204007 031021 012001 204000 303027 5 007004 204007 031021 010003 204000 303031 6 007004 008003 007021 007022 008012 012061 303032 2 020011 020016 303033 2 020010 020016 303040 18 008041 004025 004026 301021 301122 201131 202129 025069 007004 013003 202000 201000 002013 012101 010009 102002 008040 035035 303041 8 002152 002023 007004 011001 011002 002153 002154 012071 303050 7 004086 008042 007004 005015 006015 011001 011002 303051 7 004086 008042 007004 005015 006015 011061 011062 303052 7 004086 008042 007009 005015 006015 011001 011002 303053 7 004086 008042 007009 005015 006015 011061 011062 303054 10 004086 008042 007004 010009 005015 006015 012101 012103 011001 011002 303249 7 002252 104000 031001 002199 007004 007004 013003 303250 8 002252 002023 007004 011001 011002 002197 002198 012193 303251 8 002252 105000 031001 002254 002251 002197 002198 012063 303252 8 002252 105000 031001 002254 002251 002197 002198 012194 304001 5 008003 010004 012001 011001 011002 304002 4 008003 010004 011001 011002 304003 2 008003 012001 304004 4 008003 010004 020010 012001 304005 4 002024 007004 007004 013003 304006 3 014001 014001 014003 304011 27 002163 002164 008012 007024 002057 008021 004001 004002 004003 004004 008021 004024 110004 008021 004004 004005 004006 008021 004004 004005 004006 011001 011002 103010 002163 007004 012001 304030 3 027031 028031 010031 304031 3 001041 001042 001043 304032 5 002153 002154 020081 020082 020012 304033 8 002152 002166 002167 002153 002154 012075 012076 012063 304034 9 102004 027001 028001 007022 005043 020010 020016 033003 010040 304035 15 002153 002154 012063 008001 012063 008001 012063 008001 008003 012063 008003 012063 008003 012063 008003 304036 12 020082 008012 020082 008012 020081 008003 020081 008003 020081 008003 020081 008003 304228 3 005217 006217 007217 304229 3 001208 001209 001210 304250 27 002231 002232 008012 007024 002057 008021 004001 004002 004003 004004 008021 004024 110004 008021 004004 004005 004006 008021 004004 004005 004006 011001 011002 103010 002231 007004 012001 305003 5 301012 004065 101000 031001 305001 305006 6 013072 013082 013019 012001 013073 013060 305007 6 301029 301012 004065 101000 031001 305006 305008 2 305006 012030 305009 6 301029 301012 004065 101000 031001 305008 305011 6 301029 301012 004065 101000 031001 305010 305018 8 301029 301012 004065 103000 031001 305008 305016 305017 306001 5 002032 102000 031001 007062 022042 306002 3 002031 022004 022031 306003 4 002002 011011 011012 012004 306004 7 002032 002033 103000 031001 007062 022043 022062 306005 6 002031 103000 031001 007062 022004 022031 306006 3 306003 306002 022063 306007 6 001012 001014 306008 004024 027003 028003 306008 3 002034 002035 002036 306019 8 001075 301011 301012 022042 022120 022121 004015 004065 306020 4 306024 102006 022038 022039 306021 7 001075 301011 301012 022122 022123 012001 303002 306022 5 001075 301011 301012 022038 022039 306023 8 001015 301023 301011 301012 022038 022039 022120 022121 306024 8 001075 301011 301012 022042 022120 022121 004025 004015 306025 4 306019 102006 022038 022039 307001 2 301031 302011 307002 2 301032 302011 307003 4 307001 101000 031001 302005 307004 4 307002 101000 031001 302005 307005 3 307001 101004 302005 307006 3 307002 101004 302005 307007 2 301031 302012 307008 2 301032 302012 307009 2 301031 302013 307011 16 001063 002001 301011 301012 301024 007006 011001 011016 011017 011002 011041 007006 012001 012003 010052 020009 307012 5 103000 031001 008023 005021 020001 307013 8 106000 031001 001064 008014 020061 008014 020061 020018 307014 3 101000 031001 020019 307015 4 101000 031001 302005 020002 307016 3 101000 031001 020020 307017 3 101000 031001 011070 307018 16 008016 102000 031001 008017 301012 104000 031001 007006 011001 011002 011041 020009 101000 031001 020001 307014 307020 3 307011 307014 307016 307021 9 307011 307012 307013 307014 307015 307016 307017 307018 307015 307022 31 001015 301011 301012 301022 008021 004025 010004 012001 013003 033038 008022 106025 002020 001050 005021 007021 015031 015032 008060 015033 015034 008060 015033 015034 015035 201131 202129 013016 202000 201000 015011 307030 2 015001 015002 307031 7 008022 008023 015001 008023 015001 008023 015002 307041 7 301001 001015 301022 301011 301012 301070 307030 307042 9 301001 001015 301022 301011 301012 008021 004025 301070 307031 307043 7 301001 001015 301024 301011 301012 301074 307030 307045 25 001063 008079 002001 301011 301012 301024 007032 011001 011016 011017 008054 011083 011084 011002 008054 011085 011086 011041 008054 007032 012023 012024 007032 010052 020009 307046 5 020060 Metar/speci visibility 102000 031001 005021 020059 307047 9 105000 Metar/speci clouds 031001 008002 020011 020012 020013 020092 020002 020091 307048 25 008016 102000 031001 008017 301012 112000 031000 007032 011001 008054 011083 011084 011002 008054 011085 011086 011041 008054 007032 020009 101000 031000 020060 307014 307047 307049 4 102000 031000 022043 022021 307050 14 101000 031000 020085 102000 031001 001064 020085 105000 031001 001064 020086 020087 020088 020089 307059 12 307045 Full METAR/SPECI 307046 307013 307014 307047 307016 307017 307049 307050 101000 031001 307048 Trend forecast 307052 12 001063 008039 301011 301012 008079 008039 301011 start of forecast 301012 008039 301011 end of forecast 301012 301024 307053 16 007032 011001 008054 011083 011084 011002 008054 011085 011086 011041 008054 007032 020009 020060 307014 307047 307054 13 007032 008039 004003 004004 008023 012023 008039 004003 004004 008023 012023 008023 007032 307055 9 033045 008016 008039 004003 301012 008039 004003 301012 307053 307056 6 307052 Aerodrome forecast 307053 307054 101000 031001 307055 307059 12 307045 Full METAR/SPECI 307046 307013 307014 307047 307016 307017 307049 307050 101000 031001 307048 Trend forecast 307060 2 007061 012030 307061 3 301031 101005 307060 307062 3 301032 101005 307060 307063 2 007061 012130 307071 67 301090 004074 004023 008023 010004 010051 007004 010009 007032 012101 002051 004051 012118 004052 012119 013004 008023 012151 007032 102005 008050 008020 014032 014033 008050 008020 102018 008052 008022 007032 008053 004003 012152 008053 004003 012153 008053 004003 008023 012101 008053 004003 008023 012101 008023 007032 002002 008053 004003 011046 008053 004003 004004 004023 007032 013060 013051 004053 008050 008020 102006 008052 008022 008053 004003 013052 007032 307072 38 004001 004001 004002 004003 004004 004074 004022 008023 010004 010051 007004 010009 007032 012101 002051 004051 012118 004052 012119 013004 012151 007032 014032 008023 004001 004001 004002 004003 004004 004022 007032 008023 013060 004053 008023 102008 008050 008020 307073 2 307071 307072 307079 30 301090 SYNOP data and marine data from costal stations 302031 302035 302036 101000 031000 302047 008002 101000 031000 302048 302037 102000 031000 022061 020058 101000 031000 302056 101000 031000 302055 302043 302044 101000 031001 302045 101000 031000 302046 307080 13 301090 BUFR template for synoptic reports 302031 302035 302036 302047 008002 302048 302037 302043 302044 101002 302045 302046 307081 24 301090 BUFR template for synoptic reports RA I 302031 302035 302036 302047 008002 302048 302037 012122 013056 013057 020101 020102 020103 020104 020105 020106 020107 020108 302043 302044 101002 302045 302046 307082 15 301090 BUFR template for synoptic reports RA II 302031 302035 302036 302047 008002 302048 302037 012121 012122 302043 302044 101002 302045 302046 307083 14 301090 BUFR template for synoptic reports RA III 302031 302035 302036 302047 008002 302048 302037 012122 302043 302044 101002 302045 302046 307084 17 301090 BUFR template for synoptic reports RA IV 302031 302035 302036 302047 008002 302048 302037 020055 101000 031000 205001 302043 302044 101002 302045 302046 307086 11 301090 BUFR template for synoptic reports RA VI 302031 302035 302036 008002 302037 302066 302043 302044 101002 302045 307090 13 301092 BUFR template for synoptic reports from mobile land stations 302031 302035 302036 302047 008002 302048 302037 302043 302044 101002 302045 302046 307091 66 301089 301090 008010 301091 302001 007004 010009 302072 103000 031000 101005 307063 007061 101000 031000 302069 007032 007033 105000 031000 020031 020032 002038 022043 302021 101000 031000 302078 101000 031000 302073 101000 031000 302074 101000 031000 302075 102000 031000 004025 302076 302071 302077 007033 101000 031000 302079 007032 101000 031000 302080 101000 031000 302081 101000 031000 302082 102000 031000 004025 013059 101000 031000 302083 033005 033006 307092 62 301089 Surface obs drom N-minute period 301090 008010 301091 004015 004065 125000 031001 010004 302070 302072 007032 012101 103000 031000 101005 307063 007061 101000 031000 302069 007032 007033 101000 031000 302073 101000 031000 302076 102000 031000 013055 013058 102000 031000 020031 020032 101000 031000 302078 102000 031000 302079 007032 101000 031000 302080 101000 031000 302081 101000 031000 302083 102000 031000 004025 013059 101000 031000 302083 033005 033006 308001 3 301033 302011 022042 308002 3 301034 302011 022042 308003 3 301035 302011 022042 308004 3 301036 302011 022042 308005 2 308004 302024 308006 8 010004 010061 010063 011001 011002 012004 013003 022042 308007 4 301055 302011 007062 022042 308008 84 001003 BUOY 001020 001005 002001 002036 002149 301011 301012 008021 301011 301012 008021 301021 027004 028004 007030 001051 002148 001012 001014 002040 033022 033023 033027 022063 302021 302022 302023 008081 025026 008081 025026 008081 025026 008081 002034 022060 007070 002190 025086 002035 002168 020031 002038 306004 002030 306005 007031 008081 012064 302001 008081 007032 007033 012101 012103 013003 007032 007033 008082 007033 002169 002002 008021 004025 011001 011002 008021 004025 011043 011041 008082 007033 007032 004024 013011 007032 008021 004024 014021 008021 025028 025028 025028 308009 7 301093 302001 302054 008002 302055 302057 302060 308010 16 001011 TRACKOB template 113000 031001 301011 301012 301021 004080 022049 004080 022059 004080 022005 002042 022032 002042 004080 308011 27 001011 Climat ship 002001 301011 301012 301023 007030 007031 004074 004023 008023 010051 007032 007033 012101 013004 007032 007033 302056 008023 004003 004004 004023 007032 013060 013051 004053 007032 308012 28 004001 Monthly normals from an ocean weather station 004001 004002 004003 004004 004074 004022 008023 010051 007032 007033 012101 013002 007032 007033 302056 008023 004001 004001 004002 004003 004004 004022 007032 008023 013060 004053 008023 308013 2 308011 308012 309001 4 301037 101000 031001 303011 309002 4 301038 101000 031001 303011 309003 4 301037 101000 031001 303012 309004 4 301038 101000 031001 303012 309005 5 301037 302004 101000 031001 303013 309006 5 301038 302004 101000 031001 303013 309007 5 301037 302004 101000 031001 303014 309008 5 301038 302004 101000 031001 303014 309011 4 301039 101000 031001 303011 309012 4 301039 101000 031001 303012 309013 5 301039 302004 101000 031001 303013 309014 5 301039 302004 101000 031001 303014 309015 4 301040 101000 031001 303011 309016 4 301040 101000 031001 303012 309017 5 301040 302004 101000 031001 303013 309018 5 301040 302004 101000 031001 303014 309019 5 301031 002003 101000 031001 303011 309020 8 301031 002003 104000 031001 007003 011003 011004 011005 309030 8 015004 015005 104000 031001 004015 008006 007004 015003 309031 8 015004 015005 104000 031001 004025 008006 007004 015003 309040 3 301075 301076 309030 309042 4 307042 301075 301076 309030 309050 9 301110 301113 301114 101000 031002 303050 101000 031001 303051 309051 9 301110 301113 301114 101000 031002 303052 101000 031001 303053 309052 11 301111 301113 301114 302049 022043 101000 031002 303054 101000 031001 303051 309053 9 301112 301113 301114 101000 031002 303054 101000 031001 303051 309054 27 301001 001011 301011 301012 301021 007030 007031 007007 004023 004059 115000 031001 008001 008023 007004 010009 012101 012103 008023 011001 011002 008023 011019 008050 008020 008050 008020 309060 4 301123 301121 302050 303040 309061 21 301120 008041 301122 201131 202129 025069 007004 202000 201000 033007 033035 033015 013009 033007 033035 033015 002013 012101 033007 033035 033015 309062 19 301120 008041 301122 005001 033035 033015 006001 033035 033015 007007 033035 033015 011003 033035 033015 011004 033035 033015 033007 309063 19 301120 008041 301122 005001 033035 033015 006001 033035 033015 007007 033035 033015 011003 033035 033015 011004 033035 033015 033007 309064 26 301120 008041 301122 201131 202129 104002 025069 007004 033035 033015 013003 033035 033015 202000 201000 104002 002013 012101 033035 033015 012103 033035 033015 010009 033035 033015 309065 18 301120 008041 301122 005001 033035 033015 006001 033035 033015 007007 033035 033015 011003 033035 033015 011004 033035 033015 309066 18 301120 008041 301122 008040 201131 202129 025069 007004 013003 202000 201000 002013 012101 012103 010009 010007 011002 011001 309194 5 301194 302004 101000 031001 303014 309195 5 301195 302004 101000 031001 303014 309196 5 301196 302004 101000 031001 303014 309198 5 301198 302004 101000 031001 303014 310001 5 301042 303031 303032 101026 303025 310002 5 301042 303031 303032 101009 303023 310003 5 301042 303031 303032 101006 303023 310004 5 301042 303031 303032 101003 303024 310005 6 301042 303031 303033 101000 031001 303025 310006 6 301042 303031 303033 101000 031001 303023 310007 6 301042 303031 303033 101000 031001 303024 310008 8 310011 101019 310012 002150 025079 025080 033032 014045 310009 3 310011 101015 310012 310010 3 310011 101005 310012 310011 45 008070 001033 001034 008070 001033 001034 001007 002048 005040 025075 201133 005041 201000 005043 025070 033030 033031 004001 004002 004003 004004 004005 202131 201138 004006 201000 202000 005001 006001 202126 007001 202000 007024 005021 007025 005022 033033 002151 012064 002151 012064 002151 012064 002151 012064 310012 10 002150 025076 025077 025078 033032 201132 202129 012063 202000 201000 310013 62 001007 005040 004001 004002 004003 004004 004005 004006 005001 006001 007025 005043 025085 201131 202129 002150 008023 008072 014027 008072 014027 002150 008023 008072 014027 008072 014027 002150 008023 008072 014027 008072 014027 202000 201000 201132 202129 002150 008023 008072 012063 008072 012063 002150 008023 008072 012063 008072 012063 008023 008072 012063 008072 012063 002150 008023 008072 012063 008072 012063 202000 201000 310014 3 301072 303041 304011 310015 13 301072 007024 010002 303041 101003 304032 002152 002024 007004 007004 013003 101003 304033 310016 13 301072 007024 010002 303041 101012 304032 002152 002024 007004 007004 013003 101012 304033 310019 68 001007 002019 301011 301013 301023 007025 008021 007025 008021 007025 008021 008029 005040 008075 008003 010004 008003 207002 015001 207000 033070 015030 207002 020081 207000 008003 033042 007004 207002 015001 207000 008003 113021 007004 007004 207002 008021 015005 008021 015005 033007 207000 008026 101020 025143 008026 008043 109015 007004 008090 207006 015008 207000 008090 207002 033007 207000 008043 033071 108008 202124 201107 002071 201000 202000 207002 020081 207000 310020 6 310022 301011 301013 301021 304034 310021 310021 10 108000 031001 201131 202129 007004 007004 202000 201000 015020 010002 310022 4 001007 002019 001033 002172 310023 17 301072 030021 030022 008012 007024 007025 010002 101012 304032 105002 002152 002024 007004 007004 013003 101012 304033 310024 17 301072 030021 030022 008012 007024 007025 010002 101003 304032 105002 002152 002024 007004 007004 013003 101003 304033 310025 61 001007 008021 004001 004002 004003 004004 004005 201138 202131 004006 202000 201000 201132 005041 201000 201129 005043 201000 005002 006002 013040 020029 104024 005042 012163 021083 021084 115003 004001 004002 004003 201142 202131 004026 202000 201000 005001 006001 201138 202129 007001 202000 201000 008021 004001 004002 004003 004004 004005 005040 101003 012070 025054 101004 025055 008007 104028 005002 006002 002111 005021 310026 82 310022 025060 008021 301011 301012 201138 202131 004006 202000 201000 033039 033007 304030 304031 002020 001050 202127 304030 202000 304031 201133 202131 004016 202000 201000 301021 304030 010035 005021 010036 113000 031002 301021 005021 108000 031001 002121 007040 015037 008023 201125 015037 201000 008023 033007 108000 031002 007007 015036 008023 201123 015036 201000 008023 033007 116000 031002 007009 010004 012001 013001 008023 201120 010004 201000 201122 012001 201000 201123 013001 201000 008023 033007 008003 007009 010004 008023 201120 010004 201000 008023 033007 310027 12 301071 301011 301013 301021 030021 030022 010002 304036 002152 002167 101011 304035 310029 12 110000 031001 201138 202130 007004 007004 202000 201000 015020 010002 012101 013098 310030 6 310022 301011 301013 301021 304034 310029 310050 14 310051 310052 101000 031002 310053 101004 310054 020010 310052 101015 310053 310052 101005 310053 310051 16 001007 005040 201133 005041 201000 201132 025070 201000 202126 007001 202000 007025 005022 102009 002151 012064 310052 12 002019 301011 301012 202131 201138 004006 201000 202000 301021 007024 005021 005043 310053 6 201134 005042 201000 025076 033032 012163 310054 13 201134 005042 201000 025076 033032 201131 202129 102002 008023 014027 008023 202000 201000 310055 8 310051 310052 102020 025076 025052 101000 031002 025050 310060 53 001007 001033 002019 002020 301011 301012 207003 004006 207000 304030 301021 007024 005021 007025 005022 008075 201133 005041 201000 005045 005043 005040 010001 201129 007002 201000 202127 201125 021166 201000 202000 008012 020010 020014 002165 033075 107003 008076 006029 006029 025140 025141 033076 033077 008076 033078 033003 104000 031002 201133 005042 201000 014044 310193 5 301250 303250 302250 303249 303251 310194 5 301250 303250 302250 303249 303252 310195 3 301250 303250 304250 310196 3 301250 303249 303251 310226 39 310022 025060 008021 301011 301012 201138 202131 004006 202000 201000 033039 033007 304030 304031 002020 001050 202127 304030 202000 304031 201133 202131 004016 202000 201000 301021 304030 010035 005021 010036 107000 031002 301021 005021 103000 031001 002121 007040 015037 311001 9 301051 007002 012001 011001 011002 011031 011032 011033 020041 311002 4 301065 301066 311003 311004 311003 5 010070 011001 011002 012001 013002 311004 18 101000 031000 011034 101000 031000 011035 101000 031000 011075 101000 031000 011076 101000 031000 033025 101000 031000 033026 311005 13 001008 001023 301021 301011 301013 007010 008009 011001 011002 011031 011036 012101 033025 311006 6 007010 011001 011002 002064 012101 012103 311007 7 007010 301021 011001 011002 002064 012101 012103 311008 8 001008 301011 301013 301021 008004 101000 031001 311006 311009 8 001008 301011 301013 301021 008004 101000 031001 311007 311193 16 301197 301011 301012 301023 008004 007004 008021 011001 011002 011031 011034 011035 012001 012003 013003 020041 312001 2 301043 304001 312002 2 301043 304002 312003 2 301042 304003 312004 2 301042 304004 312005 2 301042 020014 312006 2 301044 304005 312007 2 301042 304006 312010 6 001007 005040 002021 005041 004001 004043 312011 9 202131 201149 004006 201000 202126 010002 202000 005043 005053 312012 6 202129 201132 101019 012063 201000 202000 312013 6 005042 202129 201135 012063 201000 202000 312014 8 312010 312011 105056 301023 005042 005052 312012 312013 312015 10 109011 301023 005042 005052 202129 201132 101004 012063 202000 201000 312016 3 312010 312011 312015 312017 10 109008 301023 005042 005052 202129 201132 101003 012063 202000 201000 312018 3 312010 312011 312017 312019 13 301047 301048 015015 029002 021076 106012 201129 006030 201000 102012 005030 021075 021066 312020 11 301047 301048 015015 029002 021076 104012 006030 102012 005030 021075 021066 312021 6 301047 101003 301049 011012 011011 021067 312022 15 301047 008022 011012 011050 022070 022026 312041 010050 021068 021071 021072 021073 312042 021062 015011 312023 7 301047 103003 008022 012061 022050 021069 021085 312024 11 312020 008060 008022 008060 008022 025014 022101 022097 022098 022099 022100 312025 11 312019 008060 008022 008060 008022 025014 022101 022097 022098 022099 022100 312026 19 301046 301011 301013 301023 312031 101004 312030 021110 301023 321027 021111 301023 321027 021112 301023 321027 021113 301023 321027 312027 9 301047 105009 301023 007021 012061 007021 012061 021085 021070 312028 26 301046 301011 301013 301023 008025 201136 004006 201000 312031 312032 101004 312030 101002 312033 021110 301023 321028 021111 301023 321028 021112 301023 321028 021113 301023 321028 312030 13 201130 202129 011012 202000 201000 011052 201135 202130 011011 202000 201000 011053 021104 312031 8 005034 006034 021109 011081 011082 021101 021102 021103 312032 4 021120 021121 013055 021122 312033 4 002104 008022 012063 012065 312041 5 201141 202130 007001 201000 202000 312042 6 021077 021078 021079 021080 021081 021082 312045 21 001007 002019 001096 025061 005040 301011 301013 301021 007002 012180 012181 012182 012183 012184 012185 002174 021086 012186 021087 012187 033043 312050 23 001007 002019 001096 025061 005040 301011 301013 301021 007025 005022 010080 027080 008003 007004 013093 008003 201131 202129 007004 007004 202000 201000 013095 312051 48 001007 002019 001096 025061 005040 008075 301011 301013 301021 001012 201131 001013 201000 010032 010033 010034 007002 008012 025110 025111 025102 002104 025103 025104 025105 025106 025107 025108 002111 002121 002026 002027 021130 021131 021132 021133 021064 025014 021134 107018 005030 105024 201130 006030 201000 021135 021136 033044 312052 77 001007 002019 001096 025061 005040 025120 025121 025124 025125 025122 025123 301011 301013 301021 007002 002119 033047 010081 010082 010083 010084 002116 002117 002118 002156 002157 014055 022150 022151 022152 022153 022154 022155 022156 022157 022158 022159 021137 021138 021139 021140 021141 021142 010085 010086 010087 010088 010089 010090 010091 010092 010093 011002 025126 025127 025128 025129 025130 025131 025132 025133 025134 025135 025136 025137 013096 013097 011095 011096 012188 012189 002158 002159 033052 033053 021143 021144 312053 54 001007 002019 001096 025061 005040 008075 301011 301013 301021 001012 201131 001013 201000 010032 010033 010034 007002 008012 025110 025111 025102 002104 025103 025104 025105 025106 025107 025108 011001 011002 022160 025138 201130 202129 022021 202000 201000 033048 033049 002026 002027 021130 021131 021132 021133 025014 106036 005030 104024 201130 006030 201000 022161 033044 312055 5 005033 005040 006034 010095 021157 312056 11 025060 001032 011082 011081 020095 020096 021155 201133 021101 021102 201000 312057 12 201130 202129 011012 202000 201000 201131 202129 011011 202000 201000 021156 021104 312058 8 301125 301011 301013 301021 312055 021150 101003 321030 312059 4 312056 101000 031001 312057 312060 20 025060 025062 040001 040002 021062 021151 021152 021153 021154 021062 021062 040003 040004 040005 040006 040007 020065 040008 040009 040010 312061 3 312058 312060 312059 312070 27 001007 002019 001144 001124 030010 301011 301013 301021 007012 015012 012165 012166 012167 012168 027010 028010 002099 013048 025081 025082 025083 025084 012080 012081 012082 025174 033028 312200 10 301237 301238 029002 021206 104012 006232 102012 005232 021205 021196 312201 6 301237 101003 301239 011012 011011 021197 312202 13 301237 008022 011012 011050 301240 022243 301241 010050 021198 021201 021202 021203 301242 312203 8 301237 008022 012061 022050 021204 021199 021214 021215 312204 12 312201 001031 011012 011011 021200 021213 004004 008021 004024 055003 011012 011011 312207 3 312202 301202 033191 312208 17 301202 008022 008021 301011 301013 301023 302205 011002 001007 002021 301011 301013 301023 001032 001192 302205 011002 312209 11 301202 001192 301011 301013 301023 302206 104000 022192 102000 005232 022191 312210 13 312202 021192 015202 301011 004004 004005 201138 202131 004006 201000 202000 304228 304229 312211 19 301046 301011 301013 301023 312031 101004 312030 021110 101004 312212 021111 101004 312212 021112 101004 312212 021113 101004 312212 312212 2 301023 321027 313009 4 021001 101000 031001 021001 313010 4 021036 101000 031001 021036 313031 5 006002 006012 101000 031002 030001 313032 5 005002 005012 101000 031002 313031 313041 13 006002 110000 031001 104000 031001 006012 101000 031012 030001 006012 101000 031001 030001 313042 5 005002 005012 101000 031002 313041 313043 17 006002 005002 005012 112000 031001 110000 031001 104000 031001 006012 101000 031011 030001 006012 101000 031001 030001 315001 5 001011 301011 301012 301023 306001 315002 5 001011 301011 301012 301023 306004 315003 25 001087 001085 001086 002036 002148 002149 022055 022056 022067 301011 301012 301021 008080 033050 109000 031002 007065 008080 033050 022045 008080 033050 022064 008080 033050 316001 10 301011 004004 301023 001021 002041 019001 010051 019002 019003 019004 316002 15 008021 004001 004002 004003 004004 004005 001033 008021 004001 004002 004003 004004 004005 007002 007002 316003 12 110000 031001 008011 008007 104000 031001 005002 006002 010002 011002 008007 008011 316004 13 111000 031001 008011 008007 007002 007002 102000 031001 005002 006002 011031 008007 008011 316005 10 108000 031001 008005 008007 005002 006002 001026 019001 008007 008005 316006 14 112000 031001 008011 008007 007002 007002 102000 031001 005002 006002 020011 020012 008007 008011 316007 12 110000 031001 008011 008007 104000 031001 005002 006002 019005 019006 008007 008011 316008 13 111000 031001 008001 008007 008023 103000 031001 005002 006002 010002 008023 008007 008001 316009 13 111000 031001 008011 008007 007002 007002 102000 031001 005002 006002 020041 008007 008011 316010 9 107000 031001 008011 008007 001022 005002 006002 008007 008011 316011 19 117000 031001 008011 001022 008007 102000 031001 005002 006002 008021 004001 004002 004003 004004 004005 020090 008021 008007 008011 316020 5 001023 001025 001027 301011 301012 316021 23 301023 002041 019001 019007 019005 019006 019008 008005 010004 008005 010004 019007 008005 008021 004075 011040 019007 105004 005021 005021 102002 019003 019004 316022 24 001032 002041 019001 019010 118000 031001 008021 004014 008005 301023 019005 019006 010004 011041 008021 004075 011040 019008 105004 005021 005021 102002 019003 019004 316026 2 316020 316021 316030 10 301014 001037 010064 008019 001062 008019 001065 008019 001062 008019 316031 8 008021 301011 301012 301027 019005 019006 020028 008021 316032 5 008021 301011 301012 301027 008021 316033 7 008021 301011 301012 101000 031001 301027 008021 316034 17 008079 316030 008011 001022 008007 301023 008007 020090 316031 101000 031000 316032 101000 031001 316033 008011 008079 316035 9 008079 316030 008011 020023 020021 020008 316031 008011 008079 316036 13 008079 316030 008011 001027 316031 101000 031000 316032 101000 031001 316033 008011 008079 316037 7 008079 316030 008011 011031 316031 008011 008079 316038 8 008079 316030 008011 020041 020021 316031 008011 008079 316039 7 008079 316030 008011 020024 316031 008011 008079 316040 6 316030 008079 301014 001037 010064 008079 316050 16 301001 301011 301012 002160 008005 005002 006002 008005 019100 019005 019006 019101 019102 019103 019104 019105 316052 29 301005 301011 301012 001007 025150 122000 031001 001027 019150 019106 008005 005002 006002 008005 019107 019005 019006 019108 019109 019110 019111 019112 019113 019114 019115 019116 019117 019118 019119 318001 2 301025 024011 318003 4 301026 024005 024004 024021 318004 6 301025 004023 013011 024005 024004 024022 321001 6 002101 002114 002105 002106 002107 002121 321003 4 021051 021014 021017 021030 321004 5 301031 002003 101000 031001 321003 321005 12 025004 002121 002122 002123 002124 002125 002126 002127 002128 002129 002130 002131 321006 4 025001 025002 025003 025005 321007 8 025009 025010 025011 025012 025013 025015 025016 025017 321008 3 025006 025007 025008 321009 2 025018 025019 321010 13 002101 007002 002102 002103 002104 002105 002106 002107 002108 002109 002110 002132 002133 321011 3 030031 030032 029002 321012 3 101000 031001 002135 321021 15 002003 002101 201130 002106 201000 201132 202130 002121 202000 201000 201133 202129 025001 202000 201000 321022 11 007007 204001 031021 011001 204000 011002 204001 031021 011006 204000 021030 321023 9 007007 021091 021030 202129 021014 201129 021017 202000 201000 321024 7 007007 204001 031021 012007 011006 204000 021030 321025 17 007007 021091 021030 202129 021014 201129 021017 202000 201000 021092 021030 025092 201129 202129 021017 202000 201000 321026 10 007007 204001 031021 012007 025091 011071 011072 011073 011074 204000 321027 18 021118 202129 201132 002112 201000 201131 002111 201000 202000 002104 021105 021106 021107 021114 021115 021116 008018 021117 321028 18 021118 202129 201132 002112 201000 201131 002111 201000 202000 002104 021123 021106 021107 021114 021115 021116 008018 021117 321030 18 008085 202129 201131 002111 201000 202000 002134 021062 021063 021158 021159 021160 021161 021162 021163 021164 021165 021166 340001 45 001007 001031 002019 002020 004001 004002 004003 004004 004005 202131 201138 004006 201000 202000 005001 006001 007024 005021 007025 005022 005043 005040 201133 005041 201000 201132 025070 201000 202126 007001 202000 033060 033061 033062 033063 033064 033065 101010 340002 101087 340003 002019 025051 101007 340004 340002 3 025140 025141 025142 340003 5 104100 201136 005042 201000 014046 340004 9 005060 005061 025085 105006 005042 025142 014047 025142 014048 340005 94 001007 002019 001096 025061 005044 005040 001030 301011 301012 004007 005001 006001 008029 008074 008077 040011 025097 025095 025098 025099 021144 025096 040012 040013 021169 022151 022162 022163 025160 025133 022156 022164 022165 022166 021137 021138 022167 021139 021118 021145 021146 021147 022168 022169 022170 025161 025162 022171 022172 022173 022174 021170 021171 022175 021172 021118 021173 021174 021175 102003 002153 012063 013090 013091 007002 011097 011098 007002 011095 011096 010096 010081 010082 010083 010101 025132 025163 025126 025128 025164 010085 010097 010086 010087 010092 010088 010089 010098 010099 010090 010100 010093 025127 040014 340007 57 001007 001031 002019 002020 004001 004002 004003 004004 004005 202131 201138 004006 201000 202000 005001 006001 007024 005021 007025 005022 005043 005040 201133 005041 201000 201132 025070 201000 202126 007001 202000 103003 025140 025141 033060 033061 033062 033063 033064 033065 040020 101010 340002 101087 340003 002019 025051 101007 340004 020081 008029 020083 008029 040018 040019 040021 040022 340008 70 001007 001031 002019 002020 004001 004002 004003 004004 004005 202131 201138 004006 201000 202000 005001 006001 007024 005021 007025 005022 005043 005040 201133 005041 201000 201132 025070 201000 202126 007001 202000 103003 025140 025141 033060 033061 033062 033063 033064 033065 040020 101010 340002 104000 031002 201136 005042 201000 014046 108003 025140 025141 040015 040016 025062 101000 031002 040017 002019 025051 101007 340004 020081 008029 020083 008029 040018 040019 040021 040022 dballe-7.21/tables/Makefile.in0000644000175000017500000003715013022512016013124 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tables ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/m4_ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(tabledir)" DATA = $(table_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDBALLEF_VERSION_INFO = @LIBDBALLEF_VERSION_INFO@ LIBDBALLE_VERSION_INFO = @LIBDBALLE_VERSION_INFO@ LIBOBJS = @LIBOBJS@ LIBPQ_CFLAGS = @LIBPQ_CFLAGS@ LIBPQ_LIBS = @LIBPQ_LIBS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MYSQL_CFLAGS = @MYSQL_CFLAGS@ MYSQL_LIBS = @MYSQL_LIBS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ WREPORT_CFLAGS = @WREPORT_CFLAGS@ WREPORT_LIBS = @WREPORT_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_doxygen = @have_doxygen@ have_gperf = @have_gperf@ have_rst2html = @have_rst2html@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mysql_config = @mysql_config@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ tabledir = @tabledir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ crexbtables = B990203.txt B990204.txt B000299.txt crexdtables = D990203.txt D990204.txt D000299.txt bufrbtables = B000000002001200.txt \ B000000002001400.txt \ B0000000000200014001.txt bufrdtables = D000000002001200.txt \ D000000002001400.txt \ D0000000000200014001.txt table_DATA = repinfo.csv dballe.txt $(crexbtables) $(crexdtables) $(bufrbtables) $(bufrdtables) EXTRA_DIST = $(table_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tables/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tables/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-tableDATA: $(table_DATA) @$(NORMAL_INSTALL) @list='$(table_DATA)'; test -n "$(tabledir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(tabledir)'"; \ $(MKDIR_P) "$(DESTDIR)$(tabledir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tabledir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(tabledir)" || exit $$?; \ done uninstall-tableDATA: @$(NORMAL_UNINSTALL) @list='$(table_DATA)'; test -n "$(tabledir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(tabledir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(tabledir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-tableDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-tableDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip install-tableDATA installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-tableDATA .PRECIOUS: Makefile B000000002001400.txt: dballe.txt cut -b 1-119 < $< > $@ B0000000000200014001.txt: dballe.txt cut -b 1-119 < $< > $@ B990204.txt: dballe.txt cp $< $@ B000299.txt: dballe.txt cp $< $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dballe-7.21/tables/repinfo.csv0000644000175000017500000000056313022043102013227 0000000000000001,synop,synop,101,oss,0 02,metar,metar,81,oss,0 03,temp,sounding,98,oss,2 04,pilot,wind profile,80,oss,2 09,buoy,buoy,50,oss,31 10,ship,synop ship,99,oss,1 11,tempship,temp ship,100,oss,2 12,airep,airep,82,oss,4 13,amdar,amdar,97,oss,4 14,acars,acars,96,oss,4 42,pollution,pollution,199,oss,8 200,satellite,NOAA satellites,41,oss,255 255,generic,generic data,1000,?,255 dballe-7.21/tables/D000000002001400.txt0000644000175000017500000025404013022043102013324 00000000000000 300002 2 000002 000003 300003 3 000010 000011 000012 300004 9 300003 000013 000014 000015 000016 000017 000018 000019 000020 300010 4 300003 101000 031001 000030 301001 2 001001 001002 301002 3 001003 001004 001005 301003 3 001011 001012 001013 301004 4 001001 001002 001015 002001 301005 2 001035 001034 301011 3 004001 004002 004003 301012 2 004004 004005 301013 3 004004 004005 004006 301014 3 102002 301011 301012 301021 2 005001 006001 301022 3 005001 006001 007001 301023 2 005002 006002 301024 3 005002 006002 007001 301025 3 301023 004003 301012 301026 7 301021 004003 004003 004004 004004 004005 004005 301027 5 008007 101000 031001 301028 008007 301028 8 008040 033042 007010 101000 031002 301023 019007 008040 301031 5 301001 002001 301011 301012 301022 301032 5 301001 002001 301011 301012 301024 301033 5 001005 002001 301011 301012 301021 301034 5 001005 002001 301011 301012 301023 301035 7 001005 001012 001013 002001 301011 301012 301023 301036 5 301003 002001 301011 301012 301023 301037 6 301001 002011 002012 301011 301012 301022 301038 6 301001 002011 002012 301011 301012 301024 301039 6 301003 002011 002012 301011 301012 301023 301040 6 301003 002011 002012 301011 301012 301024 301041 5 001007 002021 002022 301011 301012 301042 2 301041 301021 301043 5 001007 002023 301011 301013 301021 301044 5 001007 002024 301011 301013 301021 301045 9 301011 301012 201138 202131 004006 201000 202000 304030 304031 301046 10 001007 001012 002048 021119 025060 202124 002026 002027 202000 005040 301047 15 001007 025060 001033 001034 001012 301045 002021 301011 301012 201138 202131 004006 201000 202000 301023 301048 14 002104 002121 002113 002026 002027 002111 002140 202127 001013 202126 007001 202000 025010 021064 301049 5 002111 002112 021062 021063 021065 301051 6 001006 002061 301011 301012 301021 008004 301055 7 001005 002001 301011 301012 301021 001012 001014 301062 3 101000 031001 301001 301065 8 001006 001008 002001 002002 002005 002062 002070 002065 301066 6 301011 301013 301023 007004 002064 008004 301070 3 002143 002142 002144 301071 5 001007 001031 002020 002028 002029 301072 4 301071 301011 301013 301021 301074 4 002143 002142 002145 002146 301075 6 301001 001015 301024 008021 301011 301012 301076 3 002011 002143 002142 301090 6 301004 301011 301012 301021 007030 007031 301091 10 002180 002181 002182 002183 002184 002179 002186 002187 002188 002189 301092 9 001011 001003 002001 301011 301012 301021 007030 007031 033024 301093 3 301036 007030 007031 301110 5 301001 001011 002011 002014 002003 301111 6 301001 001011 002011 002013 002014 002003 301112 5 001006 002011 002013 002014 002003 301113 3 008021 301011 301013 301114 5 301021 007030 007031 007007 033024 301120 4 301001 001094 002011 301121 301121 5 008041 301122 301021 007031 007007 301122 7 301011 301012 201135 202130 004006 202000 201000 301123 33 102002 008041 001062 301001 001094 002011 001018 001095 025061 025068 001082 001083 001081 002067 002066 002014 025067 025065 025066 002095 002096 002097 002016 002083 002080 002081 001093 002084 002085 002086 002082 008041 301011 301125 6 001033 001034 025060 001007 002019 001012 301193 5 001007 001031 002196 002221 002222 301194 9 001194 001012 001013 002011 002012 301011 301012 301023 007001 301195 9 001195 001012 001013 002011 002012 301011 301012 301023 007001 301196 7 301003 002011 002012 301011 301012 301023 007001 301197 9 001006 001008 002061 002062 002002 002005 002070 002063 002001 301198 9 001011 001012 001013 002011 002012 301011 301012 301023 007001 301200 2 001032 033194 301201 2 101003 033193 301202 2 001031 001032 301237 12 001007 001012 002021 301011 004004 004005 201138 202131 004006 201000 202000 301023 301238 14 002104 002121 002113 002026 002027 002111 002192 202127 001013 202126 007001 202000 025010 021194 301239 5 002111 002112 021192 021193 021195 301240 5 201131 202129 022021 201000 202000 301241 5 201141 202130 007001 201000 202000 301242 6 021207 021208 021209 021210 021211 021212 301250 4 301193 301011 301013 301021 302001 4 010004 010051 010061 010063 302002 5 010004 007004 010003 010061 010063 302003 9 011011 011012 012004 012006 013003 020001 020003 020004 020005 302004 7 020010 008002 020011 020013 020012 020012 020012 302005 4 008002 020011 020012 020013 302006 4 010004 010051 010062 010063 302011 3 302001 302003 302004 302012 3 302002 302003 302004 302013 5 302006 302003 101000 031001 302005 302021 3 022001 022011 022021 302022 3 022002 022012 022022 302023 3 022003 022013 022023 302024 3 302022 101002 302023 302031 4 302001 010062 007004 010009 302032 4 007032 012101 012103 013003 302033 2 007032 020001 302034 2 007032 013023 302035 8 302032 302033 302034 007032 302004 101000 031001 302005 302036 7 105000 031001 008002 020011 020012 020014 020017 302037 3 020062 013013 012113 302038 4 020003 004024 020004 020005 302039 2 004024 014031 302040 4 007032 102002 004024 013011 302041 7 007032 004024 004024 012111 004024 004024 012112 302042 11 007032 002002 008021 004025 011001 011002 008021 103002 004025 011043 011041 302043 7 302038 101002 302039 302040 302041 302042 007032 302044 3 004024 002004 013033 302045 7 004024 014002 014004 014016 014028 014029 014030 302046 3 004024 004024 012049 302047 3 102003 008002 020054 302048 5 005021 007021 020012 005021 007021 302049 7 008002 020011 020013 020012 020012 020012 008002 302050 31 008041 005021 007005 202130 006021 202000 008041 201131 202129 002115 010004 002115 013003 202000 201000 002115 011001 011002 002115 102002 012101 004024 002115 012103 012102 101003 020012 020011 020013 101002 020003 302051 12 010004 010051 007004 010003 012004 012051 012016 012017 013004 102004 008051 008020 302052 7 007032 007033 012101 002039 012102 012103 013003 302053 3 007032 007033 020001 302054 9 302052 302053 007033 302034 007032 302004 101000 031001 302005 302055 8 020031 020032 020033 020034 020035 020036 020037 020038 302056 4 002038 007063 022043 007063 302057 3 302056 302021 302024 302058 8 007032 007033 004024 004024 012111 004024 004024 012112 302059 12 007032 007033 002002 008021 004025 011001 011002 008021 103002 004025 011043 011041 302060 4 302038 302040 302058 302059 302062 24 302001 302052 302053 007033 101000 031000 302034 007032 101000 031001 302005 008002 101000 031000 302055 101000 031000 302056 101000 031000 302021 101000 031000 302024 302063 8 302038 101000 031000 302040 101000 031000 302058 302059 302066 16 020023 020024 020027 020054 020023 020027 020054 020025 020026 020027 020040 020066 020027 020021 020067 020027 302069 4 007032 007033 033041 020001 302070 8 007032 007033 011001 011002 011043 011041 011016 011017 302071 14 007032 007033 008021 004025 011001 011002 008021 103002 004025 011043 011041 004025 011016 011017 302072 5 007032 007033 012101 012103 013003 302073 7 020010 105004 008002 020011 020012 033041 020013 302074 4 020003 004025 020004 020005 302075 5 008021 004025 013055 013058 008021 302076 7 020021 020022 026020 020023 020024 020025 020026 302077 8 007032 007033 004025 012111 012112 007032 004025 012112 302078 4 002176 020062 002177 013013 302079 5 007032 002175 002178 004025 013011 302080 3 002185 004025 013033 302081 2 004025 014031 302082 7 004025 014002 014004 014016 014028 014029 014030 302083 8 004025 008023 010004 011001 011002 012101 013003 008023 302205 5 201131 202129 022021 201000 202000 302206 9 302205 201130 202129 022011 201000 202000 022001 011001 011002 302207 5 022193 022194 022195 022196 022197 302250 5 102000 031001 020193 020194 020012 303001 3 007003 011001 011002 303002 3 007004 011001 011002 303003 4 007004 010003 012001 012003 303004 6 007004 010003 012001 012003 011001 011002 303011 4 007003 008001 011001 011002 303012 4 007004 008001 011001 011002 303013 7 007004 008001 010003 012001 013003 011001 011002 303014 7 007004 008001 010003 012001 012003 011001 011002 303021 4 007004 007004 204007 031021 303022 3 303021 010003 204000 303023 3 303021 012001 204000 303024 3 303021 013016 204000 303025 5 002025 204007 031021 012063 204000 303026 6 007004 008003 204007 031021 012001 204000 303027 5 007004 204007 031021 010003 204000 303031 6 007004 008003 007021 007022 008012 012061 303032 2 020011 020016 303033 2 020010 020016 303040 18 008041 004025 004026 301021 301122 201131 202129 025069 007004 013003 202000 201000 002013 012101 010009 102002 008040 035035 303041 8 002152 002023 007004 011001 011002 002153 002154 012071 303050 7 004086 008042 007004 005015 006015 011001 011002 303051 7 004086 008042 007004 005015 006015 011061 011062 303052 7 004086 008042 007009 005015 006015 011001 011002 303053 7 004086 008042 007009 005015 006015 011061 011062 303054 10 004086 008042 007004 010009 005015 006015 012101 012103 011001 011002 303249 7 002252 104000 031001 002199 007004 007004 013003 303250 8 002252 002023 007004 011001 011002 002197 002198 012193 303251 8 002252 105000 031001 002254 002251 002197 002198 012063 303252 8 002252 105000 031001 002254 002251 002197 002198 012194 304001 5 008003 010004 012001 011001 011002 304002 4 008003 010004 011001 011002 304003 2 008003 012001 304004 4 008003 010004 020010 012001 304005 4 002024 007004 007004 013003 304006 3 014001 014001 014003 304011 27 002163 002164 008012 007024 002057 008021 004001 004002 004003 004004 008021 004024 110004 008021 004004 004005 004006 008021 004004 004005 004006 011001 011002 103010 002163 007004 012001 304030 3 027031 028031 010031 304031 3 001041 001042 001043 304032 5 002153 002154 020081 020082 020012 304033 8 002152 002166 002167 002153 002154 012075 012076 012063 304034 9 102004 027001 028001 007022 005043 020010 020016 033003 010040 304035 15 002153 002154 012063 008001 012063 008001 012063 008001 008003 012063 008003 012063 008003 012063 008003 304036 12 020082 008012 020082 008012 020081 008003 020081 008003 020081 008003 020081 008003 304228 3 005217 006217 007217 304229 3 001208 001209 001210 304250 27 002231 002232 008012 007024 002057 008021 004001 004002 004003 004004 008021 004024 110004 008021 004004 004005 004006 008021 004004 004005 004006 011001 011002 103010 002231 007004 012001 305003 5 301012 004065 101000 031001 305001 305006 6 013072 013082 013019 012001 013073 013060 305007 6 301029 301012 004065 101000 031001 305006 305008 2 305006 012030 305009 6 301029 301012 004065 101000 031001 305008 305011 6 301029 301012 004065 101000 031001 305010 305018 8 301029 301012 004065 103000 031001 305008 305016 305017 306001 5 002032 102000 031001 007062 022042 306002 3 002031 022004 022031 306003 4 002002 011011 011012 012004 306004 7 002032 002033 103000 031001 007062 022043 022062 306005 6 002031 103000 031001 007062 022004 022031 306006 3 306003 306002 022063 306007 6 001012 001014 306008 004024 027003 028003 306008 3 002034 002035 002036 306019 8 001075 301011 301012 022042 022120 022121 004015 004065 306020 4 306024 102006 022038 022039 306021 7 001075 301011 301012 022122 022123 012001 303002 306022 5 001075 301011 301012 022038 022039 306023 8 001015 301023 301011 301012 022038 022039 022120 022121 306024 8 001075 301011 301012 022042 022120 022121 004025 004015 306025 4 306019 102006 022038 022039 307001 2 301031 302011 307002 2 301032 302011 307003 4 307001 101000 031001 302005 307004 4 307002 101000 031001 302005 307005 3 307001 101004 302005 307006 3 307002 101004 302005 307007 2 301031 302012 307008 2 301032 302012 307009 2 301031 302013 307011 16 001063 002001 301011 301012 301024 007006 011001 011016 011017 011002 011041 007006 012001 012003 010052 020009 307012 5 103000 031001 008023 005021 020001 307013 8 106000 031001 001064 008014 020061 008014 020061 020018 307014 3 101000 031001 020019 307015 4 101000 031001 302005 020002 307016 3 101000 031001 020020 307017 3 101000 031001 011070 307018 16 008016 102000 031001 008017 301012 104000 031001 007006 011001 011002 011041 020009 101000 031001 020001 307014 307020 3 307011 307014 307016 307021 9 307011 307012 307013 307014 307015 307016 307017 307018 307015 307022 31 001015 301011 301012 301022 008021 004025 010004 012001 013003 033038 008022 106025 002020 001050 005021 007021 015031 015032 008060 015033 015034 008060 015033 015034 015035 201131 202129 013016 202000 201000 015011 307030 2 015001 015002 307031 7 008022 008023 015001 008023 015001 008023 015002 307041 7 301001 001015 301022 301011 301012 301070 307030 307042 9 301001 001015 301022 301011 301012 008021 004025 301070 307031 307043 7 301001 001015 301024 301011 301012 301074 307030 307045 25 001063 008079 002001 301011 301012 301024 007032 011001 011016 011017 008054 011083 011084 011002 008054 011085 011086 011041 008054 007032 012023 012024 007032 010052 020009 307046 5 020060 Metar/speci visibility 102000 031001 005021 020059 307047 9 105000 Metar/speci clouds 031001 008002 020011 020012 020013 020092 020002 020091 307048 25 008016 102000 031001 008017 301012 112000 031000 007032 011001 008054 011083 011084 011002 008054 011085 011086 011041 008054 007032 020009 101000 031000 020060 307014 307047 307049 4 102000 031000 022043 022021 307050 14 101000 031000 020085 102000 031001 001064 020085 105000 031001 001064 020086 020087 020088 020089 307059 12 307045 Full METAR/SPECI 307046 307013 307014 307047 307016 307017 307049 307050 101000 031001 307048 Trend forecast 307052 12 001063 008039 301011 301012 008079 008039 301011 start of forecast 301012 008039 301011 end of forecast 301012 301024 307053 16 007032 011001 008054 011083 011084 011002 008054 011085 011086 011041 008054 007032 020009 020060 307014 307047 307054 13 007032 008039 004003 004004 008023 012023 008039 004003 004004 008023 012023 008023 007032 307055 9 033045 008016 008039 004003 301012 008039 004003 301012 307053 307056 6 307052 Aerodrome forecast 307053 307054 101000 031001 307055 307059 12 307045 Full METAR/SPECI 307046 307013 307014 307047 307016 307017 307049 307050 101000 031001 307048 Trend forecast 307060 2 007061 012030 307061 3 301031 101005 307060 307062 3 301032 101005 307060 307063 2 007061 012130 307071 67 301090 004074 004023 008023 010004 010051 007004 010009 007032 012101 002051 004051 012118 004052 012119 013004 008023 012151 007032 102005 008050 008020 014032 014033 008050 008020 102018 008052 008022 007032 008053 004003 012152 008053 004003 012153 008053 004003 008023 012101 008053 004003 008023 012101 008023 007032 002002 008053 004003 011046 008053 004003 004004 004023 007032 013060 013051 004053 008050 008020 102006 008052 008022 008053 004003 013052 007032 307072 38 004001 004001 004002 004003 004004 004074 004022 008023 010004 010051 007004 010009 007032 012101 002051 004051 012118 004052 012119 013004 012151 007032 014032 008023 004001 004001 004002 004003 004004 004022 007032 008023 013060 004053 008023 102008 008050 008020 307073 2 307071 307072 307079 30 301090 SYNOP data and marine data from costal stations 302031 302035 302036 101000 031000 302047 008002 101000 031000 302048 302037 102000 031000 022061 020058 101000 031000 302056 101000 031000 302055 302043 302044 101000 031001 302045 101000 031000 302046 307080 13 301090 BUFR template for synoptic reports 302031 302035 302036 302047 008002 302048 302037 302043 302044 101002 302045 302046 307081 24 301090 BUFR template for synoptic reports RA I 302031 302035 302036 302047 008002 302048 302037 012122 013056 013057 020101 020102 020103 020104 020105 020106 020107 020108 302043 302044 101002 302045 302046 307082 15 301090 BUFR template for synoptic reports RA II 302031 302035 302036 302047 008002 302048 302037 012121 012122 302043 302044 101002 302045 302046 307083 14 301090 BUFR template for synoptic reports RA III 302031 302035 302036 302047 008002 302048 302037 012122 302043 302044 101002 302045 302046 307084 17 301090 BUFR template for synoptic reports RA IV 302031 302035 302036 302047 008002 302048 302037 020055 101000 031000 205001 302043 302044 101002 302045 302046 307086 11 301090 BUFR template for synoptic reports RA VI 302031 302035 302036 008002 302037 302066 302043 302044 101002 302045 307090 13 301092 BUFR template for synoptic reports from mobile land stations 302031 302035 302036 302047 008002 302048 302037 302043 302044 101002 302045 302046 307091 66 301089 301090 008010 301091 302001 007004 010009 302072 103000 031000 101005 307063 007061 101000 031000 302069 007032 007033 105000 031000 020031 020032 002038 022043 302021 101000 031000 302078 101000 031000 302073 101000 031000 302074 101000 031000 302075 102000 031000 004025 302076 302071 302077 007033 101000 031000 302079 007032 101000 031000 302080 101000 031000 302081 101000 031000 302082 102000 031000 004025 013059 101000 031000 302083 033005 033006 307092 62 301089 Surface obs drom N-minute period 301090 008010 301091 004015 004065 125000 031001 010004 302070 302072 007032 012101 103000 031000 101005 307063 007061 101000 031000 302069 007032 007033 101000 031000 302073 101000 031000 302076 102000 031000 013055 013058 102000 031000 020031 020032 101000 031000 302078 102000 031000 302079 007032 101000 031000 302080 101000 031000 302081 101000 031000 302083 102000 031000 004025 013059 101000 031000 302083 033005 033006 308001 3 301033 302011 022042 308002 3 301034 302011 022042 308003 3 301035 302011 022042 308004 3 301036 302011 022042 308005 2 308004 302024 308006 8 010004 010061 010063 011001 011002 012004 013003 022042 308007 4 301055 302011 007062 022042 308008 84 001003 BUOY 001020 001005 002001 002036 002149 301011 301012 008021 301011 301012 008021 301021 027004 028004 007030 001051 002148 001012 001014 002040 033022 033023 033027 022063 302021 302022 302023 008081 025026 008081 025026 008081 025026 008081 002034 022060 007070 002190 025086 002035 002168 020031 002038 306004 002030 306005 007031 008081 012064 302001 008081 007032 007033 012101 012103 013003 007032 007033 008082 007033 002169 002002 008021 004025 011001 011002 008021 004025 011043 011041 008082 007033 007032 004024 013011 007032 008021 004024 014021 008021 025028 025028 025028 308009 7 301093 302001 302054 008002 302055 302057 302060 308010 16 001011 TRACKOB template 113000 031001 301011 301012 301021 004080 022049 004080 022059 004080 022005 002042 022032 002042 004080 308011 27 001011 Climat ship 002001 301011 301012 301023 007030 007031 004074 004023 008023 010051 007032 007033 012101 013004 007032 007033 302056 008023 004003 004004 004023 007032 013060 013051 004053 007032 308012 28 004001 Monthly normals from an ocean weather station 004001 004002 004003 004004 004074 004022 008023 010051 007032 007033 012101 013002 007032 007033 302056 008023 004001 004001 004002 004003 004004 004022 007032 008023 013060 004053 008023 308013 2 308011 308012 309001 4 301037 101000 031001 303011 309002 4 301038 101000 031001 303011 309003 4 301037 101000 031001 303012 309004 4 301038 101000 031001 303012 309005 5 301037 302004 101000 031001 303013 309006 5 301038 302004 101000 031001 303013 309007 5 301037 302004 101000 031001 303014 309008 5 301038 302004 101000 031001 303014 309011 4 301039 101000 031001 303011 309012 4 301039 101000 031001 303012 309013 5 301039 302004 101000 031001 303013 309014 5 301039 302004 101000 031001 303014 309015 4 301040 101000 031001 303011 309016 4 301040 101000 031001 303012 309017 5 301040 302004 101000 031001 303013 309018 5 301040 302004 101000 031001 303014 309019 5 301031 002003 101000 031001 303011 309020 8 301031 002003 104000 031001 007003 011003 011004 011005 309030 8 015004 015005 104000 031001 004015 008006 007004 015003 309031 8 015004 015005 104000 031001 004025 008006 007004 015003 309040 3 301075 301076 309030 309042 4 307042 301075 301076 309030 309050 9 301110 301113 301114 101000 031002 303050 101000 031001 303051 309051 9 301110 301113 301114 101000 031002 303052 101000 031001 303053 309052 11 301111 301113 301114 302049 022043 101000 031002 303054 101000 031001 303051 309053 9 301112 301113 301114 101000 031002 303054 101000 031001 303051 309054 27 301001 001011 301011 301012 301021 007030 007031 007007 004023 004059 115000 031001 008001 008023 007004 010009 012101 012103 008023 011001 011002 008023 011019 008050 008020 008050 008020 309060 4 301123 301121 302050 303040 309061 21 301120 008041 301122 201131 202129 025069 007004 202000 201000 033007 033035 033015 013009 033007 033035 033015 002013 012101 033007 033035 033015 309062 19 301120 008041 301122 005001 033035 033015 006001 033035 033015 007007 033035 033015 011003 033035 033015 011004 033035 033015 033007 309063 19 301120 008041 301122 005001 033035 033015 006001 033035 033015 007007 033035 033015 011003 033035 033015 011004 033035 033015 033007 309064 26 301120 008041 301122 201131 202129 104002 025069 007004 033035 033015 013003 033035 033015 202000 201000 104002 002013 012101 033035 033015 012103 033035 033015 010009 033035 033015 309065 18 301120 008041 301122 005001 033035 033015 006001 033035 033015 007007 033035 033015 011003 033035 033015 011004 033035 033015 309066 18 301120 008041 301122 008040 201131 202129 025069 007004 013003 202000 201000 002013 012101 012103 010009 010007 011002 011001 309194 5 301194 302004 101000 031001 303014 309195 5 301195 302004 101000 031001 303014 309196 5 301196 302004 101000 031001 303014 309198 5 301198 302004 101000 031001 303014 310001 5 301042 303031 303032 101026 303025 310002 5 301042 303031 303032 101009 303023 310003 5 301042 303031 303032 101006 303023 310004 5 301042 303031 303032 101003 303024 310005 6 301042 303031 303033 101000 031001 303025 310006 6 301042 303031 303033 101000 031001 303023 310007 6 301042 303031 303033 101000 031001 303024 310008 8 310011 101019 310012 002150 025079 025080 033032 014045 310009 3 310011 101015 310012 310010 3 310011 101005 310012 310011 45 008070 001033 001034 008070 001033 001034 001007 002048 005040 025075 201133 005041 201000 005043 025070 033030 033031 004001 004002 004003 004004 004005 202131 201138 004006 201000 202000 005001 006001 202126 007001 202000 007024 005021 007025 005022 033033 002151 012064 002151 012064 002151 012064 002151 012064 310012 10 002150 025076 025077 025078 033032 201132 202129 012063 202000 201000 310013 62 001007 005040 004001 004002 004003 004004 004005 004006 005001 006001 007025 005043 025085 201131 202129 002150 008023 008072 014027 008072 014027 002150 008023 008072 014027 008072 014027 002150 008023 008072 014027 008072 014027 202000 201000 201132 202129 002150 008023 008072 012063 008072 012063 002150 008023 008072 012063 008072 012063 008023 008072 012063 008072 012063 002150 008023 008072 012063 008072 012063 202000 201000 310014 3 301072 303041 304011 310015 13 301072 007024 010002 303041 101003 304032 002152 002024 007004 007004 013003 101003 304033 310016 13 301072 007024 010002 303041 101012 304032 002152 002024 007004 007004 013003 101012 304033 310019 68 001007 002019 301011 301013 301023 007025 008021 007025 008021 007025 008021 008029 005040 008075 008003 010004 008003 207002 015001 207000 033070 015030 207002 020081 207000 008003 033042 007004 207002 015001 207000 008003 113021 007004 007004 207002 008021 015005 008021 015005 033007 207000 008026 101020 025143 008026 008043 109015 007004 008090 207006 015008 207000 008090 207002 033007 207000 008043 033071 108008 202124 201107 002071 201000 202000 207002 020081 207000 310020 6 310022 301011 301013 301021 304034 310021 310021 10 108000 031001 201131 202129 007004 007004 202000 201000 015020 010002 310022 4 001007 002019 001033 002172 310023 17 301072 030021 030022 008012 007024 007025 010002 101012 304032 105002 002152 002024 007004 007004 013003 101012 304033 310024 17 301072 030021 030022 008012 007024 007025 010002 101003 304032 105002 002152 002024 007004 007004 013003 101003 304033 310025 61 001007 008021 004001 004002 004003 004004 004005 201138 202131 004006 202000 201000 201132 005041 201000 201129 005043 201000 005002 006002 013040 020029 104024 005042 012163 021083 021084 115003 004001 004002 004003 201142 202131 004026 202000 201000 005001 006001 201138 202129 007001 202000 201000 008021 004001 004002 004003 004004 004005 005040 101003 012070 025054 101004 025055 008007 104028 005002 006002 002111 005021 310026 82 310022 025060 008021 301011 301012 201138 202131 004006 202000 201000 033039 033007 304030 304031 002020 001050 202127 304030 202000 304031 201133 202131 004016 202000 201000 301021 304030 010035 005021 010036 113000 031002 301021 005021 108000 031001 002121 007040 015037 008023 201125 015037 201000 008023 033007 108000 031002 007007 015036 008023 201123 015036 201000 008023 033007 116000 031002 007009 010004 012001 013001 008023 201120 010004 201000 201122 012001 201000 201123 013001 201000 008023 033007 008003 007009 010004 008023 201120 010004 201000 008023 033007 310027 12 301071 301011 301013 301021 030021 030022 010002 304036 002152 002167 101011 304035 310029 12 110000 031001 201138 202130 007004 007004 202000 201000 015020 010002 012101 013098 310030 6 310022 301011 301013 301021 304034 310029 310050 14 310051 310052 101000 031002 310053 101004 310054 020010 310052 101015 310053 310052 101005 310053 310051 16 001007 005040 201133 005041 201000 201132 025070 201000 202126 007001 202000 007025 005022 102009 002151 012064 310052 12 002019 301011 301012 202131 201138 004006 201000 202000 301021 007024 005021 005043 310053 6 201134 005042 201000 025076 033032 012163 310054 13 201134 005042 201000 025076 033032 201131 202129 102002 008023 014027 008023 202000 201000 310055 8 310051 310052 102020 025076 025052 101000 031002 025050 310060 53 001007 001033 002019 002020 301011 301012 207003 004006 207000 304030 301021 007024 005021 007025 005022 008075 201133 005041 201000 005045 005043 005040 010001 201129 007002 201000 202127 201125 021166 201000 202000 008012 020010 020014 002165 033075 107003 008076 006029 006029 025140 025141 033076 033077 008076 033078 033003 104000 031002 201133 005042 201000 014044 310193 5 301250 303250 302250 303249 303251 310194 5 301250 303250 302250 303249 303252 310195 3 301250 303250 304250 310196 3 301250 303249 303251 310226 39 310022 025060 008021 301011 301012 201138 202131 004006 202000 201000 033039 033007 304030 304031 002020 001050 202127 304030 202000 304031 201133 202131 004016 202000 201000 301021 304030 010035 005021 010036 107000 031002 301021 005021 103000 031001 002121 007040 015037 311001 9 301051 007002 012001 011001 011002 011031 011032 011033 020041 311002 4 301065 301066 311003 311004 311003 5 010070 011001 011002 012001 013002 311004 18 101000 031000 011034 101000 031000 011035 101000 031000 011075 101000 031000 011076 101000 031000 033025 101000 031000 033026 311005 13 001008 001023 301021 301011 301013 007010 008009 011001 011002 011031 011036 012101 033025 311006 6 007010 011001 011002 002064 012101 012103 311007 7 007010 301021 011001 011002 002064 012101 012103 311008 8 001008 301011 301013 301021 008004 101000 031001 311006 311009 8 001008 301011 301013 301021 008004 101000 031001 311007 311193 16 301197 301011 301012 301023 008004 007004 008021 011001 011002 011031 011034 011035 012001 012003 013003 020041 312001 2 301043 304001 312002 2 301043 304002 312003 2 301042 304003 312004 2 301042 304004 312005 2 301042 020014 312006 2 301044 304005 312007 2 301042 304006 312010 6 001007 005040 002021 005041 004001 004043 312011 9 202131 201149 004006 201000 202126 010002 202000 005043 005053 312012 6 202129 201132 101019 012063 201000 202000 312013 6 005042 202129 201135 012063 201000 202000 312014 8 312010 312011 105056 301023 005042 005052 312012 312013 312015 10 109011 301023 005042 005052 202129 201132 101004 012063 202000 201000 312016 3 312010 312011 312015 312017 10 109008 301023 005042 005052 202129 201132 101003 012063 202000 201000 312018 3 312010 312011 312017 312019 13 301047 301048 015015 029002 021076 106012 201129 006030 201000 102012 005030 021075 021066 312020 11 301047 301048 015015 029002 021076 104012 006030 102012 005030 021075 021066 312021 6 301047 101003 301049 011012 011011 021067 312022 15 301047 008022 011012 011050 022070 022026 312041 010050 021068 021071 021072 021073 312042 021062 015011 312023 7 301047 103003 008022 012061 022050 021069 021085 312024 11 312020 008060 008022 008060 008022 025014 022101 022097 022098 022099 022100 312025 11 312019 008060 008022 008060 008022 025014 022101 022097 022098 022099 022100 312026 19 301046 301011 301013 301023 312031 101004 312030 021110 301023 321027 021111 301023 321027 021112 301023 321027 021113 301023 321027 312027 9 301047 105009 301023 007021 012061 007021 012061 021085 021070 312028 26 301046 301011 301013 301023 008025 201136 004006 201000 312031 312032 101004 312030 101002 312033 021110 301023 321028 021111 301023 321028 021112 301023 321028 021113 301023 321028 312030 13 201130 202129 011012 202000 201000 011052 201135 202130 011011 202000 201000 011053 021104 312031 8 005034 006034 021109 011081 011082 021101 021102 021103 312032 4 021120 021121 013055 021122 312033 4 002104 008022 012063 012065 312041 5 201141 202130 007001 201000 202000 312042 6 021077 021078 021079 021080 021081 021082 312045 21 001007 002019 001096 025061 005040 301011 301013 301021 007002 012180 012181 012182 012183 012184 012185 002174 021086 012186 021087 012187 033043 312050 23 001007 002019 001096 025061 005040 301011 301013 301021 007025 005022 010080 027080 008003 007004 013093 008003 201131 202129 007004 007004 202000 201000 013095 312051 48 001007 002019 001096 025061 005040 008075 301011 301013 301021 001012 201131 001013 201000 010032 010033 010034 007002 008012 025110 025111 025102 002104 025103 025104 025105 025106 025107 025108 002111 002121 002026 002027 021130 021131 021132 021133 021064 025014 021134 107018 005030 105024 201130 006030 201000 021135 021136 033044 312052 77 001007 002019 001096 025061 005040 025120 025121 025124 025125 025122 025123 301011 301013 301021 007002 002119 033047 010081 010082 010083 010084 002116 002117 002118 002156 002157 014055 022150 022151 022152 022153 022154 022155 022156 022157 022158 022159 021137 021138 021139 021140 021141 021142 010085 010086 010087 010088 010089 010090 010091 010092 010093 011002 025126 025127 025128 025129 025130 025131 025132 025133 025134 025135 025136 025137 013096 013097 011095 011096 012188 012189 002158 002159 033052 033053 021143 021144 312053 54 001007 002019 001096 025061 005040 008075 301011 301013 301021 001012 201131 001013 201000 010032 010033 010034 007002 008012 025110 025111 025102 002104 025103 025104 025105 025106 025107 025108 011001 011002 022160 025138 201130 202129 022021 202000 201000 033048 033049 002026 002027 021130 021131 021132 021133 025014 106036 005030 104024 201130 006030 201000 022161 033044 312055 5 005033 005040 006034 010095 021157 312056 11 025060 001032 011082 011081 020095 020096 021155 201133 021101 021102 201000 312057 12 201130 202129 011012 202000 201000 201131 202129 011011 202000 201000 021156 021104 312058 8 301125 301011 301013 301021 312055 021150 101003 321030 312059 4 312056 101000 031001 312057 312060 20 025060 025062 040001 040002 021062 021151 021152 021153 021154 021062 021062 040003 040004 040005 040006 040007 020065 040008 040009 040010 312061 3 312058 312060 312059 312070 27 001007 002019 001144 001124 030010 301011 301013 301021 007012 015012 012165 012166 012167 012168 027010 028010 002099 013048 025081 025082 025083 025084 012080 012081 012082 025174 033028 312200 10 301237 301238 029002 021206 104012 006232 102012 005232 021205 021196 312201 6 301237 101003 301239 011012 011011 021197 312202 13 301237 008022 011012 011050 301240 022243 301241 010050 021198 021201 021202 021203 301242 312203 8 301237 008022 012061 022050 021204 021199 021214 021215 312204 12 312201 001031 011012 011011 021200 021213 004004 008021 004024 055003 011012 011011 312207 3 312202 301202 033191 312208 17 301202 008022 008021 301011 301013 301023 302205 011002 001007 002021 301011 301013 301023 001032 001192 302205 011002 312209 11 301202 001192 301011 301013 301023 302206 104000 022192 102000 005232 022191 312210 13 312202 021192 015202 301011 004004 004005 201138 202131 004006 201000 202000 304228 304229 312211 19 301046 301011 301013 301023 312031 101004 312030 021110 101004 312212 021111 101004 312212 021112 101004 312212 021113 101004 312212 312212 2 301023 321027 313009 4 021001 101000 031001 021001 313010 4 021036 101000 031001 021036 313031 5 006002 006012 101000 031002 030001 313032 5 005002 005012 101000 031002 313031 313041 13 006002 110000 031001 104000 031001 006012 101000 031012 030001 006012 101000 031001 030001 313042 5 005002 005012 101000 031002 313041 313043 17 006002 005002 005012 112000 031001 110000 031001 104000 031001 006012 101000 031011 030001 006012 101000 031001 030001 315001 5 001011 301011 301012 301023 306001 315002 5 001011 301011 301012 301023 306004 315003 25 001087 001085 001086 002036 002148 002149 022055 022056 022067 301011 301012 301021 008080 033050 109000 031002 007065 008080 033050 022045 008080 033050 022064 008080 033050 316001 10 301011 004004 301023 001021 002041 019001 010051 019002 019003 019004 316002 15 008021 004001 004002 004003 004004 004005 001033 008021 004001 004002 004003 004004 004005 007002 007002 316003 12 110000 031001 008011 008007 104000 031001 005002 006002 010002 011002 008007 008011 316004 13 111000 031001 008011 008007 007002 007002 102000 031001 005002 006002 011031 008007 008011 316005 10 108000 031001 008005 008007 005002 006002 001026 019001 008007 008005 316006 14 112000 031001 008011 008007 007002 007002 102000 031001 005002 006002 020011 020012 008007 008011 316007 12 110000 031001 008011 008007 104000 031001 005002 006002 019005 019006 008007 008011 316008 13 111000 031001 008001 008007 008023 103000 031001 005002 006002 010002 008023 008007 008001 316009 13 111000 031001 008011 008007 007002 007002 102000 031001 005002 006002 020041 008007 008011 316010 9 107000 031001 008011 008007 001022 005002 006002 008007 008011 316011 19 117000 031001 008011 001022 008007 102000 031001 005002 006002 008021 004001 004002 004003 004004 004005 020090 008021 008007 008011 316020 5 001023 001025 001027 301011 301012 316021 23 301023 002041 019001 019007 019005 019006 019008 008005 010004 008005 010004 019007 008005 008021 004075 011040 019007 105004 005021 005021 102002 019003 019004 316022 24 001032 002041 019001 019010 118000 031001 008021 004014 008005 301023 019005 019006 010004 011041 008021 004075 011040 019008 105004 005021 005021 102002 019003 019004 316026 2 316020 316021 316030 10 301014 001037 010064 008019 001062 008019 001065 008019 001062 008019 316031 8 008021 301011 301012 301027 019005 019006 020028 008021 316032 5 008021 301011 301012 301027 008021 316033 7 008021 301011 301012 101000 031001 301027 008021 316034 17 008079 316030 008011 001022 008007 301023 008007 020090 316031 101000 031000 316032 101000 031001 316033 008011 008079 316035 9 008079 316030 008011 020023 020021 020008 316031 008011 008079 316036 13 008079 316030 008011 001027 316031 101000 031000 316032 101000 031001 316033 008011 008079 316037 7 008079 316030 008011 011031 316031 008011 008079 316038 8 008079 316030 008011 020041 020021 316031 008011 008079 316039 7 008079 316030 008011 020024 316031 008011 008079 316040 6 316030 008079 301014 001037 010064 008079 316050 16 301001 301011 301012 002160 008005 005002 006002 008005 019100 019005 019006 019101 019102 019103 019104 019105 316052 29 301005 301011 301012 001007 025150 122000 031001 001027 019150 019106 008005 005002 006002 008005 019107 019005 019006 019108 019109 019110 019111 019112 019113 019114 019115 019116 019117 019118 019119 318001 2 301025 024011 318003 4 301026 024005 024004 024021 318004 6 301025 004023 013011 024005 024004 024022 321001 6 002101 002114 002105 002106 002107 002121 321003 4 021051 021014 021017 021030 321004 5 301031 002003 101000 031001 321003 321005 12 025004 002121 002122 002123 002124 002125 002126 002127 002128 002129 002130 002131 321006 4 025001 025002 025003 025005 321007 8 025009 025010 025011 025012 025013 025015 025016 025017 321008 3 025006 025007 025008 321009 2 025018 025019 321010 13 002101 007002 002102 002103 002104 002105 002106 002107 002108 002109 002110 002132 002133 321011 3 030031 030032 029002 321012 3 101000 031001 002135 321021 15 002003 002101 201130 002106 201000 201132 202130 002121 202000 201000 201133 202129 025001 202000 201000 321022 11 007007 204001 031021 011001 204000 011002 204001 031021 011006 204000 021030 321023 9 007007 021091 021030 202129 021014 201129 021017 202000 201000 321024 7 007007 204001 031021 012007 011006 204000 021030 321025 17 007007 021091 021030 202129 021014 201129 021017 202000 201000 021092 021030 025092 201129 202129 021017 202000 201000 321026 10 007007 204001 031021 012007 025091 011071 011072 011073 011074 204000 321027 18 021118 202129 201132 002112 201000 201131 002111 201000 202000 002104 021105 021106 021107 021114 021115 021116 008018 021117 321028 18 021118 202129 201132 002112 201000 201131 002111 201000 202000 002104 021123 021106 021107 021114 021115 021116 008018 021117 321030 18 008085 202129 201131 002111 201000 202000 002134 021062 021063 021158 021159 021160 021161 021162 021163 021164 021165 021166 340001 45 001007 001031 002019 002020 004001 004002 004003 004004 004005 202131 201138 004006 201000 202000 005001 006001 007024 005021 007025 005022 005043 005040 201133 005041 201000 201132 025070 201000 202126 007001 202000 033060 033061 033062 033063 033064 033065 101010 340002 101087 340003 002019 025051 101007 340004 340002 3 025140 025141 025142 340003 5 104100 201136 005042 201000 014046 340004 9 005060 005061 025085 105006 005042 025142 014047 025142 014048 340005 94 001007 002019 001096 025061 005044 005040 001030 301011 301012 004007 005001 006001 008029 008074 008077 040011 025097 025095 025098 025099 021144 025096 040012 040013 021169 022151 022162 022163 025160 025133 022156 022164 022165 022166 021137 021138 022167 021139 021118 021145 021146 021147 022168 022169 022170 025161 025162 022171 022172 022173 022174 021170 021171 022175 021172 021118 021173 021174 021175 102003 002153 012063 013090 013091 007002 011097 011098 007002 011095 011096 010096 010081 010082 010083 010101 025132 025163 025126 025128 025164 010085 010097 010086 010087 010092 010088 010089 010098 010099 010090 010100 010093 025127 040014 340007 57 001007 001031 002019 002020 004001 004002 004003 004004 004005 202131 201138 004006 201000 202000 005001 006001 007024 005021 007025 005022 005043 005040 201133 005041 201000 201132 025070 201000 202126 007001 202000 103003 025140 025141 033060 033061 033062 033063 033064 033065 040020 101010 340002 101087 340003 002019 025051 101007 340004 020081 008029 020083 008029 040018 040019 040021 040022 340008 70 001007 001031 002019 002020 004001 004002 004003 004004 004005 202131 201138 004006 201000 202000 005001 006001 007024 005021 007025 005022 005043 005040 201133 005041 201000 201132 025070 201000 202126 007001 202000 103003 025140 025141 033060 033061 033062 033063 033064 033065 040020 101010 340002 104000 031002 201136 005042 201000 014046 108003 025140 025141 040015 040016 025062 101000 031002 040017 002019 025051 101007 340004 020081 008029 020083 008029 040018 040019 040021 040022 dballe-7.21/tables/D990204.txt0000644000175000017500000052523113022043102012470 00000000000000 D00002 2 B00002 B00003 D00003 3 B00010 B00011 B00012 D00004 9 D00003 B00013 B00014 B00015 B00016 B00017 B00018 B00019 B00020 D00010 3 D00003 R01000 B00030 D01001 2 B01001 B01002 D01002 3 B01003 B01004 B01005 D01003 3 B01011 B01012 B01013 D01004 4 B01001 B01002 B01015 B02001 D01011 3 B04001 B04002 B04003 D01012 2 B04004 B04005 D01013 3 B04004 B04005 B04006 D01021 2 B05001 B06001 D01022 3 B05001 B06001 B07001 D01023 2 B05002 B06002 D01024 3 B05002 B06002 B07001 D01025 3 D01023 B04003 D01012 D01026 7 D01021 B04003 B04003 B04004 B04004 B04005 B04005 D01029 3 B01018 B02001 D01011 D01030 4 B01018 B02001 D01011 D01024 D01031 5 D01001 B02001 D01011 D01012 D01022 D01032 5 D01001 B02001 D01011 D01012 D01024 D01033 5 B01005 B02001 D01011 D01012 D01021 D01034 5 B01005 B02001 D01011 D01012 D01023 D01035 7 B01005 B01012 B01013 B02001 D01011 D01012 D01023 D01036 5 D01003 B02001 D01011 D01012 D01023 D01037 6 D01001 B02011 B02012 D01011 D01012 D01022 D01038 6 D01001 B02011 B02012 D01011 D01012 D01024 D01039 6 D01003 B02011 B02012 D01011 D01012 D01023 D01040 6 D01003 B02011 B02012 D01011 D01012 D01024 D01041 5 B01007 B02021 B02022 D01011 D01012 D01042 2 D01041 D01021 D01043 5 B01007 B02023 D01011 D01013 D01021 D01044 5 B01007 B02024 D01011 D01013 D01021 D01049 5 B02111 B02112 B21062 B21063 B21065 D01051 6 B01006 B02061 D01011 D01012 D01021 B08004 D01055 7 B01005 B02001 D01011 D01012 D01021 B01012 B01014 D01062 2 R01000 D01001 D01065 8 B01006 B01008 B02001 B02002 B02005 B02062 B02070 B02065 D01066 6 D01011 D01013 D01023 B07004 B02064 B08004 D01070 3 B02143 B02142 B02144 D01071 5 B01007 B01031 B02020 B02028 B02029 D01072 4 D01071 D01011 D01013 D01021 D01074 4 B02143 B02142 B02145 B02146 D01075 6 D01001 B01015 D01024 B08021 D01011 D01012 D01076 3 B02011 B02143 B02142 D01090 6 D01004 D01011 D01012 D01021 B07030 B07031 D01091 10 B02180 B02181 B02182 B02183 B02184 B02179 B02186 B02187 B02188 B02189 D01193 5 001007 001031 002196 002221 002222 D01250 4 D01193 D01011 D01013 D01021 D02001 4 B10004 B10051 B10061 B10063 D02002 5 B10004 B07004 B10003 B10061 B10063 D02003 9 B11011 B11012 B12004 B12006 B13003 B20001 B20003 B20004 B20005 D02004 7 B20010 B08002 B20011 B20013 B20012 B20012 B20012 D02005 4 B08002 B20011 B20012 B20013 D02006 4 B10004 B10051 B10062 B10063 D02011 3 D02001 D02003 D02004 D02012 3 D02002 D02003 D02004 D02013 4 D02006 D02003 R01000 D02005 D02021 3 B22001 B22011 B22021 D02022 3 B22002 B22012 B22022 D02023 3 B22003 B22013 B22023 D02024 3 D02022 R01002 D02023 D02051 12 B10004 B10051 B07004 B10003 B12004 B12051 B12016 B12017 B13004 R02004 B08051 B08020 D02069 4 B07032 B07033 B33041 B20001 D02070 8 B07032 B07033 B11001 B11002 B11043 B11041 B11016 B11017 D02071 14 B07032 B07033 B08021 B04025 B11001 B11002 B08021 R03002 B04025 B11043 B11041 B04025 B11016 B11017 D02072 5 B07032 B07033 B12101 B12103 B13003 D02073 7 B20010 R05004 B08002 B20011 B20012 B33041 B20013 D02074 4 B20003 B04025 B20004 B20005 D02075 5 B08021 B04025 B13055 B13058 B08021 D02076 7 B02021 B20022 B26020 B20023 B20024 B20025 B20026 D02077 12 B07032 B07033 B04025 B12111 B12112 B07032 B04025 B12112 B02176 B20062 B02177 B13013 D02078 4 B02176 B20062 B02177 B13013 D02079 5 B07032 B02175 B02178 B04025 B13011 D02080 3 B02185 B04025 B13033 D02081 2 B04025 B14031 D02082 7 B04025 B14002 B14004 B14016 B14028 B14029 B14030 D02083 8 B04025 B08023 B10004 B11001 B11002 B12101 B13003 B08023 D03001 3 B07003 B11001 B11002 D03002 3 B07004 B11001 B11002 D03003 4 B07004 B10003 B12001 B12003 D03004 6 B07004 B10003 B12001 B12003 B11001 B11002 D03011 4 B07003 B08001 B11001 B11002 D03012 4 B07004 B08001 B11001 B11002 D03013 7 B07004 B08001 B10003 B12001 B13003 B11001 B11002 D03014 7 B07004 B08001 B10003 B12001 B12003 B11001 B11002 D03031 6 B07004 B08003 B07021 B07022 B08012 B12061 D03032 2 B20011 B20016 D03033 2 B20010 B20016 D03041 8 B02152 B02023 B07004 B11001 B11002 B02153 B02154 B12071 D03250 8 B02252 B02023 B07004 B11001 B11002 B02197 B02198 B12193 D04001 5 B08003 B10004 B12001 B11001 B11002 D04002 4 B08003 B10004 B11001 B11002 D04003 2 B08003 B12001 D04004 4 B08003 B10004 B20010 B12001 D04005 4 B02024 B07004 B07004 B13003 D04006 3 B14001 B14001 B14003 D04011 27 B02163 B02164 B08012 B07024 B02057 B08021 B04001 B04002 B04003 B04004 B08021 B04024 R10004 B08021 B04004 B04005 B04006 B08021 B04004 B04005 B04006 B11001 B11002 R03010 B02163 B07004 B12001 D04030 3 B27031 B28031 B10031 D04031 3 B01041 B01042 B01043 D04032 5 B02153 B02154 B20081 B20082 B20012 D04033 8 B02152 B02166 B02167 B02153 B02154 B12075 B12076 B12063 D04034 9 R02004 B27001 B28001 B07022 B05043 B20010 B20016 B33003 B10040 D04250 27 B02231 B02232 B08012 B07024 B02057 B08021 B04001 B04002 B04003 B04004 B08021 B04024 R10004 B08021 B04004 B04005 B04006 B08021 B04004 B04005 B04006 B11001 B11002 R03010 B02231 B07004 B12001 D05001 4 B11001 B11002 B13060 B13071 D05002 11 D01012 B12001 B13003 B14051 B13060 B13072 B13080 B13081 B13082 B13083 B13084 D05003 4 D01012 B04065 R01000 D05001 D05004 3 D01030 D05002 D05003 D05006 8 B13072 B13082 B13019 C07005 C01004 B12001 B13073 B13060 D05007 5 D01029 D01012 B04065 R01000 D05006 D05008 4 D05006 C07005 C01004 B12030 D05009 5 D01029 D01012 B04065 R01000 D05008 D05010 3 D05008 B02091 B02091 D05011 5 D01029 D01012 B04065 R01000 D05010 D05016 7 B14021 B07004 B13003 B11002 B11001 B11041 B11043 D05017 5 B13080 B13081 B13083 B13085 B13084 D05018 7 D01029 D01012 B04065 R03000 D05008 D05016 D05017 D06001 4 B02032 R02000 B07062 B22042 D06002 3 B02031 B22004 B22031 D06003 4 B02002 B11011 B11012 B12004 D06004 6 B02032 B02033 R03000 B07062 B22043 B22062 D06005 5 B02031 R03000 B07062 B22004 B22031 D06006 3 D06003 D06002 B22063 D06007 6 B01012 B01014 D06008 B04024 B27003 B28003 D06008 3 B02034 B02035 B02036 D06020 8 B01075 D01011 D01012 B22042 B22120 B22121 B04075 B04065 D06021 7 B01075 D01011 D01012 B22122 B22123 B12001 D03002 D06022 5 B01075 D01011 D01012 B22038 B22039 D06023 8 B01015 D01023 D01011 D01012 B22038 B22039 B22120 B22121 D06024 4 D06020 R02000 B22038 B22039 D07001 2 D01031 D02011 D07002 2 D01032 D02011 D07003 3 D07001 R01000 D02005 D07004 3 D07002 R01000 D02005 D07005 3 D07001 R01004 D02005 D07006 3 D07002 R01004 D02005 D07007 2 D01031 D02012 D07008 2 D01032 D02012 D07009 2 D01031 D02013 D07011 16 B01063 B02001 D01011 D01012 D01024 B07006 B11001 B11016 B11017 B11002 B11041 B07006 B12001 B12003 B10052 B20009 D07012 4 R03000 B08023 B05021 B20001 D07013 7 R06000 B01064 B08014 B20061 B08014 B20061 B20018 D07014 2 R01000 B20019 D07015 3 R01000 D02005 B20002 D07016 2 R01000 B20020 D07017 2 R01000 B11070 D07018 13 B08016 R02000 B08017 D01012 R04000 B07006 B11001 B11002 B11041 B20009 R01000 B20001 D07014 D07020 3 D07011 D07014 D07016 D07021 9 D07011 D07012 D07013 D07014 D07015 D07016 D07017 D07018 D07015 D07030 2 B15001 B15002 D07031 7 B08022 B08023 B15001 B08023 B15001 B08023 B15002 D07041 7 D01001 B01015 D01024 D01011 D01012 D01070 D07030 D07042 9 D01001 B01015 D01024 D01011 D01012 B08021 B04025 D01070 D07031 D07043 7 D01001 B01015 D01024 D01011 D01012 D01074 D07030 D07044 9 D01001 B01015 D01024 D01011 D01012 B08021 B04025 D01074 D07031 D07060 2 B07061 B12030 D07061 3 D01031 R01005 D07060 D07062 3 D01032 R01005 D07060 D07063 2 B07061 B12130 D08001 3 D01033 D02011 B22042 D08002 3 D01034 D02011 B22042 D08003 3 D01035 D02011 B22042 D08004 3 D01036 D02011 B22042 D08005 2 D08004 D02024 D08006 8 B10004 B10061 B10063 B11001 B11002 B12004 B13003 B22042 D08007 4 D01055 D02011 B07062 B22042 D09001 3 D01037 R01000 D03011 D09002 3 D01038 R01000 D03011 D09003 3 D01037 R01000 D03012 D09004 3 D01038 R01000 D03012 D09005 4 D01037 D02004 R01000 D03013 D09006 4 D01038 D02004 R01000 D03013 D09007 4 D01037 D02004 R01000 D03014 D09008 4 D01038 D02004 R01000 D03014 D09011 3 D01039 R01000 D03011 D09012 3 D01039 R01000 D03012 D09013 4 D01039 D02004 R01000 D03013 D09014 4 D01039 D02004 R01000 D03014 D09015 3 D01040 R01000 D03011 D09016 3 D01040 R01000 D03012 D09017 4 D01040 D02004 R01000 D03013 D09018 4 D01040 D02004 R01000 D03014 D09019 4 D01031 B02003 R01000 D03011 D09020 7 D01031 B02003 R04000 B07003 B11003 B11004 B11005 D09030 7 B15004 B15005 R04000 B04015 B08006 B07004 B15003 D09040 3 D01075 D01076 D09030 D09041 4 D07041 D01075 D01076 D09030 D09042 4 D07042 D01075 D01076 D09030 D09044 4 D07044 D01075 D01076 D09030 D10001 5 D01042 D03031 D03032 R01026 D03025 D10002 5 D01042 D03031 D03032 R01009 D03023 D10003 5 D01042 D03031 D03032 R01006 D03023 D10004 5 D01042 D03031 D03032 R01003 D03024 D10005 5 D01042 D03031 D03033 R01000 D03025 D10006 5 D01042 D03031 D03033 R01000 D03023 D10007 5 D01042 D03031 D03033 R01000 D03024 D10008 8 D10011 R01019 D10012 B02150 B25079 B25080 B33032 B14045 D10009 3 D10011 R01015 D10012 D10010 3 D10011 R01005 D10012 D10014 3 D01072 D03041 D04011 D10015 13 D01072 B07024 B10002 D03041 R01003 D04032 B02152 B02024 B07004 B07004 B13003 R01003 D04033 D10016 13 D01072 B07024 B10002 D03041 R01012 D04032 B02152 B02024 B07004 B07004 B13003 R01012 D04033 D10020 6 D10022 D01011 D01013 D01021 D04034 D10021 D10022 4 B01007 B02019 B01033 B02172 D10023 17 D01072 B30021 B30022 B08012 B07024 B07025 B10002 R01012 D04032 R05002 B02152 B02024 B07004 B07004 B13003 R01012 D04033 D10050 13 D10051 D10052 R01000 D10053 R01004 D10054 B20010 D10052 R01015 D10053 D10052 R01004 D10053 D10195 3 D01250 D03250 D04250 D11001 9 D01051 B07002 B12001 B11001 B11002 B11031 B11032 B11033 B20041 D11002 4 D01065 D01066 D11003 D11004 D11003 5 B10070 B11001 B11002 B12001 B13002 D11004 12 R01000 B11034 R01000 B11035 R01000 B11075 R01000 B11076 R01000 B33025 R01000 B33026 D11005 13 B01008 B01023 D01021 D01011 D01013 B07010 B08009 B11001 B11002 B11031 B11036 B12101 B33025 D11006 6 B07010 B11001 B11002 B02064 B12101 B12103 D11193 16 D01197 D01011 D01012 D01023 B08004 B07004 B08021 B11001 B11002 B11031 B11034 B11035 B12001 B12003 B13003 B20041 D12001 2 D01043 D04001 D12002 2 D01043 D04002 D12003 2 D01042 D04003 D12004 2 D01042 D04004 D12005 2 D01042 B20014 D12006 2 D01044 D04005 D12007 2 D01042 D04006 D12010 6 B01007 B05040 B02021 B05041 B04001 B04043 D12014 8 D12010 D12011 R05056 D01023 B05042 B05052 D12012 D12013 D12016 3 D12010 D12011 D12015 D12018 3 D12010 D12011 D12017 D12020 11 D01047 D01048 B15015 B29002 B21076 R04012 B06030 R02012 B05030 B21075 B21066 D12021 6 D01047 R01003 D01049 B11012 B11011 B21067 D12022 15 D01047 B08022 B11012 B11050 B22070 B22026 D12041 B10050 B21068 B21071 B21072 B21073 D12042 B21062 B15011 D12023 7 D01047 R03003 B08022 B12061 B22050 B21069 B21085 D12024 11 D12020 B08060 B08022 B08060 B08022 B25014 B22101 B22097 B22098 B22099 B22100 D12025 11 D12019 B08060 B08022 B08060 B08022 B25014 B22101 B22097 B22098 B22099 B22100 D12026 19 D01046 D01011 D01013 D01023 D12031 R01004 D12030 B21110 D01023 D21027 B21111 D01023 D21027 B21112 D01023 D21027 B21113 D01023 D21027 D12027 9 D01047 R05009 D01023 B07021 B12061 B07021 B12061 B21085 B21070 D12031 8 B05034 B06034 B21109 B11081 B11082 B21101 B21102 B21103 D12032 4 B21120 B21121 B13055 B21122 D12033 4 B02104 B08022 B12063 B12065 D12042 6 B21077 B21078 B21079 B21080 B21081 B21082 D12045 21 B01007 B02019 B01096 B25061 B05040 D01011 D01013 D01021 B07002 B12180 B12181 B12182 B12183 B12184 B12185 B02174 B21086 B12186 B21087 B12187 B33043 D13009 3 B21001 R01000 B21001 D13010 3 B21036 R01000 B21036 D13031 4 B06002 B06012 R01000 B30001 D13032 4 B05002 B05012 R01000 D13031 D13041 9 B06002 R10000 R04000 B06012 R01000 B30001 B06012 R01000 B30001 D13042 4 B05002 B05012 R01000 D13041 D13043 11 B06002 B05002 B05012 R12000 R10000 R04000 B06012 R01000 B30001 R01000 B30001 D15001 5 B01011 D01011 D01012 D01023 D06001 D15002 5 B01011 D01011 D01012 D01023 D06004 D16001 10 D01011 B04004 D01023 B01021 B02041 B19001 B10051 B19002 B19003 B19004 D16002 15 B08021 B04001 B04002 B04003 B04004 B04005 B01033 B08021 B04001 B04002 B04003 B04004 B04005 B07002 B07002 D16003 10 R09000 B08011 B08007 R04000 B05002 B06002 B10002 B11002 B08007 B08011 D16004 11 R10000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B11031 B08007 B08011 D16005 9 R08000 B08005 B08007 B05002 B06002 B01026 B19001 B08007 B08005 D16006 12 R11000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B20011 B20012 B08007 B08011 D16007 10 R09000 B08011 B08007 R04000 B05002 B06002 B19005 B19006 B08007 B08011 D16008 11 R10000 B08001 B08007 B08023 R03000 B05002 B06002 B10002 B08023 B08007 B08001 D16009 11 R10000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B20041 B08007 B08011 D16010 8 R07000 B08011 B08007 B01022 B05002 B06002 B08007 B08011 D16011 17 R16000 B08011 B01022 B08007 R02000 B05002 B06002 B08021 B04001 B04002 B04003 B04004 B04005 B20090 B08021 B08007 B08011 D16020 5 B01023 B01025 B01027 D01011 D01012 D16021 23 D01023 B02041 B19001 B19007 B19005 B19006 B19008 B08005 B10004 B08005 B10004 B19007 B08005 B08021 B04075 B11040 B19007 R05004 B05021 B05021 R02002 B19003 B19004 D16022 23 B01032 B02041 B19001 B19010 R18000 B08021 B04014 B08005 D01023 B19005 B19006 B10004 B11041 B08021 B04075 B11040 B19008 R05004 B05021 B05021 R02002 B19003 B19004 D16026 2 D16020 D16021 D18001 2 D01025 B24011 D18003 4 D01026 B24005 B24004 B24021 D18004 6 D01025 B04023 B13011 B24005 B24004 B24022 D21001 6 B02101 B02114 B02105 B02106 B02107 B02121 D21003 4 B21051 B21014 B21017 B21030 D21004 4 D01031 B02003 R01000 D21003 D21005 12 B25004 B02121 B02122 B02123 B02124 B02125 B02126 B02127 B02128 B02129 B02130 B02131 D21006 4 B25001 B25002 B25003 B25005 D21007 8 B25009 B25010 B25011 B25012 B25013 B25015 B25016 B25017 D21008 3 B25006 B25007 B25008 D21009 2 B25018 B25019 D21010 13 B02101 B07002 B02102 B02103 B02104 B02105 B02106 B02107 B02108 B02109 B02110 B02132 B02133 D21011 3 B30031 B30032 B29002 D21012 2 R01000 B02135 D35001 4 B08035 B35001 B08036 D01001 D35002 4 B08035 B35001 B08036 B01033 D35003 6 B08021 B04001 B04002 B04003 B04004 B04073 D35004 7 B08021 B04004 B08021 B04004 B35000 D01001 B35011 D35005 7 B08021 B04004 B08021 B04004 B35000 B01001 B35011 D35006 7 B08021 B04004 B08021 B04004 B35000 B01003 B35011 D35007 9 B08021 B04004 B08021 B04004 B35000 B01001 R02000 B01002 B35011 D35010 3 D35002 D35003 D35007 dballe-7.21/tables/Makefile.am0000644000175000017500000000124213022043102013077 00000000000000## Process this file with automake to produce Makefile.in crexbtables = B990203.txt B990204.txt B000299.txt crexdtables = D990203.txt D990204.txt D000299.txt bufrbtables = B000000002001200.txt \ B000000002001400.txt \ B0000000000200014001.txt bufrdtables = D000000002001200.txt \ D000000002001400.txt \ D0000000000200014001.txt table_DATA = repinfo.csv dballe.txt $(crexbtables) $(crexdtables) $(bufrbtables) $(bufrdtables) B000000002001400.txt: dballe.txt cut -b 1-119 < $< > $@ B0000000000200014001.txt: dballe.txt cut -b 1-119 < $< > $@ B990204.txt: dballe.txt cp $< $@ B000299.txt: dballe.txt cp $< $@ EXTRA_DIST = $(table_DATA) dballe-7.21/tables/dballe.txt0000644000175000017500000023766413022043102013052 00000000000000 001001 WMO BLOCK NUMBER NUMERIC 0 0 7 NUMERIC 0 2 001002 WMO STATION NUMBER NUMERIC 0 0 10 NUMERIC 0 3 001006 AIRCRAFT FLIGHT NUMBER CCITTIA5 0 0 64 CHARACTER 0 8 001007 SATELLITE IDENTIFIER CODE TABLE 1007 0 0 10 CODE TABLE 1007 0 3 001008 AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION CCITTIA5 0 0 64 CHARACTER 0 8 001011 SHIP OR MOBILE LAND STATION IDENTIFIER CCITTIA5 0 0 72 CHARACTER 0 9 001012 DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM** DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 001013 SPEED OF MOTION OF MOVING OBSERVING PLATFORM* M/S 0 0 10 M/S 0 3 001019 LONG STATION OR SITE NAME CCITTIA5 0 0 256 CHARACTER 0 32 001023 OBSERVATION SEQUENCE NUMBER NUMERIC 0 0 9 NUMERIC 0 3 001033 IDENTIFICATION OF ORIGINATING/GENERATING CENTRE CODE TABLE 001033 0 0 8 CODE TABLE 001033 0 3 001034 IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE CODE TABLE 001034 0 0 8 CODE TABLE 001034 0 3 001063 ICAO LOCATION INDICATOR CCITTIA5 0 0 64 CHARACTER 0 8 001192 [SIM] MeteoDB station ID NUMERIC 0 0 24 NUMERIC 0 8 001193 [SIM] Report code NUMERIC 0 0 16 NUMERIC 0 5 001194 [SIM] Report mnemonic CCITTIA5 0 0 128 CHARACTER 0 16 001212 AIR QUALITY OBSERVING STATION LOCAL CODE CCITTIA5 0 0 56 CHARACTER 0 7 001213 AIRBASE AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 56 CHARACTER 0 7 001214 GEMS AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 48 CHARACTER 0 6 001215 AIR QUALITY OBSERVING STATION DOMINANT EMISSION SOURCE CODE TABLE 001215 0 0 3 CODE TABLE 001215 0 1 001216 AIR QUALITY OBSERVING STATION AREA TYPE CODE TABLE 001216 0 0 3 CODE TABLE 001216 0 1 001217 AIR QUALITY OBSERVING STATION TERRAIN TYPE CODE TABLE 001217 0 0 4 CODE TABLE 001217 0 2 002001 TYPE OF STATION CODE TABLE 2001 0 0 2 CODE TABLE 2001 0 1 002002 TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT FLAG TABLE 2002 0 0 4 FLAG TABLE 2002 0 2 002003 TYPE OF MEASURING EQUIPMENT USED CODE TABLE 2003 0 0 4 CODE TABLE 2003 0 2 002004 TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C CODE TABLE 2004 0 0 4 CODE TABLE 2004 0 2 002005 PRECISION OF TEMPERATURE OBSERVATION K 2 0 7 K 2 3 002011 RADIOSONDE TYPE CODE TABLE 2011 0 0 8 CODE TABLE 2011 0 3 002012 RADIOSONDE COMPUTATIONAL METHOD CODE TABLE 2012 0 0 4 CODE TABLE 2012 0 2 002013 SOLAR AND INFRARED RADIATION CORRECTION CODE TABLE 2013 0 0 4 CODE TABLE 2013 0 2 002014 TRACKING TECHNIQUE/STATUS OF SYSTEM USED CODE TABLE 2014 0 0 7 CODE TABLE 2014 0 3 002038 METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT CODE TABLE 2038 0 0 4 CODE TABLE 2038 0 2 002039 METHOD OF WET-BULB TEMPERATURE MEASUREMENT CODE TABLE 2039 0 0 3 CODE TABLE 2039 0 1 002048 SATELLITE SENSOR INDICATOR CODE TABLE 2048 0 0 4 CODE TABLE 2048 0 2 002061 AIRCRAFT NAVIGATIONAL SYSTEM CODE TABLE 2061 0 0 3 CODE TABLE 2061 0 1 002062 TYPE OF AIRCRAFT DATA RELAY SYSTEM CODE TABLE 2062 0 0 4 CODE TABLE 2062 0 2 002063 AIRCRAFT ROLL ANGLE DEGREE 2 -18000 16 DEGREE 2 5 002064 AIRCRAFT ROLL ANGLE QUALITY CODE TABLE 2064 0 0 2 CODE TABLE 2064 0 1 002070 ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE CODE TABLE 2070 0 0 4 CODE TABLE 2070 0 2 002121 MEAN FREQUENCY Hz -8 0 7 Hz -8 3 002125 PULSE REPETITION FREQUENCY Hz -1 0 8 Hz -1 3 004001 YEAR YEAR 0 0 12 YEAR 0 4 004002 MONTH MONTH 0 0 4 MONTH 0 2 004003 DAY DAY 0 0 6 DAY 0 2 004004 HOUR HOUR 0 0 5 HOUR 0 2 004005 MINUTE MINUTE 0 0 6 MINUTE 0 2 004006 SECOND SECOND 0 0 6 SECOND 0 2 004086 LONG TIME PERIOD OR DISPLACEMENT SECOND 0 -8192 15 SECOND 0 5 004192 [SIM] Time range type NUMERIC 0 0 10 NUMERIC 0 4 004193 [SIM] Time range P1 NUMERIC 0 -536870912 31 NUMERIC 0 10 004194 [SIM] Time range P2 NUMERIC 0 -536870912 31 NUMERIC 0 10 004195 [SIM] Temperature event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 004196 [SIM] Relative humidity event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 004197 [SIM] Wind velocity event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 004198 [SIM] Pressure event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 005001 LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 005015 LATITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 005021 BEARING OR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005022 SOLAR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005040 ORBIT NUMBER NUMERIC 0 0 24 NUMERIC 0 8 005041 SCAN LINE NUMBER NUMERIC 0 0 8 NUMERIC 0 3 005043 FIELD OF VIEW NUMBER NUMERIC 0 0 8 NUMERIC 0 3 006001 LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 006015 LONGITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 007002 HEIGHT OR ALTITUDE M -1 -40 16 M -1 5 007004 PRESSURE PA -1 0 14 PA -1 5 007007 HEIGHT M 0 -1000 17 M 0 6 007010 FLIGHT LEVEL M 0 -1024 16 FT -1 5 007024 SATELLITE ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007025 SOLAR ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007030 HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3) M 1 -4000 17 M 1 5 007031 HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4) M 1 - 4000 17 M 1 5 007032 HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) M 2 0 16 M 2 5 007192 [SIM] First level type NUMERIC 0 0 10 NUMERIC 0 4 007193 [SIM] Level L1 NUMERIC 0 -536870912 31 NUMERIC 0 10 007194 [SIM] Level L2 NUMERIC 0 -536870912 31 NUMERIC 0 10 007195 [SIM] Second level type NUMERIC 0 0 31 NUMERIC 0 4 008002 VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS) CODE TABLE 8002 0 0 6 CODE TABLE 8002 0 2 008004 PHASE OF AIRCRAFT FLIGHT CODE TABLE 8004 0 0 3 CODE TABLE 8004 0 1 008009 DETAILED PHASE OF FLIGHT CODE TABLE 8009 0 0 4 CODE TABLE 8009 0 2 008021 TIME SIGNIFICANCE CODE TABLE 8021 0 0 5 CODE TABLE 8021 0 2 008042 EXTENDED VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8042 0 0 18 FLAG TABLE 8042 0 6 008044 (VAL) CAS REGISTRY NUMBER CCITTIA5 0 0 88 CHARACTER 0 11 008192 [SIM] Number of wind velocity mean values present NUMERIC 0 0 5 NUMERIC 0 2 008193 [SIM] Number of wind velocity minimum values present NUMERIC 0 0 5 NUMERIC 0 2 008194 [SIM] Number of wind velocity maximum values present NUMERIC 0 0 5 NUMERIC 0 2 008195 [SIM] Number of wind prevalent direction values present NUMERIC 0 0 5 NUMERIC 0 2 008196 [SIM] Number of mean temperature values present NUMERIC 0 0 5 NUMERIC 0 2 008197 [SIM] Number of minimum temperature values present NUMERIC 0 0 5 NUMERIC 0 2 008198 [SIM] Number of maximum temperature values present NUMERIC 0 0 5 NUMERIC 0 2 008199 [SIM] Number of mean relative humidity values present NUMERIC 0 0 5 NUMERIC 0 2 008200 [SIM] Number of minimum relative humidity values present NUMERIC 0 0 5 NUMERIC 0 2 008201 [SIM] Number of maximum relative humidity values present NUMERIC 0 0 5 NUMERIC 0 2 008202 [SIM] Number of mean pressure values present NUMERIC 0 0 5 NUMERIC 0 2 008203 [SIM] Number of minimum pressure values present NUMERIC 0 0 5 NUMERIC 0 2 008204 [SIM] Number of maximum pressure values present NUMERIC 0 0 5 NUMERIC 0 2 008205 [SIM] Number of precipitation values present NUMERIC 0 0 5 NUMERIC 0 2 008206 [SIM] Number of leaf wetness values present NUMERIC 0 0 5 NUMERIC 0 2 008207 [SIM] Number of scalar wind velocity mean values present NUMERIC 0 0 5 NUMERIC 0 2 008208 [SIM] Number of cloud cover mean values present NUMERIC 0 0 5 NUMERIC 0 2 008209 [SIM] Number of cloud cover maximum values present NUMERIC 0 0 5 NUMERIC 0 2 008210 [SIM] Number of cloud cover minimum values present NUMERIC 0 0 5 NUMERIC 0 2 010004 PRESSURE PA -1 0 14 PA -1 5 010007 HEIGHT M 0 -1000 17 M 0 6 010008 GEOPOTENTIAL M**2/S**2 0 -10000 20 M**2/S**2 0 7 010009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 GPM 0 5 010051 PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5 010052 ALTIMETER SETTING (QNH) PA -1 0 14 PA -1 5 010060 PRESSURE CHANGE PA -1 -1024 11 PA -1 4 010063 CHARACTERISTIC OF PRESSURE TENDENCY CODE TABLE 10063 0 0 4 CODE TABLE 10063 0 2 010197 ANEMOMETER HEIGHT M 0 0 9 M 0 3 011001 WIND DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011002 WIND SPEED M/S 1 0 12 M/S 1 4 011003 U-COMPONENT M/S 1 -4096 13 M/S 1 4 011004 V-COMPONENT M/S 1 -4096 13 M/S 1 4 011005 W-COMPONENT PA/S 1 -512 10 PA/S 1 4 011006 W-COMPONENT M/S 2 -4096 13 M/S 2 4 011016 EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011017 EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011031 DEGREE OF TURBULENCE CODE TABLE 11031 0 0 4 CODE TABLE 11031 0 2 011036 MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED M/S 1 0 10 M/S 1 4 011037 TURBULENCE INDEX CODE TABLE 11037 0 0 6 CODE TABLE 11037 0 2 011039 EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE CODE TABLE 11039 0 0 6 CODE TABLE 11039 0 2 011041 MAXIMUM WIND GUST SPEED M/S 1 0 12 M/S 1 4 011043 MAXIMUM WIND GUST DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011050 STANDARD DEVIATION OF HORIZONTAL WIND SPEED M/S 1 0 12 M/S 1 4 011061 ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW M/S 1 0 12 M/S 1 4 011062 ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE M/S 1 0 12 M/S 1 4 011075 MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 M**(2/3)/S 2 3 011076 PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 M**(2/3)/S 2 3 011077 REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE S 0 0 12 S 0 4 011192 [SIM] W-component terrain following M/S 2 -4096 13 M/S 2 4 011193 [SIM] Stability class NUMERIC 0 0 4 NUMERIC 0 2 011194 [SIM] Friction velocity (calmet) M/S 3 0 14 M/S 3 4 011195 [SIM] Mixing height (calmet) M 0 0 12 M 0 4 011196 [SIM] Obukov lenght (calmet) M 1 -100000 15 M 1 5 011197 [SIM] Convective velocitiy scale (calmet) M/S 3 0 14 M/S 3 4 011198 [SIM] SQRT(2*TKE) M/S 4 0 20 M/S 4 6 011199 [SIM] Surface Roughness M 3 0 14 M 1 4 011200 [SIM] U-component of momentum flux N/M**2 4 -524288 20 N/M**2 4 6 011201 [SIM] V-component of momentum flux N/M**2 4 -524288 20 N/M**2 4 6 011202 [SIM] Friction velocity (diagmet) M/S 3 0 14 M/S 3 4 011203 [SIM] Mixing height (diagmet) M 0 0 12 M 0 4 011204 [SIM] Obukov lenght (diagmet) M 1 -100000 15 M 1 5 011205 [SIM] Convective velocitiy scale (diagmet) M/S 3 0 14 M/S 3 4 011206 [SIM] Friction velocity (COSMO) M/S 3 0 14 M/S 3 4 011207 [SIM] Obukov lenght (COSMO) M 1 -100000 15 M 1 5 011208 [SIM] Distance covered by the hourly mean wind M 0 0 23 M 0 7 012001 TEMPERATURE/AIR TEMPERATURE K 1 0 12 C 1 3 012003 DEW-POINT TEMPERATURE K 1 0 12 C 1 3 012030 SOIL TEMPERATURE K 1 0 12 C 1 3 012049 Temperature change over specified period K 0 -30 6 C 0 2 012061 SKIN TEMPERATURE K 1 0 12 K 1 4 012063 BRIGHTNESS TEMPERATURE K 1 0 12 K 1 4 012101 TEMPERATURE/DRY-BULB TEMPERATURE K 2 0 16 K 2 5 012102 WET-BULB TEMPERATURE K 2 0 16 C 2 4 012103 DEW-POINT TEMPERATURE K 2 0 16 K 2 5 012121 GROUND MINIMUM TEMPERATURE K 2 0 16 C 2 4 012131 SNOW TEMPERATURE K 2 0 16 C 2 4 012192 POTENTIAL TEMPERATURE K 2 0 16 K 2 5 012193 PSEUDO-EQUIVALENT POTENTIAL TEMPERATURE K 2 0 16 K 2 5 012194 [SIM] Air density KG/M**3 6 0 20 KG/M**3 6 6 013001 SPECIFIC HUMIDITY KG/KG 5 0 14 KG/KG 5 5 013002 MIXING RATIO KG/KG 5 0 14 KG/KG 5 5 013003 RELATIVE HUMIDITY % 0 0 7 % 0 3 013011 TOTAL PRECIPITATION / TOTAL WATER EQUIVALENT KG/M**2 1 -1 14 KG/M**2 1 5 013012 DEPTH OF FRESH SNOW M 2 -2 12 M 2 4 013013 TOTAL SNOW DEPTH M 3 -20 20 M 3 6 013031 EVAPOTRANSPIRATION KG/M**2 1 0 7 KG/M**2 0 3 013033 EVAPORATION/EVAPOTRANSPIRATION KG/M**2 1 0 10 KG/M**2 1 4 013080 WATER PH pH 1 0 10 pH 1 3 013081 WATER CONDUCTIVITY S/M 3 0 14 S/M 3 4 013082 WATER TEMPERATURE K 1 0 12 K 1 4 013083 DISSOLVED OXYGEN KG/M**3 6 0 15 KG/M**3 6 5 013192 [SIM] Cloud liquid water content KG/KG 8 0 27 KG/KG 8 8 013193 [SIM] Cloud ice content KG/KG 8 0 27 KG/KG 8 8 013194 [SIM] Water table depth M 3 0 18 M 3 6 013195 [SIM] Precipitating liquid water KG/KG 8 0 27 KG/KG 8 8 013196 [SIM] Precipitating ice KG/KG 8 0 27 KG/KG 8 8 013197 [SIM] Total precipitating water+ice KG/KG 8 0 27 KG/KG 8 8 013198 [SIM] Total liquid water (cloud+precipitating) KG/KG 8 0 27 KG/KG 8 8 013199 [SIM] Total ice (cloud+precipitating) KG/KG 8 0 27 KG/KG 8 8 013200 [SIM] Grid-scale liquid precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013201 [SIM] Grid-scale snowfall KG/M**2 1 -1 14 KG/M**2 1 5 013202 [SIM] Convective liquid precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013203 [SIM] Convective snowfall KG/M**2 1 -1 14 KG/M**2 1 5 013204 [SIM] Total convective precipitation (liquid + snow) KG/M**2 1 -1 14 KG/M**2 1 5 013205 [SIM] Snowfall (grid-scale + convective) KG/M**2 1 -1 14 KG/M**2 1 5 013206 [SIM] Soil water content KG/M**2 1 0 14 KG/M**2 1 5 013210 [SIM] Penetration of the probe in the snow M 2 0 9 M 2 3 013212 [SIM] Leaf wetness duration S -1 0 24 S -1 7 013215 [SIM] River level M 2 -100000 18 M 2 6 013216 [SIM] Hourly precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013217 [SIM] 5 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013218 [SIM] 10 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013219 [SIM] 15 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013220 [SIM] 20 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013221 [SIM] 30 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013222 [SIM] 180 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013223 [SIM] 360 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013224 [SIM] 720 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013225 [SIM] 1440 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013226 [SIM] River discharge M**3/S 2 0 21 M**3/S 2 7 013227 [SIM] Soil volumetric water content % 1 0 10 % 1 4 013228 [SIM] Piezometric level M 3 0 18 M 3 6 013229 [SIM] Density of snow KG/M**3 1 0 14 KG/M**3 1 5 013230 [SIM] Convective Available Potential Energy (CAPE) J/KG 1 0 17 J/KG 1 5 013231 [SIM] Ossigeno disciolto sat % 1 0 10 % 1 4 014002 Long-wave radiation, integrated over period specified J M-2 -3 -65536 17 J M-2 -3 5 014004 Short-wave radiation, integrated over period specified J M-2 -3 -65536 17 J M-2 -3 5 014016 NET RADIATION J/M**2 -4 -16384 15 J/M**2 -4 5 014017 INSTANTANEOUS LONG-WAVE RADIATION (incoming) W/M**2 0 -2048 12 W/M**2 0 4 014018 INSTANTANEOUS SHORT-WAVE RADIATION (incoming) W/M**2 0 -2048 12 W/M**2 -3 4 014019 SURFACE ALBEDO % 0 0 7 % 0 3 014021 GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 J/M**2 -4 5 014028 Global solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 J M-2 -2 6 014029 Diffuse solar radiation (high accuracy), integrated over period J M-2 -2 0 20 J M-2 -2 6 014030 Direct solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 J M-2 -2 6 014031 TOTAL SUNSHINE MINUTE 0 0 11 MINUTE 0 4 014192 [SIM] Instantenous sensible heat flux W/m**2 0 -1024 11 W/M**2 0 4 014193 [SIM] Instantenous latent heat flux W/m**2 0 -1024 11 W/M**2 0 4 014194 [SIM] Instantenous direct solar radiation W/M**2 0 -2048 12 W/M**2 -3 4 014195 [SIM] Instantenous diffuse solar radiation W/M**2 0 -2048 12 W/M**2 -3 4 014196 [SIM] INSTANTANEOUS NET LONG-WAVE RADIATION W/M**2 0 -2048 12 W/M**2 0 4 014197 [SIM] INSTANTANEOUS NET SHORT-WAVE RADIATION W/M**2 0 -2048 12 W/M**2 -3 4 014198 [SIM] Visible radiation (downward) W/M**2 3 -50000 21 W/M**2 3 7 014199 [SIM] Visible radiation (upward) W/M**2 3 -50000 21 W/M**2 3 7 014200 [SIM] Infrared radiation (downward) W/M**2 3 0 20 W/M**2 3 7 014201 [SIM] Infrared radiation (upward) W/M**2 3 0 20 W/M**2 3 7 015192 [SIM] NO Concentration KG/M**3 10 0 20 KG/M**3 10 6 015193 [SIM] NO2 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015194 [SIM] O3 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015195 [SIM] PM10 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015196 [SIM] CO Concentration KG/M**3 10 0 20 KG/M**3 10 6 015197 [SIM] SO2 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015198 [SIM] PM2.5 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015199 [SIM] NOY Concentration KG/M**3 10 0 20 KG/M**3 10 6 015200 [SIM] HCNM Concentration KG/M**3 10 0 20 KG/M**3 10 6 015201 [SIM] ALDE Concentration KG/M**3 10 0 20 KG/M**3 10 6 015202 [SIM] PM5 Concentration (tot. aerosol < 5 ug) KG/M**3 10 0 20 KG/M**3 10 6 015203 [SIM] PM1 Concentration (tot. aerosol < 1.25 ug) KG/M**3 10 0 20 KG/M**3 10 6 015204 [SIM] PM06 Concentration (tot. aerosol < 0.6 ug) KG/M**3 10 0 20 KG/M**3 10 6 015205 [SIM] PM03 Concentration (tot. aerosol < 0.3 ug) KG/M**3 10 0 20 KG/M**3 10 6 015206 [SIM] PM015 Concentration (tot. aerosol < 0.15 ug) KG/M**3 10 0 20 KG/M**3 10 6 015207 [SIM] PM008 Concentration (tot. aerosol < 0.08 ug) KG/M**3 10 0 20 KG/M**3 10 6 015208 [SIM] Concentration of primary particulate matter in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015209 [SIM] Concentration of sulfate in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015210 [SIM] Concentration of nitrate in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015211 [SIM] Concentration of ammonium in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015212 [SIM] Concentration of black carbon in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015213 [SIM] Concentration of organic carbon in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015214 [SIM] Concentration of dust in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015215 [SIM] Concentration of anthrop. A1D in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015216 [SIM] Concentration of anthrop. BmP in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015217 [SIM] Concentration of biogenic A1D in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015218 [SIM] Concentration of biogenic BmP in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015219 [SIM] Concentration of water in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015220 [SIM] Concentration of sea salt in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015221 [SIM] Concentration of secondary organic aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015222 [SIM] Total concentration of primary aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015223 [SIM] Total concentration of secondary aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015224 [SIM] Uncertainity in O3 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015225 [SIM] Uncertainity in PM10 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015226 [SIM] Uncertainity in NO2 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015227 [SIM] Uncertainity in PM2.5 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015228 [SIM] NH3 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015229 [SIM] Concentration of primary part. matter in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015230 [SIM] Concentration of sulfate in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015231 [SIM] Concentration of nitrate in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015232 [SIM] Concentration of ammonium in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015233 [SIM] Concentration of anthrop. sec. org. in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015234 [SIM] Concentration of biogenic sec. org. in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015235 [SIM] Concentration of ISOPA1 in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015236 [SIM] C6H6 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015237 [SIM] Concentration of anthropogenic aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015238 [SIM] Concentration of biogenic aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015239 [SIM] Concentration of anthropogenic aerosol in PM2.5 KG/M**3 10 0 20 KG/M**3 10 6 015240 [SIM] Concentration of biogenic aerosol in PM2.5 KG/M**3 10 0 20 KG/M**3 10 6 015241 [SIM] Aerosol Optical Thickness NUMERIC 4 0 15 NUMERIC 4 5 020001 HORIZONTAL VISIBILITY M -1 0 13 M -1 4 020003 PRESENT WEATHER (SEE NOTE 1) CODE TABLE 20003 0 0 9 CODE TABLE 20003 0 3 020004 PAST WEATHER (1) (SEE NOTE 2) CODE TABLE 20004 0 0 5 CODE TABLE 20004 0 2 020005 PAST WEATHER (2) (SEE NOTE 2) CODE TABLE 20005 0 0 5 CODE TABLE 20005 0 2 020009 GENERAL WEATHER INDICATOR (TAF/METAR) CODE TABLE 20009 0 0 4 CODE TABLE 20009 0 2 020010 CLOUD COVER (TOTAL) % 0 0 7 % 0 3 020011 CLOUD AMOUNT CODE TABLE 20011 0 0 4 CODE TABLE 20011 0 2 020012 CLOUD TYPE CODE TABLE 20012 0 0 6 CODE TABLE 20012 0 2 020013 HEIGHT OF BASE OF CLOUD M 0 -400 17 M 0 5 020017 CLOUD TOP DESCRIPTION CODE TABLE 20017 0 0 4 CODE TABLE 20017 0 2 020019 SIGNIFICANT PRESENT OR FORECAST WEATHER CCITTIA5 0 0 72 CHARACTER 0 9 020021 TYPE OF PRECIPITATION FLAG TABLE 20021 0 0 30 FLAG TABLE 20021 0 10 020031 ICE DEPOSIT (THICKNESS) M 2 0 7 M 2 3 020032 RATE OF ICE ACCRETION CODE TABLE 20032 0 0 3 CODE TABLE 20032 0 1 020033 CAUSE OF ICE ACCRETION FLAG TABLE 20033 0 0 4 FLAG TABLE 20033 0 2 020034 SEA ICE CONCENTRATION CODE TABLE 20034 0 0 5 CODE TABLE 20034 0 2 020035 AMOUNT AND TYPE OF ICE CODE TABLE 20035 0 0 4 CODE TABLE 20035 0 2 020036 ICE SITUATION CODE TABLE 20036 0 0 5 CODE TABLE 20036 0 2 020037 ICE DEVELOPMENT CODE TABLE 20037 0 0 5 CODE TABLE 20037 0 2 020038 BEARING OF ICE EDGE (SEE NOTE 3) DEGREE TRUE 0 0 12 DEGREE TRUE 0 3 020042 AIRFRAME ICING PRESENT CODE TABLE 20042 0 0 2 CODE TABLE 20042 0 1 020043 PEAK LIQUID WATER CONTENT KG/M**3 4 0 7 KG/M**3 4 2 020044 AVERAGE LIQUID WATER CONTENT KG/M**3 4 0 7 KG/M**3 4 2 020045 SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS CODE TABLE 20045 0 0 2 CODE TABLE 20045 0 2 020062 STATE OF THE GROUND (WITH OR WITHOUT SNOW) CODE TABLE 20062 0 0 5 CODE TABLE 20062 0 2 020192 [SIM] Presence of rain > 1mm BOOLEAN 0 0 1 BOOLEAN 0 1 020193 [SIM] Cloud type (METAR) CCITTIA5 0 0 16 CHARACTER 0 2 020194 [SIM] Presence of shower BOOLEAN 0 0 1 BOOLEAN 0 1 020195 [SIM] Presence of hail BOOLEAN 0 0 1 BOOLEAN 0 1 020196 [SIM] Presence of thunderstorm BOOLEAN 0 0 1 BOOLEAN 0 1 020197 [SIM] Presence of snow BOOLEAN 0 0 1 BOOLEAN 0 1 020198 [SIM] Presence of frost BOOLEAN 0 0 1 BOOLEAN 0 1 020199 [SIM] Presence of dew BOOLEAN 0 0 1 BOOLEAN 0 1 020200 [SIM] Presence of fog BOOLEAN 0 0 1 BOOLEAN 0 1 020201 [SIM] Presence of water-spout BOOLEAN 0 0 1 BOOLEAN 0 1 020202 [SIM] State of the ground with snow CODE TABLE 0 0 5 CODE TABLE 0 2 022001 DIRECTION OF WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022002 DIRECTION OF WIND WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022003 DIRECTION OF SWELL WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022004 DIRECTION OF CURRENT DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022011 PERIOD OF WAVES S 0 0 6 S 0 2 022012 PERIOD OF WIND WAVES S 0 0 6 S 0 2 022013 PERIOD OF SWELL WAVES S 0 0 6 S 0 2 022021 HEIGHT OF WAVES M 1 0 10 M 1 4 022022 HEIGHT OF WIND WAVES M 1 0 10 M 1 4 022023 HEIGHT OF SWELL WAVES M 1 0 10 M 1 4 022031 SPEED OF CURRENT M/S 2 0 13 M/S 2 4 022032 SPEED OF SEA SURFACE CURRENT M/S 2 0 13 M/S 2 4 022037 Tidal elevation with respect to national land datum M 3 -10000 15 M 3 5 022038 Tidal elevation with respect to local chart datum M 3 -10000 15 M 3 5 022043 SEA/WATER TEMPERATURE K 2 0 15 K 2 5 022049 SEA-SURFACE TEMPERATURE K 2 0 15 K 2 5 022062 SALINITY PART PER THOUSAND 2 0 14 PART PER THOUSAND 2 5 022063 TOTAL WATER DEPTH M 0 0 14 M 0 5 022066 WATER CONDUCTIVITY S M-1 6 0 26 S M-1 6 8 022070 SIGNIFICANT WAVE HEIGHT M 2 0 13 M 2 4 022071 SPECTRAL PEAK WAVE PERIOD S 1 0 9 S 1 3 022073 MAXIMUM WAVE HEIGHT M 2 0 13 M 2 4 022074 AVERAGE WAVE PERIOD S 1 0 9 S 1 3 022192 [SIM] Current X component M/S 2 0 13 M/S 2 4 022193 [SIM] Current Y component M/S 2 0 13 M/S 2 4 022194 [SIM] Concentrazione clorofilla a microg/l 2 0 17 microg/l 2 6 023192 [SIM] Dry deposition of H2SO4 MOL/M**2 5 0 20 MOL/M**3 5 6 023193 [SIM] Wet deposition of H2SO4 MOL/M**2 5 0 20 MOL/M**3 5 6 023194 [SIM] Dry deposition of NH4 MOL/M**2 5 0 20 MOL/M**3 5 6 023195 [SIM] Wet deposition of NH4 MOL/M**2 5 0 20 MOL/M**3 5 6 023196 [SIM] Dry deposition of HNO3 MOL/M**2 5 0 20 MOL/M**3 5 6 023197 [SIM] Wet deposition of HNO3 MOL/M**2 5 0 20 MOL/M**3 5 6 023198 [SIM] Solid transport by river KG/S 2 0 24 KG/S 2 8 025076 LOG-10 OF (TEMP-RAD CENTRAL WAVENUMBER) FOR ATOVS LOGM-1 8 0 30 LOGM-1 8 10 029192 [SIM] Land fraction % 1 0 10 % 1 4 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1 NUMERIC 0 1 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 31021 0 0 6 CODE TABLE 31021 0 2 031031 DATA PRESENT INDICATOR FLAG TABLE 31031 0 0 1 FLAG TABLE 31031 0 1 033002 QUALITY INFORMATION CODE TABLE 33002 0 0 2 CODE TABLE 33002 0 1 033003 QUALITY INFORMATION CODE TABLE 33003 0 0 3 CODE TABLE 33003 0 1 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 33005 0 0 30 FLAG TABLE 33005 0 10 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 33006 0 0 3 CODE TABLE 33006 0 1 033007 PER CENT CONFIDENCE % 0 0 7 % 0 3 033015 DATA QUALITY CHECK INDICATOR CODE TABLE 33015 0 0 6 CODE TABLE 33015 0 2 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 33020 0 0 3 CODE TABLE 33020 0 1 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 33021 0 0 2 CODE TABLE 33021 0 1 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 33022 0 0 2 CODE TABLE 33022 0 1 033023 QUALITY OF BUOY LOCATION CODE TABLE 33023 0 0 2 CODE TABLE 33023 0 1 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) CODE TABLE 33024 0 0 4 CODE TABLE 33024 0 2 033025 ACARS INTERPOLATED VALUES CODE TABLE 33025 0 0 3 CODE TABLE 33025 0 1 033026 MOISTURE QUALITY CODE TABLE 33026 0 0 6 CODE TABLE 33026 0 2 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) CODE TABLE 33027 0 0 3 CODE TABLE 33027 0 1 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 33030 0 0 24 FLAG TABLE 33030 0 8 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 33031 0 0 24 FLAG TABLE 33031 0 8 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 33032 0 0 24 FLAG TABLE 33032 0 8 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 33033 0 0 24 FLAG TABLE 33033 0 8 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 33035 0 0 4 CODE TABLE 33035 0 2 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 % 0 3 033037 WIND CORRELATION ERROR FLAG TABLE 33037 0 0 20 FLAG TABLE 33037 0 7 033038 QUALITY FLAGS FOR GROUND-BASED GNSS DATA FLAG TABLE 33038 0 0 10 FLAG TABLE 33038 0 4 033040 CONFIDENCE INTERVAL % 0 0 7 PERCENT 0 3 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 33041 0 0 2 CODE TABLE 33041 0 1 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 33050 0 0 4 CODE TABLE 33050 0 2 033192 [SIM] Climatological and consistency check % 0 0 7 PERCENT 0 3 033193 [SIM] Time consistency % 0 0 7 PERCENT 0 3 033194 [SIM] Space consistency % 0 0 7 PERCENT 0 3 033195 [SIM] MeteoDB variable ID NUMERIC 0 0 24 NUMERIC 0 8 033196 [SIM] Data has been invalidated CODE TABLE 33196 0 0 2 CODE TABLE 33196 0 1 033197 [SIM] Manual replacement in substitution CODE TABLE 33197 0 0 2 CODE TABLE 33197 0 1 033198 [SIM] Observation increment NUMERIC 4 -1073741823 31 NUMERIC 4 10 033201 [SIM] Kalman coefficient, state vector (s.v.) x1 NUMERIC 4 -1073741823 31 NUMERIC 4 10 033202 [SIM] Kalman coefficient, state vector (s.v.) x2 NUMERIC 4 -1073741823 31 NUMERIC 4 10 033203 [SIM] Kalman coefficient, s.v. error covariance matrix(1,1) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033204 [SIM] Kalman coefficient, s.v. error covariance matrix(1,2) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033205 [SIM] Kalman coefficient, s.v. error covariance matrix(2,1) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033206 [SIM] Kalman coefficient, s.v. error covariance matrix(2,2) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033207 [SIM] Kalman observation sequential counter NUMERIC 0 -127 8 NUMERIC 0 3 033208 [SIM] Kalman osservation missing counter NUMERIC 0 -127 8 NUMERIC 0 3 033209 [SIM] Normalized Density Index % 0 0 7 PERCENT 0 3 048001 [SIM] Graminacee_Graminacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048002 [SIM] Betulacee_Ontano nero POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048003 [SIM] Betulacee_Betulla POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048004 [SIM] Betulacee_Betulacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048005 [SIM] Composite_Ambrosia POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048006 [SIM] Composite_Artemisia POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048007 [SIM] Composite_Composite indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048008 [SIM] Corilacee_Nocciolo POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048009 [SIM] Corilacee_Carpino bianco -Carpino nero POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048010 [SIM] Corilacee_Corilacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048011 [SIM] Fagacee_Castagno POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048012 [SIM] Fagacee_Faggio POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048013 [SIM] Fagacee_Quercia POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048014 [SIM] Fagacee_Fagacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048015 [SIM] Oleacee_Olivo POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048016 [SIM] Oleacee_Frassino POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048017 [SIM] Oleacee_Oleacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048018 [SIM] Plantaginacee_Plantaginacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048019 [SIM] Urticacee_Urticacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048020 [SIM] Cupressacee - Taxacee indistinte_Cipresso comune POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048021 [SIM] Cupressacee - Taxacee indistinte_Cupressacee - Taxacee ind POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048022 [SIM] Chenopodiacee - Amarantacee Indistinte_Amaranto POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048023 [SIM] Chenopodiacee - Amarantacee Indistinte_Chenopodiacee - Ama POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048024 [SIM] Poligonacee_Poligonacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048025 [SIM] Euphorbiacee_Euforbiacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048026 [SIM] Mirtacee_Mirtacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048027 [SIM] Ulmacee_Bagolaro comune POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048028 [SIM] Ulmacee_Olmo campestre POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048029 [SIM] Ulmacee_Ulmacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048030 [SIM] Platanacee_Platanacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048031 [SIM] Aceraceae_Aceracee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048032 [SIM] Pinacee_Pinacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048033 [SIM] Salicacee_Salice comune POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048034 [SIM] Salicacee_Pioppo POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048035 [SIM] Salicacee_Salicacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048036 [SIM] Ciperacee_Ciperacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048037 [SIM] Juglandacee_Juglandacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048038 [SIM] Ippocastanacee_Ippocastanacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048039 [SIM] Spore fungine_Alternaria POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048040 [SIM] Spore fungine_Botrytis POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048041 [SIM] Spore fungine_Stemphylium POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048042 [SIM] Spore fungine_Cladosporium POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048043 [SIM] Spore fungine_Epicoccum POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048044 [SIM] Altri Pollini / Non Identificati_Altri pollini identificat POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048045 [SIM] Altri Pollini / Non Identificati_Pollini non identificati POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048046 [SIM] Altre Spore / Non identificati_Altre spore fungine POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048047 [SIM] Altre Spore / Non identificati_Spore fungine non identific POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048048 [SIM] Graminacee_Graminacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048049 [SIM] Plantaginacee_Plantaginacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048050 [SIM] Urticacee_Urticacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048051 [SIM] Poligonacee_Poligonacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048052 [SIM] Euphorbiacee_Euforbiacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048053 [SIM] Mirtacee_Mirtacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048054 [SIM] Platanacee_Platanacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048055 [SIM] Aceraceae_Aceracee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048056 [SIM] Pinacee_Pinacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048057 [SIM] Ciperacee_Ciperacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048058 [SIM] Juglandacee_Juglandacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048059 [SIM] Ippocastanacee_Ippocastanacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048060 [SIM] Oleacee_Ligustro POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048128 [SIM] Conta Graminacee_Graminacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048129 [SIM] Conta Betulacee_Ontano nero NUMERIC 0 0 20 NUMERIC 0 7 048130 [SIM] Conta Betulacee_Betulla NUMERIC 0 0 20 NUMERIC 0 7 048131 [SIM] Conta Betulacee_Betulacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048132 [SIM] Conta Composite_Ambrosia NUMERIC 0 0 20 NUMERIC 0 7 048133 [SIM] Conta Composite_Artemisia NUMERIC 0 0 20 NUMERIC 0 7 048134 [SIM] Conta Composite_Composite indistinte NUMERIC 0 0 20 NUMERIC 0 7 048135 [SIM] Conta Corilacee_Nocciolo NUMERIC 0 0 20 NUMERIC 0 7 048136 [SIM] Conta Corilacee_Carpino bianco -Carpino nero NUMERIC 0 0 20 NUMERIC 0 7 048137 [SIM] Conta Corilacee_Corilacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048138 [SIM] Conta Fagacee_Castagno NUMERIC 0 0 20 NUMERIC 0 7 048139 [SIM] Conta Fagacee_Faggio NUMERIC 0 0 20 NUMERIC 0 7 048140 [SIM] Conta Fagacee_Quercia NUMERIC 0 0 20 NUMERIC 0 7 048141 [SIM] Conta Fagacee_Fagacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048142 [SIM] Conta Oleacee_Olivo NUMERIC 0 0 20 NUMERIC 0 7 048143 [SIM] Conta Oleacee_Frassino NUMERIC 0 0 20 NUMERIC 0 7 048144 [SIM] Conta Oleacee_Oleacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048145 [SIM] Conta Plantaginacee_Plantaginacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048146 [SIM] Conta Urticacee_Urticacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048147 [SIM] Conta Cupressacee - Taxacee indistinte_Cipresso comune NUMERIC 0 0 20 NUMERIC 0 7 048148 [SIM] Conta Cupressacee - Taxacee indistinte_Cupressacee - Taxac NUMERIC 0 0 20 NUMERIC 0 7 048149 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Amaranto NUMERIC 0 0 20 NUMERIC 0 7 048150 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Chenopodiacee NUMERIC 0 0 20 NUMERIC 0 7 048151 [SIM] Conta Poligonacee_Poligonacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048152 [SIM] Conta Euphorbiacee_Euforbiacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048153 [SIM] Conta Mirtacee_Mirtacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048154 [SIM] Conta Ulmacee_Bagolaro comune NUMERIC 0 0 20 NUMERIC 0 7 048155 [SIM] Conta Ulmacee_Olmo campestre NUMERIC 0 0 20 NUMERIC 0 7 048156 [SIM] Conta Ulmacee_Ulmacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048157 [SIM] Conta Platanacee_Platanacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048158 [SIM] Conta Aceraceae_Aceracee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048159 [SIM] Conta Pinacee_Pinacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048160 [SIM] Conta Salicacee_Salice comune NUMERIC 0 0 20 NUMERIC 0 7 048161 [SIM] Conta Salicacee_Pioppo NUMERIC 0 0 20 NUMERIC 0 7 048162 [SIM] Conta Salicacee_Salicacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048163 [SIM] Conta Ciperacee_Ciperacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048164 [SIM] Conta Juglandacee_Juglandacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048165 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048166 [SIM] Conta Spore fungine_Alternaria NUMERIC 0 0 20 NUMERIC 0 7 048167 [SIM] Conta Spore fungine_Botrytis NUMERIC 0 0 20 NUMERIC 0 7 048168 [SIM] Conta Spore fungine_Stemphylium NUMERIC 0 0 20 NUMERIC 0 7 048169 [SIM] Conta Spore fungine_Cladosporium NUMERIC 0 0 20 NUMERIC 0 7 048170 [SIM] Conta Spore fungine_Epicoccum NUMERIC 0 0 20 NUMERIC 0 7 048171 [SIM] Conta Altri Pollini / Non Identificati_Altri pollini ident NUMERIC 0 0 20 NUMERIC 0 7 048172 [SIM] Conta Altri Pollini / Non Identificati_Pollini non identif NUMERIC 0 0 20 NUMERIC 0 7 048173 [SIM] Conta Altre Spore / Non identificati_Altre spore fungine NUMERIC 0 0 20 NUMERIC 0 7 048174 [SIM] Conta Altre Spore / Non identificati_Spore fungine non ide NUMERIC 0 0 20 NUMERIC 0 7 048175 [SIM] Conta Graminacee_Graminacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048176 [SIM] Conta Plantaginacee_Plantaginacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048177 [SIM] Conta Urticacee_Urticacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048178 [SIM] Conta Poligonacee_Poligonacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048179 [SIM] Conta Euphorbiacee_Euforbiacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048180 [SIM] Conta Mirtacee_Mirtacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048181 [SIM] Conta Platanacee_Platanacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048182 [SIM] Conta Aceraceae_Aceracee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048183 [SIM] Conta Pinacee_Pinacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048184 [SIM] Conta Ciperacee_Ciperacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048185 [SIM] Conta Juglandacee_Juglandacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048186 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048187 [SIM] Conta Oleacee_Ligustro NUMERIC 0 0 20 NUMERIC 0 7 dballe-7.21/tables/B000000002001400.txt0000644000175000017500000017132013022503466013337 00000000000000 001001 WMO BLOCK NUMBER NUMERIC 0 0 7 001002 WMO STATION NUMBER NUMERIC 0 0 10 001006 AIRCRAFT FLIGHT NUMBER CCITTIA5 0 0 64 001007 SATELLITE IDENTIFIER CODE TABLE 1007 0 0 10 001008 AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION CCITTIA5 0 0 64 001011 SHIP OR MOBILE LAND STATION IDENTIFIER CCITTIA5 0 0 72 001012 DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM** DEGREE TRUE 0 0 9 001013 SPEED OF MOTION OF MOVING OBSERVING PLATFORM* M/S 0 0 10 001019 LONG STATION OR SITE NAME CCITTIA5 0 0 256 001023 OBSERVATION SEQUENCE NUMBER NUMERIC 0 0 9 001033 IDENTIFICATION OF ORIGINATING/GENERATING CENTRE CODE TABLE 001033 0 0 8 001034 IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE CODE TABLE 001034 0 0 8 001063 ICAO LOCATION INDICATOR CCITTIA5 0 0 64 001192 [SIM] MeteoDB station ID NUMERIC 0 0 24 001193 [SIM] Report code NUMERIC 0 0 16 001194 [SIM] Report mnemonic CCITTIA5 0 0 128 001212 AIR QUALITY OBSERVING STATION LOCAL CODE CCITTIA5 0 0 56 001213 AIRBASE AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 56 001214 GEMS AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 48 001215 AIR QUALITY OBSERVING STATION DOMINANT EMISSION SOURCE CODE TABLE 001215 0 0 3 001216 AIR QUALITY OBSERVING STATION AREA TYPE CODE TABLE 001216 0 0 3 001217 AIR QUALITY OBSERVING STATION TERRAIN TYPE CODE TABLE 001217 0 0 4 002001 TYPE OF STATION CODE TABLE 2001 0 0 2 002002 TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT FLAG TABLE 2002 0 0 4 002003 TYPE OF MEASURING EQUIPMENT USED CODE TABLE 2003 0 0 4 002004 TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C CODE TABLE 2004 0 0 4 002005 PRECISION OF TEMPERATURE OBSERVATION K 2 0 7 002011 RADIOSONDE TYPE CODE TABLE 2011 0 0 8 002012 RADIOSONDE COMPUTATIONAL METHOD CODE TABLE 2012 0 0 4 002013 SOLAR AND INFRARED RADIATION CORRECTION CODE TABLE 2013 0 0 4 002014 TRACKING TECHNIQUE/STATUS OF SYSTEM USED CODE TABLE 2014 0 0 7 002038 METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT CODE TABLE 2038 0 0 4 002039 METHOD OF WET-BULB TEMPERATURE MEASUREMENT CODE TABLE 2039 0 0 3 002048 SATELLITE SENSOR INDICATOR CODE TABLE 2048 0 0 4 002061 AIRCRAFT NAVIGATIONAL SYSTEM CODE TABLE 2061 0 0 3 002062 TYPE OF AIRCRAFT DATA RELAY SYSTEM CODE TABLE 2062 0 0 4 002063 AIRCRAFT ROLL ANGLE DEGREE 2 -18000 16 002064 AIRCRAFT ROLL ANGLE QUALITY CODE TABLE 2064 0 0 2 002070 ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE CODE TABLE 2070 0 0 4 002121 MEAN FREQUENCY Hz -8 0 7 002125 PULSE REPETITION FREQUENCY Hz -1 0 8 004001 YEAR YEAR 0 0 12 004002 MONTH MONTH 0 0 4 004003 DAY DAY 0 0 6 004004 HOUR HOUR 0 0 5 004005 MINUTE MINUTE 0 0 6 004006 SECOND SECOND 0 0 6 004086 LONG TIME PERIOD OR DISPLACEMENT SECOND 0 -8192 15 004192 [SIM] Time range type NUMERIC 0 0 10 004193 [SIM] Time range P1 NUMERIC 0 -536870912 31 004194 [SIM] Time range P2 NUMERIC 0 -536870912 31 004195 [SIM] Temperature event - time of occurrence MINUTE 0 0 11 004196 [SIM] Relative humidity event - time of occurrence MINUTE 0 0 11 004197 [SIM] Wind velocity event - time of occurrence MINUTE 0 0 11 004198 [SIM] Pressure event - time of occurrence MINUTE 0 0 11 005001 LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 005015 LATITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -9000000 25 005021 BEARING OR AZIMUTH DEGREE TRUE 2 0 16 005022 SOLAR AZIMUTH DEGREE TRUE 2 0 16 005040 ORBIT NUMBER NUMERIC 0 0 24 005041 SCAN LINE NUMBER NUMERIC 0 0 8 005043 FIELD OF VIEW NUMBER NUMERIC 0 0 8 006001 LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 006015 LONGITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -18000000 26 007002 HEIGHT OR ALTITUDE M -1 -40 16 007004 PRESSURE PA -1 0 14 007007 HEIGHT M 0 -1000 17 007010 FLIGHT LEVEL M 0 -1024 16 007024 SATELLITE ZENITH ANGLE DEGREE 2 -9000 15 007025 SOLAR ZENITH ANGLE DEGREE 2 -9000 15 007030 HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3) M 1 -4000 17 007031 HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4) M 1 - 4000 17 007032 HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) M 2 0 16 007192 [SIM] First level type NUMERIC 0 0 10 007193 [SIM] Level L1 NUMERIC 0 -536870912 31 007194 [SIM] Level L2 NUMERIC 0 -536870912 31 007195 [SIM] Second level type NUMERIC 0 0 31 008002 VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS) CODE TABLE 8002 0 0 6 008004 PHASE OF AIRCRAFT FLIGHT CODE TABLE 8004 0 0 3 008009 DETAILED PHASE OF FLIGHT CODE TABLE 8009 0 0 4 008021 TIME SIGNIFICANCE CODE TABLE 8021 0 0 5 008042 EXTENDED VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8042 0 0 18 008044 (VAL) CAS REGISTRY NUMBER CCITTIA5 0 0 88 008192 [SIM] Number of wind velocity mean values present NUMERIC 0 0 5 008193 [SIM] Number of wind velocity minimum values present NUMERIC 0 0 5 008194 [SIM] Number of wind velocity maximum values present NUMERIC 0 0 5 008195 [SIM] Number of wind prevalent direction values present NUMERIC 0 0 5 008196 [SIM] Number of mean temperature values present NUMERIC 0 0 5 008197 [SIM] Number of minimum temperature values present NUMERIC 0 0 5 008198 [SIM] Number of maximum temperature values present NUMERIC 0 0 5 008199 [SIM] Number of mean relative humidity values present NUMERIC 0 0 5 008200 [SIM] Number of minimum relative humidity values present NUMERIC 0 0 5 008201 [SIM] Number of maximum relative humidity values present NUMERIC 0 0 5 008202 [SIM] Number of mean pressure values present NUMERIC 0 0 5 008203 [SIM] Number of minimum pressure values present NUMERIC 0 0 5 008204 [SIM] Number of maximum pressure values present NUMERIC 0 0 5 008205 [SIM] Number of precipitation values present NUMERIC 0 0 5 008206 [SIM] Number of leaf wetness values present NUMERIC 0 0 5 008207 [SIM] Number of scalar wind velocity mean values present NUMERIC 0 0 5 008208 [SIM] Number of cloud cover mean values present NUMERIC 0 0 5 008209 [SIM] Number of cloud cover maximum values present NUMERIC 0 0 5 008210 [SIM] Number of cloud cover minimum values present NUMERIC 0 0 5 010004 PRESSURE PA -1 0 14 010007 HEIGHT M 0 -1000 17 010008 GEOPOTENTIAL M**2/S**2 0 -10000 20 010009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 010051 PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 010052 ALTIMETER SETTING (QNH) PA -1 0 14 010060 PRESSURE CHANGE PA -1 -1024 11 010063 CHARACTERISTIC OF PRESSURE TENDENCY CODE TABLE 10063 0 0 4 010197 ANEMOMETER HEIGHT M 0 0 9 011001 WIND DIRECTION DEGREE TRUE 0 0 9 011002 WIND SPEED M/S 1 0 12 011003 U-COMPONENT M/S 1 -4096 13 011004 V-COMPONENT M/S 1 -4096 13 011005 W-COMPONENT PA/S 1 -512 10 011006 W-COMPONENT M/S 2 -4096 13 011016 EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 011017 EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 011031 DEGREE OF TURBULENCE CODE TABLE 11031 0 0 4 011036 MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED M/S 1 0 10 011037 TURBULENCE INDEX CODE TABLE 11037 0 0 6 011039 EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE CODE TABLE 11039 0 0 6 011041 MAXIMUM WIND GUST SPEED M/S 1 0 12 011043 MAXIMUM WIND GUST DIRECTION DEGREE TRUE 0 0 9 011050 STANDARD DEVIATION OF HORIZONTAL WIND SPEED M/S 1 0 12 011061 ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW M/S 1 0 12 011062 ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE M/S 1 0 12 011075 MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 011076 PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 011077 REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE S 0 0 12 011192 [SIM] W-component terrain following M/S 2 -4096 13 011193 [SIM] Stability class NUMERIC 0 0 4 011194 [SIM] Friction velocity (calmet) M/S 3 0 14 011195 [SIM] Mixing height (calmet) M 0 0 12 011196 [SIM] Obukov lenght (calmet) M 1 -100000 15 011197 [SIM] Convective velocitiy scale (calmet) M/S 3 0 14 011198 [SIM] SQRT(2*TKE) M/S 4 0 20 011199 [SIM] Surface Roughness M 3 0 14 011200 [SIM] U-component of momentum flux N/M**2 4 -524288 20 011201 [SIM] V-component of momentum flux N/M**2 4 -524288 20 011202 [SIM] Friction velocity (diagmet) M/S 3 0 14 011203 [SIM] Mixing height (diagmet) M 0 0 12 011204 [SIM] Obukov lenght (diagmet) M 1 -100000 15 011205 [SIM] Convective velocitiy scale (diagmet) M/S 3 0 14 011206 [SIM] Friction velocity (COSMO) M/S 3 0 14 011207 [SIM] Obukov lenght (COSMO) M 1 -100000 15 011208 [SIM] Distance covered by the hourly mean wind M 0 0 23 012001 TEMPERATURE/AIR TEMPERATURE K 1 0 12 012003 DEW-POINT TEMPERATURE K 1 0 12 012030 SOIL TEMPERATURE K 1 0 12 012049 Temperature change over specified period K 0 -30 6 012061 SKIN TEMPERATURE K 1 0 12 012063 BRIGHTNESS TEMPERATURE K 1 0 12 012101 TEMPERATURE/DRY-BULB TEMPERATURE K 2 0 16 012102 WET-BULB TEMPERATURE K 2 0 16 012103 DEW-POINT TEMPERATURE K 2 0 16 012121 GROUND MINIMUM TEMPERATURE K 2 0 16 012131 SNOW TEMPERATURE K 2 0 16 012192 POTENTIAL TEMPERATURE K 2 0 16 012193 PSEUDO-EQUIVALENT POTENTIAL TEMPERATURE K 2 0 16 012194 [SIM] Air density KG/M**3 6 0 20 013001 SPECIFIC HUMIDITY KG/KG 5 0 14 013002 MIXING RATIO KG/KG 5 0 14 013003 RELATIVE HUMIDITY % 0 0 7 013011 TOTAL PRECIPITATION / TOTAL WATER EQUIVALENT KG/M**2 1 -1 14 013012 DEPTH OF FRESH SNOW M 2 -2 12 013013 TOTAL SNOW DEPTH M 3 -20 20 013031 EVAPOTRANSPIRATION KG/M**2 1 0 7 013033 EVAPORATION/EVAPOTRANSPIRATION KG/M**2 1 0 10 013080 WATER PH pH 1 0 10 013081 WATER CONDUCTIVITY S/M 3 0 14 013082 WATER TEMPERATURE K 1 0 12 013083 DISSOLVED OXYGEN KG/M**3 6 0 15 013192 [SIM] Cloud liquid water content KG/KG 8 0 27 013193 [SIM] Cloud ice content KG/KG 8 0 27 013194 [SIM] Water table depth M 3 0 18 013195 [SIM] Precipitating liquid water KG/KG 8 0 27 013196 [SIM] Precipitating ice KG/KG 8 0 27 013197 [SIM] Total precipitating water+ice KG/KG 8 0 27 013198 [SIM] Total liquid water (cloud+precipitating) KG/KG 8 0 27 013199 [SIM] Total ice (cloud+precipitating) KG/KG 8 0 27 013200 [SIM] Grid-scale liquid precipitation KG/M**2 1 -1 14 013201 [SIM] Grid-scale snowfall KG/M**2 1 -1 14 013202 [SIM] Convective liquid precipitation KG/M**2 1 -1 14 013203 [SIM] Convective snowfall KG/M**2 1 -1 14 013204 [SIM] Total convective precipitation (liquid + snow) KG/M**2 1 -1 14 013205 [SIM] Snowfall (grid-scale + convective) KG/M**2 1 -1 14 013206 [SIM] Soil water content KG/M**2 1 0 14 013210 [SIM] Penetration of the probe in the snow M 2 0 9 013212 [SIM] Leaf wetness duration S -1 0 24 013215 [SIM] River level M 2 -100000 18 013216 [SIM] Hourly precipitation KG/M**2 1 -1 14 013217 [SIM] 5 minutes precipitation KG/M**2 1 -1 14 013218 [SIM] 10 minutes precipitation KG/M**2 1 -1 14 013219 [SIM] 15 minutes precipitation KG/M**2 1 -1 14 013220 [SIM] 20 minutes precipitation KG/M**2 1 -1 14 013221 [SIM] 30 minutes precipitation KG/M**2 1 -1 14 013222 [SIM] 180 minutes precipitation KG/M**2 1 -1 14 013223 [SIM] 360 minutes precipitation KG/M**2 1 -1 14 013224 [SIM] 720 minutes precipitation KG/M**2 1 -1 14 013225 [SIM] 1440 minutes precipitation KG/M**2 1 -1 14 013226 [SIM] River discharge M**3/S 2 0 21 013227 [SIM] Soil volumetric water content % 1 0 10 013228 [SIM] Piezometric level M 3 0 18 013229 [SIM] Density of snow KG/M**3 1 0 14 013230 [SIM] Convective Available Potential Energy (CAPE) J/KG 1 0 17 013231 [SIM] Ossigeno disciolto sat % 1 0 10 014002 Long-wave radiation, integrated over period specified J M-2 -3 -65536 17 014004 Short-wave radiation, integrated over period specified J M-2 -3 -65536 17 014016 NET RADIATION J/M**2 -4 -16384 15 014017 INSTANTANEOUS LONG-WAVE RADIATION (incoming) W/M**2 0 -2048 12 014018 INSTANTANEOUS SHORT-WAVE RADIATION (incoming) W/M**2 0 -2048 12 014019 SURFACE ALBEDO % 0 0 7 014021 GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 014028 Global solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 014029 Diffuse solar radiation (high accuracy), integrated over period J M-2 -2 0 20 014030 Direct solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 014031 TOTAL SUNSHINE MINUTE 0 0 11 014192 [SIM] Instantenous sensible heat flux W/m**2 0 -1024 11 014193 [SIM] Instantenous latent heat flux W/m**2 0 -1024 11 014194 [SIM] Instantenous direct solar radiation W/M**2 0 -2048 12 014195 [SIM] Instantenous diffuse solar radiation W/M**2 0 -2048 12 014196 [SIM] INSTANTANEOUS NET LONG-WAVE RADIATION W/M**2 0 -2048 12 014197 [SIM] INSTANTANEOUS NET SHORT-WAVE RADIATION W/M**2 0 -2048 12 014198 [SIM] Visible radiation (downward) W/M**2 3 -50000 21 014199 [SIM] Visible radiation (upward) W/M**2 3 -50000 21 014200 [SIM] Infrared radiation (downward) W/M**2 3 0 20 014201 [SIM] Infrared radiation (upward) W/M**2 3 0 20 015192 [SIM] NO Concentration KG/M**3 10 0 20 015193 [SIM] NO2 Concentration KG/M**3 10 0 20 015194 [SIM] O3 Concentration KG/M**3 10 0 20 015195 [SIM] PM10 Concentration KG/M**3 10 0 20 015196 [SIM] CO Concentration KG/M**3 10 0 20 015197 [SIM] SO2 Concentration KG/M**3 10 0 20 015198 [SIM] PM2.5 Concentration KG/M**3 10 0 20 015199 [SIM] NOY Concentration KG/M**3 10 0 20 015200 [SIM] HCNM Concentration KG/M**3 10 0 20 015201 [SIM] ALDE Concentration KG/M**3 10 0 20 015202 [SIM] PM5 Concentration (tot. aerosol < 5 ug) KG/M**3 10 0 20 015203 [SIM] PM1 Concentration (tot. aerosol < 1.25 ug) KG/M**3 10 0 20 015204 [SIM] PM06 Concentration (tot. aerosol < 0.6 ug) KG/M**3 10 0 20 015205 [SIM] PM03 Concentration (tot. aerosol < 0.3 ug) KG/M**3 10 0 20 015206 [SIM] PM015 Concentration (tot. aerosol < 0.15 ug) KG/M**3 10 0 20 015207 [SIM] PM008 Concentration (tot. aerosol < 0.08 ug) KG/M**3 10 0 20 015208 [SIM] Concentration of primary particulate matter in PM10 KG/M**3 10 0 20 015209 [SIM] Concentration of sulfate in PM10 KG/M**3 10 0 20 015210 [SIM] Concentration of nitrate in PM10 KG/M**3 10 0 20 015211 [SIM] Concentration of ammonium in PM10 KG/M**3 10 0 20 015212 [SIM] Concentration of black carbon in PM10 KG/M**3 10 0 20 015213 [SIM] Concentration of organic carbon in PM10 KG/M**3 10 0 20 015214 [SIM] Concentration of dust in PM10 KG/M**3 10 0 20 015215 [SIM] Concentration of anthrop. A1D in PM10 KG/M**3 10 0 20 015216 [SIM] Concentration of anthrop. BmP in PM10 KG/M**3 10 0 20 015217 [SIM] Concentration of biogenic A1D in PM10 KG/M**3 10 0 20 015218 [SIM] Concentration of biogenic BmP in PM10 KG/M**3 10 0 20 015219 [SIM] Concentration of water in PM10 KG/M**3 10 0 20 015220 [SIM] Concentration of sea salt in PM10 KG/M**3 10 0 20 015221 [SIM] Concentration of secondary organic aerosol in PM10 KG/M**3 10 0 20 015222 [SIM] Total concentration of primary aerosol in PM10 KG/M**3 10 0 20 015223 [SIM] Total concentration of secondary aerosol in PM10 KG/M**3 10 0 20 015224 [SIM] Uncertainity in O3 estimate (Pesco) KG/M**3 10 0 20 015225 [SIM] Uncertainity in PM10 estimate (Pesco) KG/M**3 10 0 20 015226 [SIM] Uncertainity in NO2 estimate (Pesco) KG/M**3 10 0 20 015227 [SIM] Uncertainity in PM2.5 estimate (Pesco) KG/M**3 10 0 20 015228 [SIM] NH3 Concentration KG/M**3 10 0 20 015229 [SIM] Concentration of primary part. matter in aerosol KG/M**3 10 0 20 015230 [SIM] Concentration of sulfate in aerosol KG/M**3 10 0 20 015231 [SIM] Concentration of nitrate in aerosol KG/M**3 10 0 20 015232 [SIM] Concentration of ammonium in aerosol KG/M**3 10 0 20 015233 [SIM] Concentration of anthrop. sec. org. in aerosol KG/M**3 10 0 20 015234 [SIM] Concentration of biogenic sec. org. in aerosol KG/M**3 10 0 20 015235 [SIM] Concentration of ISOPA1 in PM10 KG/M**3 10 0 20 015236 [SIM] C6H6 Concentration KG/M**3 10 0 20 015237 [SIM] Concentration of anthropogenic aerosol in PM10 KG/M**3 10 0 20 015238 [SIM] Concentration of biogenic aerosol in PM10 KG/M**3 10 0 20 015239 [SIM] Concentration of anthropogenic aerosol in PM2.5 KG/M**3 10 0 20 015240 [SIM] Concentration of biogenic aerosol in PM2.5 KG/M**3 10 0 20 015241 [SIM] Aerosol Optical Thickness NUMERIC 4 0 15 020001 HORIZONTAL VISIBILITY M -1 0 13 020003 PRESENT WEATHER (SEE NOTE 1) CODE TABLE 20003 0 0 9 020004 PAST WEATHER (1) (SEE NOTE 2) CODE TABLE 20004 0 0 5 020005 PAST WEATHER (2) (SEE NOTE 2) CODE TABLE 20005 0 0 5 020009 GENERAL WEATHER INDICATOR (TAF/METAR) CODE TABLE 20009 0 0 4 020010 CLOUD COVER (TOTAL) % 0 0 7 020011 CLOUD AMOUNT CODE TABLE 20011 0 0 4 020012 CLOUD TYPE CODE TABLE 20012 0 0 6 020013 HEIGHT OF BASE OF CLOUD M 0 -400 17 020017 CLOUD TOP DESCRIPTION CODE TABLE 20017 0 0 4 020019 SIGNIFICANT PRESENT OR FORECAST WEATHER CCITTIA5 0 0 72 020021 TYPE OF PRECIPITATION FLAG TABLE 20021 0 0 30 020031 ICE DEPOSIT (THICKNESS) M 2 0 7 020032 RATE OF ICE ACCRETION CODE TABLE 20032 0 0 3 020033 CAUSE OF ICE ACCRETION FLAG TABLE 20033 0 0 4 020034 SEA ICE CONCENTRATION CODE TABLE 20034 0 0 5 020035 AMOUNT AND TYPE OF ICE CODE TABLE 20035 0 0 4 020036 ICE SITUATION CODE TABLE 20036 0 0 5 020037 ICE DEVELOPMENT CODE TABLE 20037 0 0 5 020038 BEARING OF ICE EDGE (SEE NOTE 3) DEGREE TRUE 0 0 12 020042 AIRFRAME ICING PRESENT CODE TABLE 20042 0 0 2 020043 PEAK LIQUID WATER CONTENT KG/M**3 4 0 7 020044 AVERAGE LIQUID WATER CONTENT KG/M**3 4 0 7 020045 SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS CODE TABLE 20045 0 0 2 020062 STATE OF THE GROUND (WITH OR WITHOUT SNOW) CODE TABLE 20062 0 0 5 020192 [SIM] Presence of rain > 1mm BOOLEAN 0 0 1 020193 [SIM] Cloud type (METAR) CCITTIA5 0 0 16 020194 [SIM] Presence of shower BOOLEAN 0 0 1 020195 [SIM] Presence of hail BOOLEAN 0 0 1 020196 [SIM] Presence of thunderstorm BOOLEAN 0 0 1 020197 [SIM] Presence of snow BOOLEAN 0 0 1 020198 [SIM] Presence of frost BOOLEAN 0 0 1 020199 [SIM] Presence of dew BOOLEAN 0 0 1 020200 [SIM] Presence of fog BOOLEAN 0 0 1 020201 [SIM] Presence of water-spout BOOLEAN 0 0 1 020202 [SIM] State of the ground with snow CODE TABLE 0 0 5 022001 DIRECTION OF WAVES DEGREE TRUE 0 0 9 022002 DIRECTION OF WIND WAVES DEGREE TRUE 0 0 9 022003 DIRECTION OF SWELL WAVES DEGREE TRUE 0 0 9 022004 DIRECTION OF CURRENT DEGREE TRUE 0 0 9 022011 PERIOD OF WAVES S 0 0 6 022012 PERIOD OF WIND WAVES S 0 0 6 022013 PERIOD OF SWELL WAVES S 0 0 6 022021 HEIGHT OF WAVES M 1 0 10 022022 HEIGHT OF WIND WAVES M 1 0 10 022023 HEIGHT OF SWELL WAVES M 1 0 10 022031 SPEED OF CURRENT M/S 2 0 13 022032 SPEED OF SEA SURFACE CURRENT M/S 2 0 13 022037 Tidal elevation with respect to national land datum M 3 -10000 15 022038 Tidal elevation with respect to local chart datum M 3 -10000 15 022043 SEA/WATER TEMPERATURE K 2 0 15 022049 SEA-SURFACE TEMPERATURE K 2 0 15 022062 SALINITY PART PER THOUSAND 2 0 14 022063 TOTAL WATER DEPTH M 0 0 14 022066 WATER CONDUCTIVITY S M-1 6 0 26 022070 SIGNIFICANT WAVE HEIGHT M 2 0 13 022071 SPECTRAL PEAK WAVE PERIOD S 1 0 9 022073 MAXIMUM WAVE HEIGHT M 2 0 13 022074 AVERAGE WAVE PERIOD S 1 0 9 022192 [SIM] Current X component M/S 2 0 13 022193 [SIM] Current Y component M/S 2 0 13 022194 [SIM] Concentrazione clorofilla a microg/l 2 0 17 023192 [SIM] Dry deposition of H2SO4 MOL/M**2 5 0 20 023193 [SIM] Wet deposition of H2SO4 MOL/M**2 5 0 20 023194 [SIM] Dry deposition of NH4 MOL/M**2 5 0 20 023195 [SIM] Wet deposition of NH4 MOL/M**2 5 0 20 023196 [SIM] Dry deposition of HNO3 MOL/M**2 5 0 20 023197 [SIM] Wet deposition of HNO3 MOL/M**2 5 0 20 023198 [SIM] Solid transport by river KG/S 2 0 24 025076 LOG-10 OF (TEMP-RAD CENTRAL WAVENUMBER) FOR ATOVS LOGM-1 8 0 30 029192 [SIM] Land fraction % 1 0 10 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 31021 0 0 6 031031 DATA PRESENT INDICATOR FLAG TABLE 31031 0 0 1 033002 QUALITY INFORMATION CODE TABLE 33002 0 0 2 033003 QUALITY INFORMATION CODE TABLE 33003 0 0 3 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 33005 0 0 30 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 33006 0 0 3 033007 PER CENT CONFIDENCE % 0 0 7 033015 DATA QUALITY CHECK INDICATOR CODE TABLE 33015 0 0 6 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 33020 0 0 3 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 33021 0 0 2 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 33022 0 0 2 033023 QUALITY OF BUOY LOCATION CODE TABLE 33023 0 0 2 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) CODE TABLE 33024 0 0 4 033025 ACARS INTERPOLATED VALUES CODE TABLE 33025 0 0 3 033026 MOISTURE QUALITY CODE TABLE 33026 0 0 6 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) CODE TABLE 33027 0 0 3 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 33030 0 0 24 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 33031 0 0 24 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 33032 0 0 24 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 33033 0 0 24 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 33035 0 0 4 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 033037 WIND CORRELATION ERROR FLAG TABLE 33037 0 0 20 033038 QUALITY FLAGS FOR GROUND-BASED GNSS DATA FLAG TABLE 33038 0 0 10 033040 CONFIDENCE INTERVAL % 0 0 7 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 33041 0 0 2 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 33050 0 0 4 033192 [SIM] Climatological and consistency check % 0 0 7 033193 [SIM] Time consistency % 0 0 7 033194 [SIM] Space consistency % 0 0 7 033195 [SIM] MeteoDB variable ID NUMERIC 0 0 24 033196 [SIM] Data has been invalidated CODE TABLE 33196 0 0 2 033197 [SIM] Manual replacement in substitution CODE TABLE 33197 0 0 2 033198 [SIM] Observation increment NUMERIC 4 -1073741823 31 033201 [SIM] Kalman coefficient, state vector (s.v.) x1 NUMERIC 4 -1073741823 31 033202 [SIM] Kalman coefficient, state vector (s.v.) x2 NUMERIC 4 -1073741823 31 033203 [SIM] Kalman coefficient, s.v. error covariance matrix(1,1) NUMERIC 4 -1073741823 31 033204 [SIM] Kalman coefficient, s.v. error covariance matrix(1,2) NUMERIC 4 -1073741823 31 033205 [SIM] Kalman coefficient, s.v. error covariance matrix(2,1) NUMERIC 4 -1073741823 31 033206 [SIM] Kalman coefficient, s.v. error covariance matrix(2,2) NUMERIC 4 -1073741823 31 033207 [SIM] Kalman observation sequential counter NUMERIC 0 -127 8 033208 [SIM] Kalman osservation missing counter NUMERIC 0 -127 8 033209 [SIM] Normalized Density Index % 0 0 7 048001 [SIM] Graminacee_Graminacee indistinte POLLEN/M**3 1 0 24 048002 [SIM] Betulacee_Ontano nero POLLEN/M**3 1 0 24 048003 [SIM] Betulacee_Betulla POLLEN/M**3 1 0 24 048004 [SIM] Betulacee_Betulacee indistinte POLLEN/M**3 1 0 24 048005 [SIM] Composite_Ambrosia POLLEN/M**3 1 0 24 048006 [SIM] Composite_Artemisia POLLEN/M**3 1 0 24 048007 [SIM] Composite_Composite indistinte POLLEN/M**3 1 0 24 048008 [SIM] Corilacee_Nocciolo POLLEN/M**3 1 0 24 048009 [SIM] Corilacee_Carpino bianco -Carpino nero POLLEN/M**3 1 0 24 048010 [SIM] Corilacee_Corilacee indistinte POLLEN/M**3 1 0 24 048011 [SIM] Fagacee_Castagno POLLEN/M**3 1 0 24 048012 [SIM] Fagacee_Faggio POLLEN/M**3 1 0 24 048013 [SIM] Fagacee_Quercia POLLEN/M**3 1 0 24 048014 [SIM] Fagacee_Fagacee indistinte POLLEN/M**3 1 0 24 048015 [SIM] Oleacee_Olivo POLLEN/M**3 1 0 24 048016 [SIM] Oleacee_Frassino POLLEN/M**3 1 0 24 048017 [SIM] Oleacee_Oleacee indistinte POLLEN/M**3 1 0 24 048018 [SIM] Plantaginacee_Plantaginacee indistinte POLLEN/M**3 1 0 24 048019 [SIM] Urticacee_Urticacee indistinte POLLEN/M**3 1 0 24 048020 [SIM] Cupressacee - Taxacee indistinte_Cipresso comune POLLEN/M**3 1 0 24 048021 [SIM] Cupressacee - Taxacee indistinte_Cupressacee - Taxacee ind POLLEN/M**3 1 0 24 048022 [SIM] Chenopodiacee - Amarantacee Indistinte_Amaranto POLLEN/M**3 1 0 24 048023 [SIM] Chenopodiacee - Amarantacee Indistinte_Chenopodiacee - Ama POLLEN/M**3 1 0 24 048024 [SIM] Poligonacee_Poligonacee indistinte POLLEN/M**3 1 0 24 048025 [SIM] Euphorbiacee_Euforbiacee indistinte POLLEN/M**3 1 0 24 048026 [SIM] Mirtacee_Mirtacee indistinte POLLEN/M**3 1 0 24 048027 [SIM] Ulmacee_Bagolaro comune POLLEN/M**3 1 0 24 048028 [SIM] Ulmacee_Olmo campestre POLLEN/M**3 1 0 24 048029 [SIM] Ulmacee_Ulmacee indistinte POLLEN/M**3 1 0 24 048030 [SIM] Platanacee_Platanacee indistinte POLLEN/M**3 1 0 24 048031 [SIM] Aceraceae_Aceracee indistinte POLLEN/M**3 1 0 24 048032 [SIM] Pinacee_Pinacee indistinte POLLEN/M**3 1 0 24 048033 [SIM] Salicacee_Salice comune POLLEN/M**3 1 0 24 048034 [SIM] Salicacee_Pioppo POLLEN/M**3 1 0 24 048035 [SIM] Salicacee_Salicacee indistinte POLLEN/M**3 1 0 24 048036 [SIM] Ciperacee_Ciperacee indistinte POLLEN/M**3 1 0 24 048037 [SIM] Juglandacee_Juglandacee indistinte POLLEN/M**3 1 0 24 048038 [SIM] Ippocastanacee_Ippocastanacee indistinte POLLEN/M**3 1 0 24 048039 [SIM] Spore fungine_Alternaria POLLEN/M**3 1 0 24 048040 [SIM] Spore fungine_Botrytis POLLEN/M**3 1 0 24 048041 [SIM] Spore fungine_Stemphylium POLLEN/M**3 1 0 24 048042 [SIM] Spore fungine_Cladosporium POLLEN/M**3 1 0 24 048043 [SIM] Spore fungine_Epicoccum POLLEN/M**3 1 0 24 048044 [SIM] Altri Pollini / Non Identificati_Altri pollini identificat POLLEN/M**3 1 0 24 048045 [SIM] Altri Pollini / Non Identificati_Pollini non identificati POLLEN/M**3 1 0 24 048046 [SIM] Altre Spore / Non identificati_Altre spore fungine POLLEN/M**3 1 0 24 048047 [SIM] Altre Spore / Non identificati_Spore fungine non identific POLLEN/M**3 1 0 24 048048 [SIM] Graminacee_Graminacee indistinte 1 POLLEN/M**3 1 0 24 048049 [SIM] Plantaginacee_Plantaginacee indistinte 1 POLLEN/M**3 1 0 24 048050 [SIM] Urticacee_Urticacee indistinte 1 POLLEN/M**3 1 0 24 048051 [SIM] Poligonacee_Poligonacee indistinte 1 POLLEN/M**3 1 0 24 048052 [SIM] Euphorbiacee_Euforbiacee indistinte 1 POLLEN/M**3 1 0 24 048053 [SIM] Mirtacee_Mirtacee indistinte 1 POLLEN/M**3 1 0 24 048054 [SIM] Platanacee_Platanacee indistinte 1 POLLEN/M**3 1 0 24 048055 [SIM] Aceraceae_Aceracee indistinte 1 POLLEN/M**3 1 0 24 048056 [SIM] Pinacee_Pinacee indistinte 1 POLLEN/M**3 1 0 24 048057 [SIM] Ciperacee_Ciperacee indistinte 1 POLLEN/M**3 1 0 24 048058 [SIM] Juglandacee_Juglandacee indistinte 1 POLLEN/M**3 1 0 24 048059 [SIM] Ippocastanacee_Ippocastanacee indistinte 1 POLLEN/M**3 1 0 24 048060 [SIM] Oleacee_Ligustro POLLEN/M**3 1 0 24 048128 [SIM] Conta Graminacee_Graminacee indistinte NUMERIC 0 0 20 048129 [SIM] Conta Betulacee_Ontano nero NUMERIC 0 0 20 048130 [SIM] Conta Betulacee_Betulla NUMERIC 0 0 20 048131 [SIM] Conta Betulacee_Betulacee indistinte NUMERIC 0 0 20 048132 [SIM] Conta Composite_Ambrosia NUMERIC 0 0 20 048133 [SIM] Conta Composite_Artemisia NUMERIC 0 0 20 048134 [SIM] Conta Composite_Composite indistinte NUMERIC 0 0 20 048135 [SIM] Conta Corilacee_Nocciolo NUMERIC 0 0 20 048136 [SIM] Conta Corilacee_Carpino bianco -Carpino nero NUMERIC 0 0 20 048137 [SIM] Conta Corilacee_Corilacee indistinte NUMERIC 0 0 20 048138 [SIM] Conta Fagacee_Castagno NUMERIC 0 0 20 048139 [SIM] Conta Fagacee_Faggio NUMERIC 0 0 20 048140 [SIM] Conta Fagacee_Quercia NUMERIC 0 0 20 048141 [SIM] Conta Fagacee_Fagacee indistinte NUMERIC 0 0 20 048142 [SIM] Conta Oleacee_Olivo NUMERIC 0 0 20 048143 [SIM] Conta Oleacee_Frassino NUMERIC 0 0 20 048144 [SIM] Conta Oleacee_Oleacee indistinte NUMERIC 0 0 20 048145 [SIM] Conta Plantaginacee_Plantaginacee indistinte NUMERIC 0 0 20 048146 [SIM] Conta Urticacee_Urticacee indistinte NUMERIC 0 0 20 048147 [SIM] Conta Cupressacee - Taxacee indistinte_Cipresso comune NUMERIC 0 0 20 048148 [SIM] Conta Cupressacee - Taxacee indistinte_Cupressacee - Taxac NUMERIC 0 0 20 048149 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Amaranto NUMERIC 0 0 20 048150 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Chenopodiacee NUMERIC 0 0 20 048151 [SIM] Conta Poligonacee_Poligonacee indistinte NUMERIC 0 0 20 048152 [SIM] Conta Euphorbiacee_Euforbiacee indistinte NUMERIC 0 0 20 048153 [SIM] Conta Mirtacee_Mirtacee indistinte NUMERIC 0 0 20 048154 [SIM] Conta Ulmacee_Bagolaro comune NUMERIC 0 0 20 048155 [SIM] Conta Ulmacee_Olmo campestre NUMERIC 0 0 20 048156 [SIM] Conta Ulmacee_Ulmacee indistinte NUMERIC 0 0 20 048157 [SIM] Conta Platanacee_Platanacee indistinte NUMERIC 0 0 20 048158 [SIM] Conta Aceraceae_Aceracee indistinte NUMERIC 0 0 20 048159 [SIM] Conta Pinacee_Pinacee indistinte NUMERIC 0 0 20 048160 [SIM] Conta Salicacee_Salice comune NUMERIC 0 0 20 048161 [SIM] Conta Salicacee_Pioppo NUMERIC 0 0 20 048162 [SIM] Conta Salicacee_Salicacee indistinte NUMERIC 0 0 20 048163 [SIM] Conta Ciperacee_Ciperacee indistinte NUMERIC 0 0 20 048164 [SIM] Conta Juglandacee_Juglandacee indistinte NUMERIC 0 0 20 048165 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte NUMERIC 0 0 20 048166 [SIM] Conta Spore fungine_Alternaria NUMERIC 0 0 20 048167 [SIM] Conta Spore fungine_Botrytis NUMERIC 0 0 20 048168 [SIM] Conta Spore fungine_Stemphylium NUMERIC 0 0 20 048169 [SIM] Conta Spore fungine_Cladosporium NUMERIC 0 0 20 048170 [SIM] Conta Spore fungine_Epicoccum NUMERIC 0 0 20 048171 [SIM] Conta Altri Pollini / Non Identificati_Altri pollini ident NUMERIC 0 0 20 048172 [SIM] Conta Altri Pollini / Non Identificati_Pollini non identif NUMERIC 0 0 20 048173 [SIM] Conta Altre Spore / Non identificati_Altre spore fungine NUMERIC 0 0 20 048174 [SIM] Conta Altre Spore / Non identificati_Spore fungine non ide NUMERIC 0 0 20 048175 [SIM] Conta Graminacee_Graminacee indistinte 1 NUMERIC 0 0 20 048176 [SIM] Conta Plantaginacee_Plantaginacee indistinte 1 NUMERIC 0 0 20 048177 [SIM] Conta Urticacee_Urticacee indistinte 1 NUMERIC 0 0 20 048178 [SIM] Conta Poligonacee_Poligonacee indistinte 1 NUMERIC 0 0 20 048179 [SIM] Conta Euphorbiacee_Euforbiacee indistinte 1 NUMERIC 0 0 20 048180 [SIM] Conta Mirtacee_Mirtacee indistinte 1 NUMERIC 0 0 20 048181 [SIM] Conta Platanacee_Platanacee indistinte 1 NUMERIC 0 0 20 048182 [SIM] Conta Aceraceae_Aceracee indistinte 1 NUMERIC 0 0 20 048183 [SIM] Conta Pinacee_Pinacee indistinte 1 NUMERIC 0 0 20 048184 [SIM] Conta Ciperacee_Ciperacee indistinte 1 NUMERIC 0 0 20 048185 [SIM] Conta Juglandacee_Juglandacee indistinte 1 NUMERIC 0 0 20 048186 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte 1 NUMERIC 0 0 20 048187 [SIM] Conta Oleacee_Ligustro NUMERIC 0 0 20 dballe-7.21/tables/B000299.txt0000644000175000017500000023766413022503466012512 00000000000000 001001 WMO BLOCK NUMBER NUMERIC 0 0 7 NUMERIC 0 2 001002 WMO STATION NUMBER NUMERIC 0 0 10 NUMERIC 0 3 001006 AIRCRAFT FLIGHT NUMBER CCITTIA5 0 0 64 CHARACTER 0 8 001007 SATELLITE IDENTIFIER CODE TABLE 1007 0 0 10 CODE TABLE 1007 0 3 001008 AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION CCITTIA5 0 0 64 CHARACTER 0 8 001011 SHIP OR MOBILE LAND STATION IDENTIFIER CCITTIA5 0 0 72 CHARACTER 0 9 001012 DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM** DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 001013 SPEED OF MOTION OF MOVING OBSERVING PLATFORM* M/S 0 0 10 M/S 0 3 001019 LONG STATION OR SITE NAME CCITTIA5 0 0 256 CHARACTER 0 32 001023 OBSERVATION SEQUENCE NUMBER NUMERIC 0 0 9 NUMERIC 0 3 001033 IDENTIFICATION OF ORIGINATING/GENERATING CENTRE CODE TABLE 001033 0 0 8 CODE TABLE 001033 0 3 001034 IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE CODE TABLE 001034 0 0 8 CODE TABLE 001034 0 3 001063 ICAO LOCATION INDICATOR CCITTIA5 0 0 64 CHARACTER 0 8 001192 [SIM] MeteoDB station ID NUMERIC 0 0 24 NUMERIC 0 8 001193 [SIM] Report code NUMERIC 0 0 16 NUMERIC 0 5 001194 [SIM] Report mnemonic CCITTIA5 0 0 128 CHARACTER 0 16 001212 AIR QUALITY OBSERVING STATION LOCAL CODE CCITTIA5 0 0 56 CHARACTER 0 7 001213 AIRBASE AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 56 CHARACTER 0 7 001214 GEMS AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 48 CHARACTER 0 6 001215 AIR QUALITY OBSERVING STATION DOMINANT EMISSION SOURCE CODE TABLE 001215 0 0 3 CODE TABLE 001215 0 1 001216 AIR QUALITY OBSERVING STATION AREA TYPE CODE TABLE 001216 0 0 3 CODE TABLE 001216 0 1 001217 AIR QUALITY OBSERVING STATION TERRAIN TYPE CODE TABLE 001217 0 0 4 CODE TABLE 001217 0 2 002001 TYPE OF STATION CODE TABLE 2001 0 0 2 CODE TABLE 2001 0 1 002002 TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT FLAG TABLE 2002 0 0 4 FLAG TABLE 2002 0 2 002003 TYPE OF MEASURING EQUIPMENT USED CODE TABLE 2003 0 0 4 CODE TABLE 2003 0 2 002004 TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C CODE TABLE 2004 0 0 4 CODE TABLE 2004 0 2 002005 PRECISION OF TEMPERATURE OBSERVATION K 2 0 7 K 2 3 002011 RADIOSONDE TYPE CODE TABLE 2011 0 0 8 CODE TABLE 2011 0 3 002012 RADIOSONDE COMPUTATIONAL METHOD CODE TABLE 2012 0 0 4 CODE TABLE 2012 0 2 002013 SOLAR AND INFRARED RADIATION CORRECTION CODE TABLE 2013 0 0 4 CODE TABLE 2013 0 2 002014 TRACKING TECHNIQUE/STATUS OF SYSTEM USED CODE TABLE 2014 0 0 7 CODE TABLE 2014 0 3 002038 METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT CODE TABLE 2038 0 0 4 CODE TABLE 2038 0 2 002039 METHOD OF WET-BULB TEMPERATURE MEASUREMENT CODE TABLE 2039 0 0 3 CODE TABLE 2039 0 1 002048 SATELLITE SENSOR INDICATOR CODE TABLE 2048 0 0 4 CODE TABLE 2048 0 2 002061 AIRCRAFT NAVIGATIONAL SYSTEM CODE TABLE 2061 0 0 3 CODE TABLE 2061 0 1 002062 TYPE OF AIRCRAFT DATA RELAY SYSTEM CODE TABLE 2062 0 0 4 CODE TABLE 2062 0 2 002063 AIRCRAFT ROLL ANGLE DEGREE 2 -18000 16 DEGREE 2 5 002064 AIRCRAFT ROLL ANGLE QUALITY CODE TABLE 2064 0 0 2 CODE TABLE 2064 0 1 002070 ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE CODE TABLE 2070 0 0 4 CODE TABLE 2070 0 2 002121 MEAN FREQUENCY Hz -8 0 7 Hz -8 3 002125 PULSE REPETITION FREQUENCY Hz -1 0 8 Hz -1 3 004001 YEAR YEAR 0 0 12 YEAR 0 4 004002 MONTH MONTH 0 0 4 MONTH 0 2 004003 DAY DAY 0 0 6 DAY 0 2 004004 HOUR HOUR 0 0 5 HOUR 0 2 004005 MINUTE MINUTE 0 0 6 MINUTE 0 2 004006 SECOND SECOND 0 0 6 SECOND 0 2 004086 LONG TIME PERIOD OR DISPLACEMENT SECOND 0 -8192 15 SECOND 0 5 004192 [SIM] Time range type NUMERIC 0 0 10 NUMERIC 0 4 004193 [SIM] Time range P1 NUMERIC 0 -536870912 31 NUMERIC 0 10 004194 [SIM] Time range P2 NUMERIC 0 -536870912 31 NUMERIC 0 10 004195 [SIM] Temperature event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 004196 [SIM] Relative humidity event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 004197 [SIM] Wind velocity event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 004198 [SIM] Pressure event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 005001 LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 005015 LATITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 005021 BEARING OR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005022 SOLAR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005040 ORBIT NUMBER NUMERIC 0 0 24 NUMERIC 0 8 005041 SCAN LINE NUMBER NUMERIC 0 0 8 NUMERIC 0 3 005043 FIELD OF VIEW NUMBER NUMERIC 0 0 8 NUMERIC 0 3 006001 LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 006015 LONGITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 007002 HEIGHT OR ALTITUDE M -1 -40 16 M -1 5 007004 PRESSURE PA -1 0 14 PA -1 5 007007 HEIGHT M 0 -1000 17 M 0 6 007010 FLIGHT LEVEL M 0 -1024 16 FT -1 5 007024 SATELLITE ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007025 SOLAR ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007030 HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3) M 1 -4000 17 M 1 5 007031 HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4) M 1 - 4000 17 M 1 5 007032 HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) M 2 0 16 M 2 5 007192 [SIM] First level type NUMERIC 0 0 10 NUMERIC 0 4 007193 [SIM] Level L1 NUMERIC 0 -536870912 31 NUMERIC 0 10 007194 [SIM] Level L2 NUMERIC 0 -536870912 31 NUMERIC 0 10 007195 [SIM] Second level type NUMERIC 0 0 31 NUMERIC 0 4 008002 VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS) CODE TABLE 8002 0 0 6 CODE TABLE 8002 0 2 008004 PHASE OF AIRCRAFT FLIGHT CODE TABLE 8004 0 0 3 CODE TABLE 8004 0 1 008009 DETAILED PHASE OF FLIGHT CODE TABLE 8009 0 0 4 CODE TABLE 8009 0 2 008021 TIME SIGNIFICANCE CODE TABLE 8021 0 0 5 CODE TABLE 8021 0 2 008042 EXTENDED VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8042 0 0 18 FLAG TABLE 8042 0 6 008044 (VAL) CAS REGISTRY NUMBER CCITTIA5 0 0 88 CHARACTER 0 11 008192 [SIM] Number of wind velocity mean values present NUMERIC 0 0 5 NUMERIC 0 2 008193 [SIM] Number of wind velocity minimum values present NUMERIC 0 0 5 NUMERIC 0 2 008194 [SIM] Number of wind velocity maximum values present NUMERIC 0 0 5 NUMERIC 0 2 008195 [SIM] Number of wind prevalent direction values present NUMERIC 0 0 5 NUMERIC 0 2 008196 [SIM] Number of mean temperature values present NUMERIC 0 0 5 NUMERIC 0 2 008197 [SIM] Number of minimum temperature values present NUMERIC 0 0 5 NUMERIC 0 2 008198 [SIM] Number of maximum temperature values present NUMERIC 0 0 5 NUMERIC 0 2 008199 [SIM] Number of mean relative humidity values present NUMERIC 0 0 5 NUMERIC 0 2 008200 [SIM] Number of minimum relative humidity values present NUMERIC 0 0 5 NUMERIC 0 2 008201 [SIM] Number of maximum relative humidity values present NUMERIC 0 0 5 NUMERIC 0 2 008202 [SIM] Number of mean pressure values present NUMERIC 0 0 5 NUMERIC 0 2 008203 [SIM] Number of minimum pressure values present NUMERIC 0 0 5 NUMERIC 0 2 008204 [SIM] Number of maximum pressure values present NUMERIC 0 0 5 NUMERIC 0 2 008205 [SIM] Number of precipitation values present NUMERIC 0 0 5 NUMERIC 0 2 008206 [SIM] Number of leaf wetness values present NUMERIC 0 0 5 NUMERIC 0 2 008207 [SIM] Number of scalar wind velocity mean values present NUMERIC 0 0 5 NUMERIC 0 2 008208 [SIM] Number of cloud cover mean values present NUMERIC 0 0 5 NUMERIC 0 2 008209 [SIM] Number of cloud cover maximum values present NUMERIC 0 0 5 NUMERIC 0 2 008210 [SIM] Number of cloud cover minimum values present NUMERIC 0 0 5 NUMERIC 0 2 010004 PRESSURE PA -1 0 14 PA -1 5 010007 HEIGHT M 0 -1000 17 M 0 6 010008 GEOPOTENTIAL M**2/S**2 0 -10000 20 M**2/S**2 0 7 010009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 GPM 0 5 010051 PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5 010052 ALTIMETER SETTING (QNH) PA -1 0 14 PA -1 5 010060 PRESSURE CHANGE PA -1 -1024 11 PA -1 4 010063 CHARACTERISTIC OF PRESSURE TENDENCY CODE TABLE 10063 0 0 4 CODE TABLE 10063 0 2 010197 ANEMOMETER HEIGHT M 0 0 9 M 0 3 011001 WIND DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011002 WIND SPEED M/S 1 0 12 M/S 1 4 011003 U-COMPONENT M/S 1 -4096 13 M/S 1 4 011004 V-COMPONENT M/S 1 -4096 13 M/S 1 4 011005 W-COMPONENT PA/S 1 -512 10 PA/S 1 4 011006 W-COMPONENT M/S 2 -4096 13 M/S 2 4 011016 EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011017 EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011031 DEGREE OF TURBULENCE CODE TABLE 11031 0 0 4 CODE TABLE 11031 0 2 011036 MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED M/S 1 0 10 M/S 1 4 011037 TURBULENCE INDEX CODE TABLE 11037 0 0 6 CODE TABLE 11037 0 2 011039 EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE CODE TABLE 11039 0 0 6 CODE TABLE 11039 0 2 011041 MAXIMUM WIND GUST SPEED M/S 1 0 12 M/S 1 4 011043 MAXIMUM WIND GUST DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011050 STANDARD DEVIATION OF HORIZONTAL WIND SPEED M/S 1 0 12 M/S 1 4 011061 ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW M/S 1 0 12 M/S 1 4 011062 ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE M/S 1 0 12 M/S 1 4 011075 MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 M**(2/3)/S 2 3 011076 PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 M**(2/3)/S 2 3 011077 REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE S 0 0 12 S 0 4 011192 [SIM] W-component terrain following M/S 2 -4096 13 M/S 2 4 011193 [SIM] Stability class NUMERIC 0 0 4 NUMERIC 0 2 011194 [SIM] Friction velocity (calmet) M/S 3 0 14 M/S 3 4 011195 [SIM] Mixing height (calmet) M 0 0 12 M 0 4 011196 [SIM] Obukov lenght (calmet) M 1 -100000 15 M 1 5 011197 [SIM] Convective velocitiy scale (calmet) M/S 3 0 14 M/S 3 4 011198 [SIM] SQRT(2*TKE) M/S 4 0 20 M/S 4 6 011199 [SIM] Surface Roughness M 3 0 14 M 1 4 011200 [SIM] U-component of momentum flux N/M**2 4 -524288 20 N/M**2 4 6 011201 [SIM] V-component of momentum flux N/M**2 4 -524288 20 N/M**2 4 6 011202 [SIM] Friction velocity (diagmet) M/S 3 0 14 M/S 3 4 011203 [SIM] Mixing height (diagmet) M 0 0 12 M 0 4 011204 [SIM] Obukov lenght (diagmet) M 1 -100000 15 M 1 5 011205 [SIM] Convective velocitiy scale (diagmet) M/S 3 0 14 M/S 3 4 011206 [SIM] Friction velocity (COSMO) M/S 3 0 14 M/S 3 4 011207 [SIM] Obukov lenght (COSMO) M 1 -100000 15 M 1 5 011208 [SIM] Distance covered by the hourly mean wind M 0 0 23 M 0 7 012001 TEMPERATURE/AIR TEMPERATURE K 1 0 12 C 1 3 012003 DEW-POINT TEMPERATURE K 1 0 12 C 1 3 012030 SOIL TEMPERATURE K 1 0 12 C 1 3 012049 Temperature change over specified period K 0 -30 6 C 0 2 012061 SKIN TEMPERATURE K 1 0 12 K 1 4 012063 BRIGHTNESS TEMPERATURE K 1 0 12 K 1 4 012101 TEMPERATURE/DRY-BULB TEMPERATURE K 2 0 16 K 2 5 012102 WET-BULB TEMPERATURE K 2 0 16 C 2 4 012103 DEW-POINT TEMPERATURE K 2 0 16 K 2 5 012121 GROUND MINIMUM TEMPERATURE K 2 0 16 C 2 4 012131 SNOW TEMPERATURE K 2 0 16 C 2 4 012192 POTENTIAL TEMPERATURE K 2 0 16 K 2 5 012193 PSEUDO-EQUIVALENT POTENTIAL TEMPERATURE K 2 0 16 K 2 5 012194 [SIM] Air density KG/M**3 6 0 20 KG/M**3 6 6 013001 SPECIFIC HUMIDITY KG/KG 5 0 14 KG/KG 5 5 013002 MIXING RATIO KG/KG 5 0 14 KG/KG 5 5 013003 RELATIVE HUMIDITY % 0 0 7 % 0 3 013011 TOTAL PRECIPITATION / TOTAL WATER EQUIVALENT KG/M**2 1 -1 14 KG/M**2 1 5 013012 DEPTH OF FRESH SNOW M 2 -2 12 M 2 4 013013 TOTAL SNOW DEPTH M 3 -20 20 M 3 6 013031 EVAPOTRANSPIRATION KG/M**2 1 0 7 KG/M**2 0 3 013033 EVAPORATION/EVAPOTRANSPIRATION KG/M**2 1 0 10 KG/M**2 1 4 013080 WATER PH pH 1 0 10 pH 1 3 013081 WATER CONDUCTIVITY S/M 3 0 14 S/M 3 4 013082 WATER TEMPERATURE K 1 0 12 K 1 4 013083 DISSOLVED OXYGEN KG/M**3 6 0 15 KG/M**3 6 5 013192 [SIM] Cloud liquid water content KG/KG 8 0 27 KG/KG 8 8 013193 [SIM] Cloud ice content KG/KG 8 0 27 KG/KG 8 8 013194 [SIM] Water table depth M 3 0 18 M 3 6 013195 [SIM] Precipitating liquid water KG/KG 8 0 27 KG/KG 8 8 013196 [SIM] Precipitating ice KG/KG 8 0 27 KG/KG 8 8 013197 [SIM] Total precipitating water+ice KG/KG 8 0 27 KG/KG 8 8 013198 [SIM] Total liquid water (cloud+precipitating) KG/KG 8 0 27 KG/KG 8 8 013199 [SIM] Total ice (cloud+precipitating) KG/KG 8 0 27 KG/KG 8 8 013200 [SIM] Grid-scale liquid precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013201 [SIM] Grid-scale snowfall KG/M**2 1 -1 14 KG/M**2 1 5 013202 [SIM] Convective liquid precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013203 [SIM] Convective snowfall KG/M**2 1 -1 14 KG/M**2 1 5 013204 [SIM] Total convective precipitation (liquid + snow) KG/M**2 1 -1 14 KG/M**2 1 5 013205 [SIM] Snowfall (grid-scale + convective) KG/M**2 1 -1 14 KG/M**2 1 5 013206 [SIM] Soil water content KG/M**2 1 0 14 KG/M**2 1 5 013210 [SIM] Penetration of the probe in the snow M 2 0 9 M 2 3 013212 [SIM] Leaf wetness duration S -1 0 24 S -1 7 013215 [SIM] River level M 2 -100000 18 M 2 6 013216 [SIM] Hourly precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013217 [SIM] 5 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013218 [SIM] 10 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013219 [SIM] 15 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013220 [SIM] 20 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013221 [SIM] 30 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013222 [SIM] 180 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013223 [SIM] 360 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013224 [SIM] 720 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013225 [SIM] 1440 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013226 [SIM] River discharge M**3/S 2 0 21 M**3/S 2 7 013227 [SIM] Soil volumetric water content % 1 0 10 % 1 4 013228 [SIM] Piezometric level M 3 0 18 M 3 6 013229 [SIM] Density of snow KG/M**3 1 0 14 KG/M**3 1 5 013230 [SIM] Convective Available Potential Energy (CAPE) J/KG 1 0 17 J/KG 1 5 013231 [SIM] Ossigeno disciolto sat % 1 0 10 % 1 4 014002 Long-wave radiation, integrated over period specified J M-2 -3 -65536 17 J M-2 -3 5 014004 Short-wave radiation, integrated over period specified J M-2 -3 -65536 17 J M-2 -3 5 014016 NET RADIATION J/M**2 -4 -16384 15 J/M**2 -4 5 014017 INSTANTANEOUS LONG-WAVE RADIATION (incoming) W/M**2 0 -2048 12 W/M**2 0 4 014018 INSTANTANEOUS SHORT-WAVE RADIATION (incoming) W/M**2 0 -2048 12 W/M**2 -3 4 014019 SURFACE ALBEDO % 0 0 7 % 0 3 014021 GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 J/M**2 -4 5 014028 Global solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 J M-2 -2 6 014029 Diffuse solar radiation (high accuracy), integrated over period J M-2 -2 0 20 J M-2 -2 6 014030 Direct solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 J M-2 -2 6 014031 TOTAL SUNSHINE MINUTE 0 0 11 MINUTE 0 4 014192 [SIM] Instantenous sensible heat flux W/m**2 0 -1024 11 W/M**2 0 4 014193 [SIM] Instantenous latent heat flux W/m**2 0 -1024 11 W/M**2 0 4 014194 [SIM] Instantenous direct solar radiation W/M**2 0 -2048 12 W/M**2 -3 4 014195 [SIM] Instantenous diffuse solar radiation W/M**2 0 -2048 12 W/M**2 -3 4 014196 [SIM] INSTANTANEOUS NET LONG-WAVE RADIATION W/M**2 0 -2048 12 W/M**2 0 4 014197 [SIM] INSTANTANEOUS NET SHORT-WAVE RADIATION W/M**2 0 -2048 12 W/M**2 -3 4 014198 [SIM] Visible radiation (downward) W/M**2 3 -50000 21 W/M**2 3 7 014199 [SIM] Visible radiation (upward) W/M**2 3 -50000 21 W/M**2 3 7 014200 [SIM] Infrared radiation (downward) W/M**2 3 0 20 W/M**2 3 7 014201 [SIM] Infrared radiation (upward) W/M**2 3 0 20 W/M**2 3 7 015192 [SIM] NO Concentration KG/M**3 10 0 20 KG/M**3 10 6 015193 [SIM] NO2 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015194 [SIM] O3 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015195 [SIM] PM10 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015196 [SIM] CO Concentration KG/M**3 10 0 20 KG/M**3 10 6 015197 [SIM] SO2 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015198 [SIM] PM2.5 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015199 [SIM] NOY Concentration KG/M**3 10 0 20 KG/M**3 10 6 015200 [SIM] HCNM Concentration KG/M**3 10 0 20 KG/M**3 10 6 015201 [SIM] ALDE Concentration KG/M**3 10 0 20 KG/M**3 10 6 015202 [SIM] PM5 Concentration (tot. aerosol < 5 ug) KG/M**3 10 0 20 KG/M**3 10 6 015203 [SIM] PM1 Concentration (tot. aerosol < 1.25 ug) KG/M**3 10 0 20 KG/M**3 10 6 015204 [SIM] PM06 Concentration (tot. aerosol < 0.6 ug) KG/M**3 10 0 20 KG/M**3 10 6 015205 [SIM] PM03 Concentration (tot. aerosol < 0.3 ug) KG/M**3 10 0 20 KG/M**3 10 6 015206 [SIM] PM015 Concentration (tot. aerosol < 0.15 ug) KG/M**3 10 0 20 KG/M**3 10 6 015207 [SIM] PM008 Concentration (tot. aerosol < 0.08 ug) KG/M**3 10 0 20 KG/M**3 10 6 015208 [SIM] Concentration of primary particulate matter in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015209 [SIM] Concentration of sulfate in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015210 [SIM] Concentration of nitrate in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015211 [SIM] Concentration of ammonium in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015212 [SIM] Concentration of black carbon in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015213 [SIM] Concentration of organic carbon in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015214 [SIM] Concentration of dust in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015215 [SIM] Concentration of anthrop. A1D in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015216 [SIM] Concentration of anthrop. BmP in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015217 [SIM] Concentration of biogenic A1D in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015218 [SIM] Concentration of biogenic BmP in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015219 [SIM] Concentration of water in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015220 [SIM] Concentration of sea salt in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015221 [SIM] Concentration of secondary organic aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015222 [SIM] Total concentration of primary aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015223 [SIM] Total concentration of secondary aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015224 [SIM] Uncertainity in O3 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015225 [SIM] Uncertainity in PM10 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015226 [SIM] Uncertainity in NO2 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015227 [SIM] Uncertainity in PM2.5 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015228 [SIM] NH3 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015229 [SIM] Concentration of primary part. matter in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015230 [SIM] Concentration of sulfate in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015231 [SIM] Concentration of nitrate in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015232 [SIM] Concentration of ammonium in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015233 [SIM] Concentration of anthrop. sec. org. in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015234 [SIM] Concentration of biogenic sec. org. in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015235 [SIM] Concentration of ISOPA1 in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015236 [SIM] C6H6 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015237 [SIM] Concentration of anthropogenic aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015238 [SIM] Concentration of biogenic aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015239 [SIM] Concentration of anthropogenic aerosol in PM2.5 KG/M**3 10 0 20 KG/M**3 10 6 015240 [SIM] Concentration of biogenic aerosol in PM2.5 KG/M**3 10 0 20 KG/M**3 10 6 015241 [SIM] Aerosol Optical Thickness NUMERIC 4 0 15 NUMERIC 4 5 020001 HORIZONTAL VISIBILITY M -1 0 13 M -1 4 020003 PRESENT WEATHER (SEE NOTE 1) CODE TABLE 20003 0 0 9 CODE TABLE 20003 0 3 020004 PAST WEATHER (1) (SEE NOTE 2) CODE TABLE 20004 0 0 5 CODE TABLE 20004 0 2 020005 PAST WEATHER (2) (SEE NOTE 2) CODE TABLE 20005 0 0 5 CODE TABLE 20005 0 2 020009 GENERAL WEATHER INDICATOR (TAF/METAR) CODE TABLE 20009 0 0 4 CODE TABLE 20009 0 2 020010 CLOUD COVER (TOTAL) % 0 0 7 % 0 3 020011 CLOUD AMOUNT CODE TABLE 20011 0 0 4 CODE TABLE 20011 0 2 020012 CLOUD TYPE CODE TABLE 20012 0 0 6 CODE TABLE 20012 0 2 020013 HEIGHT OF BASE OF CLOUD M 0 -400 17 M 0 5 020017 CLOUD TOP DESCRIPTION CODE TABLE 20017 0 0 4 CODE TABLE 20017 0 2 020019 SIGNIFICANT PRESENT OR FORECAST WEATHER CCITTIA5 0 0 72 CHARACTER 0 9 020021 TYPE OF PRECIPITATION FLAG TABLE 20021 0 0 30 FLAG TABLE 20021 0 10 020031 ICE DEPOSIT (THICKNESS) M 2 0 7 M 2 3 020032 RATE OF ICE ACCRETION CODE TABLE 20032 0 0 3 CODE TABLE 20032 0 1 020033 CAUSE OF ICE ACCRETION FLAG TABLE 20033 0 0 4 FLAG TABLE 20033 0 2 020034 SEA ICE CONCENTRATION CODE TABLE 20034 0 0 5 CODE TABLE 20034 0 2 020035 AMOUNT AND TYPE OF ICE CODE TABLE 20035 0 0 4 CODE TABLE 20035 0 2 020036 ICE SITUATION CODE TABLE 20036 0 0 5 CODE TABLE 20036 0 2 020037 ICE DEVELOPMENT CODE TABLE 20037 0 0 5 CODE TABLE 20037 0 2 020038 BEARING OF ICE EDGE (SEE NOTE 3) DEGREE TRUE 0 0 12 DEGREE TRUE 0 3 020042 AIRFRAME ICING PRESENT CODE TABLE 20042 0 0 2 CODE TABLE 20042 0 1 020043 PEAK LIQUID WATER CONTENT KG/M**3 4 0 7 KG/M**3 4 2 020044 AVERAGE LIQUID WATER CONTENT KG/M**3 4 0 7 KG/M**3 4 2 020045 SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS CODE TABLE 20045 0 0 2 CODE TABLE 20045 0 2 020062 STATE OF THE GROUND (WITH OR WITHOUT SNOW) CODE TABLE 20062 0 0 5 CODE TABLE 20062 0 2 020192 [SIM] Presence of rain > 1mm BOOLEAN 0 0 1 BOOLEAN 0 1 020193 [SIM] Cloud type (METAR) CCITTIA5 0 0 16 CHARACTER 0 2 020194 [SIM] Presence of shower BOOLEAN 0 0 1 BOOLEAN 0 1 020195 [SIM] Presence of hail BOOLEAN 0 0 1 BOOLEAN 0 1 020196 [SIM] Presence of thunderstorm BOOLEAN 0 0 1 BOOLEAN 0 1 020197 [SIM] Presence of snow BOOLEAN 0 0 1 BOOLEAN 0 1 020198 [SIM] Presence of frost BOOLEAN 0 0 1 BOOLEAN 0 1 020199 [SIM] Presence of dew BOOLEAN 0 0 1 BOOLEAN 0 1 020200 [SIM] Presence of fog BOOLEAN 0 0 1 BOOLEAN 0 1 020201 [SIM] Presence of water-spout BOOLEAN 0 0 1 BOOLEAN 0 1 020202 [SIM] State of the ground with snow CODE TABLE 0 0 5 CODE TABLE 0 2 022001 DIRECTION OF WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022002 DIRECTION OF WIND WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022003 DIRECTION OF SWELL WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022004 DIRECTION OF CURRENT DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022011 PERIOD OF WAVES S 0 0 6 S 0 2 022012 PERIOD OF WIND WAVES S 0 0 6 S 0 2 022013 PERIOD OF SWELL WAVES S 0 0 6 S 0 2 022021 HEIGHT OF WAVES M 1 0 10 M 1 4 022022 HEIGHT OF WIND WAVES M 1 0 10 M 1 4 022023 HEIGHT OF SWELL WAVES M 1 0 10 M 1 4 022031 SPEED OF CURRENT M/S 2 0 13 M/S 2 4 022032 SPEED OF SEA SURFACE CURRENT M/S 2 0 13 M/S 2 4 022037 Tidal elevation with respect to national land datum M 3 -10000 15 M 3 5 022038 Tidal elevation with respect to local chart datum M 3 -10000 15 M 3 5 022043 SEA/WATER TEMPERATURE K 2 0 15 K 2 5 022049 SEA-SURFACE TEMPERATURE K 2 0 15 K 2 5 022062 SALINITY PART PER THOUSAND 2 0 14 PART PER THOUSAND 2 5 022063 TOTAL WATER DEPTH M 0 0 14 M 0 5 022066 WATER CONDUCTIVITY S M-1 6 0 26 S M-1 6 8 022070 SIGNIFICANT WAVE HEIGHT M 2 0 13 M 2 4 022071 SPECTRAL PEAK WAVE PERIOD S 1 0 9 S 1 3 022073 MAXIMUM WAVE HEIGHT M 2 0 13 M 2 4 022074 AVERAGE WAVE PERIOD S 1 0 9 S 1 3 022192 [SIM] Current X component M/S 2 0 13 M/S 2 4 022193 [SIM] Current Y component M/S 2 0 13 M/S 2 4 022194 [SIM] Concentrazione clorofilla a microg/l 2 0 17 microg/l 2 6 023192 [SIM] Dry deposition of H2SO4 MOL/M**2 5 0 20 MOL/M**3 5 6 023193 [SIM] Wet deposition of H2SO4 MOL/M**2 5 0 20 MOL/M**3 5 6 023194 [SIM] Dry deposition of NH4 MOL/M**2 5 0 20 MOL/M**3 5 6 023195 [SIM] Wet deposition of NH4 MOL/M**2 5 0 20 MOL/M**3 5 6 023196 [SIM] Dry deposition of HNO3 MOL/M**2 5 0 20 MOL/M**3 5 6 023197 [SIM] Wet deposition of HNO3 MOL/M**2 5 0 20 MOL/M**3 5 6 023198 [SIM] Solid transport by river KG/S 2 0 24 KG/S 2 8 025076 LOG-10 OF (TEMP-RAD CENTRAL WAVENUMBER) FOR ATOVS LOGM-1 8 0 30 LOGM-1 8 10 029192 [SIM] Land fraction % 1 0 10 % 1 4 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1 NUMERIC 0 1 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 31021 0 0 6 CODE TABLE 31021 0 2 031031 DATA PRESENT INDICATOR FLAG TABLE 31031 0 0 1 FLAG TABLE 31031 0 1 033002 QUALITY INFORMATION CODE TABLE 33002 0 0 2 CODE TABLE 33002 0 1 033003 QUALITY INFORMATION CODE TABLE 33003 0 0 3 CODE TABLE 33003 0 1 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 33005 0 0 30 FLAG TABLE 33005 0 10 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 33006 0 0 3 CODE TABLE 33006 0 1 033007 PER CENT CONFIDENCE % 0 0 7 % 0 3 033015 DATA QUALITY CHECK INDICATOR CODE TABLE 33015 0 0 6 CODE TABLE 33015 0 2 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 33020 0 0 3 CODE TABLE 33020 0 1 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 33021 0 0 2 CODE TABLE 33021 0 1 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 33022 0 0 2 CODE TABLE 33022 0 1 033023 QUALITY OF BUOY LOCATION CODE TABLE 33023 0 0 2 CODE TABLE 33023 0 1 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) CODE TABLE 33024 0 0 4 CODE TABLE 33024 0 2 033025 ACARS INTERPOLATED VALUES CODE TABLE 33025 0 0 3 CODE TABLE 33025 0 1 033026 MOISTURE QUALITY CODE TABLE 33026 0 0 6 CODE TABLE 33026 0 2 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) CODE TABLE 33027 0 0 3 CODE TABLE 33027 0 1 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 33030 0 0 24 FLAG TABLE 33030 0 8 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 33031 0 0 24 FLAG TABLE 33031 0 8 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 33032 0 0 24 FLAG TABLE 33032 0 8 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 33033 0 0 24 FLAG TABLE 33033 0 8 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 33035 0 0 4 CODE TABLE 33035 0 2 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 % 0 3 033037 WIND CORRELATION ERROR FLAG TABLE 33037 0 0 20 FLAG TABLE 33037 0 7 033038 QUALITY FLAGS FOR GROUND-BASED GNSS DATA FLAG TABLE 33038 0 0 10 FLAG TABLE 33038 0 4 033040 CONFIDENCE INTERVAL % 0 0 7 PERCENT 0 3 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 33041 0 0 2 CODE TABLE 33041 0 1 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 33050 0 0 4 CODE TABLE 33050 0 2 033192 [SIM] Climatological and consistency check % 0 0 7 PERCENT 0 3 033193 [SIM] Time consistency % 0 0 7 PERCENT 0 3 033194 [SIM] Space consistency % 0 0 7 PERCENT 0 3 033195 [SIM] MeteoDB variable ID NUMERIC 0 0 24 NUMERIC 0 8 033196 [SIM] Data has been invalidated CODE TABLE 33196 0 0 2 CODE TABLE 33196 0 1 033197 [SIM] Manual replacement in substitution CODE TABLE 33197 0 0 2 CODE TABLE 33197 0 1 033198 [SIM] Observation increment NUMERIC 4 -1073741823 31 NUMERIC 4 10 033201 [SIM] Kalman coefficient, state vector (s.v.) x1 NUMERIC 4 -1073741823 31 NUMERIC 4 10 033202 [SIM] Kalman coefficient, state vector (s.v.) x2 NUMERIC 4 -1073741823 31 NUMERIC 4 10 033203 [SIM] Kalman coefficient, s.v. error covariance matrix(1,1) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033204 [SIM] Kalman coefficient, s.v. error covariance matrix(1,2) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033205 [SIM] Kalman coefficient, s.v. error covariance matrix(2,1) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033206 [SIM] Kalman coefficient, s.v. error covariance matrix(2,2) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033207 [SIM] Kalman observation sequential counter NUMERIC 0 -127 8 NUMERIC 0 3 033208 [SIM] Kalman osservation missing counter NUMERIC 0 -127 8 NUMERIC 0 3 033209 [SIM] Normalized Density Index % 0 0 7 PERCENT 0 3 048001 [SIM] Graminacee_Graminacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048002 [SIM] Betulacee_Ontano nero POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048003 [SIM] Betulacee_Betulla POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048004 [SIM] Betulacee_Betulacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048005 [SIM] Composite_Ambrosia POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048006 [SIM] Composite_Artemisia POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048007 [SIM] Composite_Composite indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048008 [SIM] Corilacee_Nocciolo POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048009 [SIM] Corilacee_Carpino bianco -Carpino nero POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048010 [SIM] Corilacee_Corilacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048011 [SIM] Fagacee_Castagno POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048012 [SIM] Fagacee_Faggio POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048013 [SIM] Fagacee_Quercia POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048014 [SIM] Fagacee_Fagacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048015 [SIM] Oleacee_Olivo POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048016 [SIM] Oleacee_Frassino POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048017 [SIM] Oleacee_Oleacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048018 [SIM] Plantaginacee_Plantaginacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048019 [SIM] Urticacee_Urticacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048020 [SIM] Cupressacee - Taxacee indistinte_Cipresso comune POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048021 [SIM] Cupressacee - Taxacee indistinte_Cupressacee - Taxacee ind POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048022 [SIM] Chenopodiacee - Amarantacee Indistinte_Amaranto POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048023 [SIM] Chenopodiacee - Amarantacee Indistinte_Chenopodiacee - Ama POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048024 [SIM] Poligonacee_Poligonacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048025 [SIM] Euphorbiacee_Euforbiacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048026 [SIM] Mirtacee_Mirtacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048027 [SIM] Ulmacee_Bagolaro comune POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048028 [SIM] Ulmacee_Olmo campestre POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048029 [SIM] Ulmacee_Ulmacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048030 [SIM] Platanacee_Platanacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048031 [SIM] Aceraceae_Aceracee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048032 [SIM] Pinacee_Pinacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048033 [SIM] Salicacee_Salice comune POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048034 [SIM] Salicacee_Pioppo POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048035 [SIM] Salicacee_Salicacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048036 [SIM] Ciperacee_Ciperacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048037 [SIM] Juglandacee_Juglandacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048038 [SIM] Ippocastanacee_Ippocastanacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048039 [SIM] Spore fungine_Alternaria POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048040 [SIM] Spore fungine_Botrytis POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048041 [SIM] Spore fungine_Stemphylium POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048042 [SIM] Spore fungine_Cladosporium POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048043 [SIM] Spore fungine_Epicoccum POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048044 [SIM] Altri Pollini / Non Identificati_Altri pollini identificat POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048045 [SIM] Altri Pollini / Non Identificati_Pollini non identificati POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048046 [SIM] Altre Spore / Non identificati_Altre spore fungine POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048047 [SIM] Altre Spore / Non identificati_Spore fungine non identific POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048048 [SIM] Graminacee_Graminacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048049 [SIM] Plantaginacee_Plantaginacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048050 [SIM] Urticacee_Urticacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048051 [SIM] Poligonacee_Poligonacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048052 [SIM] Euphorbiacee_Euforbiacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048053 [SIM] Mirtacee_Mirtacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048054 [SIM] Platanacee_Platanacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048055 [SIM] Aceraceae_Aceracee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048056 [SIM] Pinacee_Pinacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048057 [SIM] Ciperacee_Ciperacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048058 [SIM] Juglandacee_Juglandacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048059 [SIM] Ippocastanacee_Ippocastanacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048060 [SIM] Oleacee_Ligustro POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048128 [SIM] Conta Graminacee_Graminacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048129 [SIM] Conta Betulacee_Ontano nero NUMERIC 0 0 20 NUMERIC 0 7 048130 [SIM] Conta Betulacee_Betulla NUMERIC 0 0 20 NUMERIC 0 7 048131 [SIM] Conta Betulacee_Betulacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048132 [SIM] Conta Composite_Ambrosia NUMERIC 0 0 20 NUMERIC 0 7 048133 [SIM] Conta Composite_Artemisia NUMERIC 0 0 20 NUMERIC 0 7 048134 [SIM] Conta Composite_Composite indistinte NUMERIC 0 0 20 NUMERIC 0 7 048135 [SIM] Conta Corilacee_Nocciolo NUMERIC 0 0 20 NUMERIC 0 7 048136 [SIM] Conta Corilacee_Carpino bianco -Carpino nero NUMERIC 0 0 20 NUMERIC 0 7 048137 [SIM] Conta Corilacee_Corilacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048138 [SIM] Conta Fagacee_Castagno NUMERIC 0 0 20 NUMERIC 0 7 048139 [SIM] Conta Fagacee_Faggio NUMERIC 0 0 20 NUMERIC 0 7 048140 [SIM] Conta Fagacee_Quercia NUMERIC 0 0 20 NUMERIC 0 7 048141 [SIM] Conta Fagacee_Fagacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048142 [SIM] Conta Oleacee_Olivo NUMERIC 0 0 20 NUMERIC 0 7 048143 [SIM] Conta Oleacee_Frassino NUMERIC 0 0 20 NUMERIC 0 7 048144 [SIM] Conta Oleacee_Oleacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048145 [SIM] Conta Plantaginacee_Plantaginacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048146 [SIM] Conta Urticacee_Urticacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048147 [SIM] Conta Cupressacee - Taxacee indistinte_Cipresso comune NUMERIC 0 0 20 NUMERIC 0 7 048148 [SIM] Conta Cupressacee - Taxacee indistinte_Cupressacee - Taxac NUMERIC 0 0 20 NUMERIC 0 7 048149 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Amaranto NUMERIC 0 0 20 NUMERIC 0 7 048150 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Chenopodiacee NUMERIC 0 0 20 NUMERIC 0 7 048151 [SIM] Conta Poligonacee_Poligonacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048152 [SIM] Conta Euphorbiacee_Euforbiacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048153 [SIM] Conta Mirtacee_Mirtacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048154 [SIM] Conta Ulmacee_Bagolaro comune NUMERIC 0 0 20 NUMERIC 0 7 048155 [SIM] Conta Ulmacee_Olmo campestre NUMERIC 0 0 20 NUMERIC 0 7 048156 [SIM] Conta Ulmacee_Ulmacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048157 [SIM] Conta Platanacee_Platanacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048158 [SIM] Conta Aceraceae_Aceracee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048159 [SIM] Conta Pinacee_Pinacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048160 [SIM] Conta Salicacee_Salice comune NUMERIC 0 0 20 NUMERIC 0 7 048161 [SIM] Conta Salicacee_Pioppo NUMERIC 0 0 20 NUMERIC 0 7 048162 [SIM] Conta Salicacee_Salicacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048163 [SIM] Conta Ciperacee_Ciperacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048164 [SIM] Conta Juglandacee_Juglandacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048165 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048166 [SIM] Conta Spore fungine_Alternaria NUMERIC 0 0 20 NUMERIC 0 7 048167 [SIM] Conta Spore fungine_Botrytis NUMERIC 0 0 20 NUMERIC 0 7 048168 [SIM] Conta Spore fungine_Stemphylium NUMERIC 0 0 20 NUMERIC 0 7 048169 [SIM] Conta Spore fungine_Cladosporium NUMERIC 0 0 20 NUMERIC 0 7 048170 [SIM] Conta Spore fungine_Epicoccum NUMERIC 0 0 20 NUMERIC 0 7 048171 [SIM] Conta Altri Pollini / Non Identificati_Altri pollini ident NUMERIC 0 0 20 NUMERIC 0 7 048172 [SIM] Conta Altri Pollini / Non Identificati_Pollini non identif NUMERIC 0 0 20 NUMERIC 0 7 048173 [SIM] Conta Altre Spore / Non identificati_Altre spore fungine NUMERIC 0 0 20 NUMERIC 0 7 048174 [SIM] Conta Altre Spore / Non identificati_Spore fungine non ide NUMERIC 0 0 20 NUMERIC 0 7 048175 [SIM] Conta Graminacee_Graminacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048176 [SIM] Conta Plantaginacee_Plantaginacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048177 [SIM] Conta Urticacee_Urticacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048178 [SIM] Conta Poligonacee_Poligonacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048179 [SIM] Conta Euphorbiacee_Euforbiacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048180 [SIM] Conta Mirtacee_Mirtacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048181 [SIM] Conta Platanacee_Platanacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048182 [SIM] Conta Aceraceae_Aceracee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048183 [SIM] Conta Pinacee_Pinacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048184 [SIM] Conta Ciperacee_Ciperacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048185 [SIM] Conta Juglandacee_Juglandacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048186 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048187 [SIM] Conta Oleacee_Ligustro NUMERIC 0 0 20 NUMERIC 0 7 dballe-7.21/tables/B990204.txt0000644000175000017500000023766413022503466012516 00000000000000 001001 WMO BLOCK NUMBER NUMERIC 0 0 7 NUMERIC 0 2 001002 WMO STATION NUMBER NUMERIC 0 0 10 NUMERIC 0 3 001006 AIRCRAFT FLIGHT NUMBER CCITTIA5 0 0 64 CHARACTER 0 8 001007 SATELLITE IDENTIFIER CODE TABLE 1007 0 0 10 CODE TABLE 1007 0 3 001008 AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION CCITTIA5 0 0 64 CHARACTER 0 8 001011 SHIP OR MOBILE LAND STATION IDENTIFIER CCITTIA5 0 0 72 CHARACTER 0 9 001012 DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM** DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 001013 SPEED OF MOTION OF MOVING OBSERVING PLATFORM* M/S 0 0 10 M/S 0 3 001019 LONG STATION OR SITE NAME CCITTIA5 0 0 256 CHARACTER 0 32 001023 OBSERVATION SEQUENCE NUMBER NUMERIC 0 0 9 NUMERIC 0 3 001033 IDENTIFICATION OF ORIGINATING/GENERATING CENTRE CODE TABLE 001033 0 0 8 CODE TABLE 001033 0 3 001034 IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE CODE TABLE 001034 0 0 8 CODE TABLE 001034 0 3 001063 ICAO LOCATION INDICATOR CCITTIA5 0 0 64 CHARACTER 0 8 001192 [SIM] MeteoDB station ID NUMERIC 0 0 24 NUMERIC 0 8 001193 [SIM] Report code NUMERIC 0 0 16 NUMERIC 0 5 001194 [SIM] Report mnemonic CCITTIA5 0 0 128 CHARACTER 0 16 001212 AIR QUALITY OBSERVING STATION LOCAL CODE CCITTIA5 0 0 56 CHARACTER 0 7 001213 AIRBASE AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 56 CHARACTER 0 7 001214 GEMS AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 48 CHARACTER 0 6 001215 AIR QUALITY OBSERVING STATION DOMINANT EMISSION SOURCE CODE TABLE 001215 0 0 3 CODE TABLE 001215 0 1 001216 AIR QUALITY OBSERVING STATION AREA TYPE CODE TABLE 001216 0 0 3 CODE TABLE 001216 0 1 001217 AIR QUALITY OBSERVING STATION TERRAIN TYPE CODE TABLE 001217 0 0 4 CODE TABLE 001217 0 2 002001 TYPE OF STATION CODE TABLE 2001 0 0 2 CODE TABLE 2001 0 1 002002 TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT FLAG TABLE 2002 0 0 4 FLAG TABLE 2002 0 2 002003 TYPE OF MEASURING EQUIPMENT USED CODE TABLE 2003 0 0 4 CODE TABLE 2003 0 2 002004 TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C CODE TABLE 2004 0 0 4 CODE TABLE 2004 0 2 002005 PRECISION OF TEMPERATURE OBSERVATION K 2 0 7 K 2 3 002011 RADIOSONDE TYPE CODE TABLE 2011 0 0 8 CODE TABLE 2011 0 3 002012 RADIOSONDE COMPUTATIONAL METHOD CODE TABLE 2012 0 0 4 CODE TABLE 2012 0 2 002013 SOLAR AND INFRARED RADIATION CORRECTION CODE TABLE 2013 0 0 4 CODE TABLE 2013 0 2 002014 TRACKING TECHNIQUE/STATUS OF SYSTEM USED CODE TABLE 2014 0 0 7 CODE TABLE 2014 0 3 002038 METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT CODE TABLE 2038 0 0 4 CODE TABLE 2038 0 2 002039 METHOD OF WET-BULB TEMPERATURE MEASUREMENT CODE TABLE 2039 0 0 3 CODE TABLE 2039 0 1 002048 SATELLITE SENSOR INDICATOR CODE TABLE 2048 0 0 4 CODE TABLE 2048 0 2 002061 AIRCRAFT NAVIGATIONAL SYSTEM CODE TABLE 2061 0 0 3 CODE TABLE 2061 0 1 002062 TYPE OF AIRCRAFT DATA RELAY SYSTEM CODE TABLE 2062 0 0 4 CODE TABLE 2062 0 2 002063 AIRCRAFT ROLL ANGLE DEGREE 2 -18000 16 DEGREE 2 5 002064 AIRCRAFT ROLL ANGLE QUALITY CODE TABLE 2064 0 0 2 CODE TABLE 2064 0 1 002070 ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE CODE TABLE 2070 0 0 4 CODE TABLE 2070 0 2 002121 MEAN FREQUENCY Hz -8 0 7 Hz -8 3 002125 PULSE REPETITION FREQUENCY Hz -1 0 8 Hz -1 3 004001 YEAR YEAR 0 0 12 YEAR 0 4 004002 MONTH MONTH 0 0 4 MONTH 0 2 004003 DAY DAY 0 0 6 DAY 0 2 004004 HOUR HOUR 0 0 5 HOUR 0 2 004005 MINUTE MINUTE 0 0 6 MINUTE 0 2 004006 SECOND SECOND 0 0 6 SECOND 0 2 004086 LONG TIME PERIOD OR DISPLACEMENT SECOND 0 -8192 15 SECOND 0 5 004192 [SIM] Time range type NUMERIC 0 0 10 NUMERIC 0 4 004193 [SIM] Time range P1 NUMERIC 0 -536870912 31 NUMERIC 0 10 004194 [SIM] Time range P2 NUMERIC 0 -536870912 31 NUMERIC 0 10 004195 [SIM] Temperature event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 004196 [SIM] Relative humidity event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 004197 [SIM] Wind velocity event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 004198 [SIM] Pressure event - time of occurrence MINUTE 0 0 11 MINUTE 0 4 005001 LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 005015 LATITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 005021 BEARING OR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005022 SOLAR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005040 ORBIT NUMBER NUMERIC 0 0 24 NUMERIC 0 8 005041 SCAN LINE NUMBER NUMERIC 0 0 8 NUMERIC 0 3 005043 FIELD OF VIEW NUMBER NUMERIC 0 0 8 NUMERIC 0 3 006001 LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 006015 LONGITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 007002 HEIGHT OR ALTITUDE M -1 -40 16 M -1 5 007004 PRESSURE PA -1 0 14 PA -1 5 007007 HEIGHT M 0 -1000 17 M 0 6 007010 FLIGHT LEVEL M 0 -1024 16 FT -1 5 007024 SATELLITE ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007025 SOLAR ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007030 HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3) M 1 -4000 17 M 1 5 007031 HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4) M 1 - 4000 17 M 1 5 007032 HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) M 2 0 16 M 2 5 007192 [SIM] First level type NUMERIC 0 0 10 NUMERIC 0 4 007193 [SIM] Level L1 NUMERIC 0 -536870912 31 NUMERIC 0 10 007194 [SIM] Level L2 NUMERIC 0 -536870912 31 NUMERIC 0 10 007195 [SIM] Second level type NUMERIC 0 0 31 NUMERIC 0 4 008002 VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS) CODE TABLE 8002 0 0 6 CODE TABLE 8002 0 2 008004 PHASE OF AIRCRAFT FLIGHT CODE TABLE 8004 0 0 3 CODE TABLE 8004 0 1 008009 DETAILED PHASE OF FLIGHT CODE TABLE 8009 0 0 4 CODE TABLE 8009 0 2 008021 TIME SIGNIFICANCE CODE TABLE 8021 0 0 5 CODE TABLE 8021 0 2 008042 EXTENDED VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8042 0 0 18 FLAG TABLE 8042 0 6 008044 (VAL) CAS REGISTRY NUMBER CCITTIA5 0 0 88 CHARACTER 0 11 008192 [SIM] Number of wind velocity mean values present NUMERIC 0 0 5 NUMERIC 0 2 008193 [SIM] Number of wind velocity minimum values present NUMERIC 0 0 5 NUMERIC 0 2 008194 [SIM] Number of wind velocity maximum values present NUMERIC 0 0 5 NUMERIC 0 2 008195 [SIM] Number of wind prevalent direction values present NUMERIC 0 0 5 NUMERIC 0 2 008196 [SIM] Number of mean temperature values present NUMERIC 0 0 5 NUMERIC 0 2 008197 [SIM] Number of minimum temperature values present NUMERIC 0 0 5 NUMERIC 0 2 008198 [SIM] Number of maximum temperature values present NUMERIC 0 0 5 NUMERIC 0 2 008199 [SIM] Number of mean relative humidity values present NUMERIC 0 0 5 NUMERIC 0 2 008200 [SIM] Number of minimum relative humidity values present NUMERIC 0 0 5 NUMERIC 0 2 008201 [SIM] Number of maximum relative humidity values present NUMERIC 0 0 5 NUMERIC 0 2 008202 [SIM] Number of mean pressure values present NUMERIC 0 0 5 NUMERIC 0 2 008203 [SIM] Number of minimum pressure values present NUMERIC 0 0 5 NUMERIC 0 2 008204 [SIM] Number of maximum pressure values present NUMERIC 0 0 5 NUMERIC 0 2 008205 [SIM] Number of precipitation values present NUMERIC 0 0 5 NUMERIC 0 2 008206 [SIM] Number of leaf wetness values present NUMERIC 0 0 5 NUMERIC 0 2 008207 [SIM] Number of scalar wind velocity mean values present NUMERIC 0 0 5 NUMERIC 0 2 008208 [SIM] Number of cloud cover mean values present NUMERIC 0 0 5 NUMERIC 0 2 008209 [SIM] Number of cloud cover maximum values present NUMERIC 0 0 5 NUMERIC 0 2 008210 [SIM] Number of cloud cover minimum values present NUMERIC 0 0 5 NUMERIC 0 2 010004 PRESSURE PA -1 0 14 PA -1 5 010007 HEIGHT M 0 -1000 17 M 0 6 010008 GEOPOTENTIAL M**2/S**2 0 -10000 20 M**2/S**2 0 7 010009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 GPM 0 5 010051 PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5 010052 ALTIMETER SETTING (QNH) PA -1 0 14 PA -1 5 010060 PRESSURE CHANGE PA -1 -1024 11 PA -1 4 010063 CHARACTERISTIC OF PRESSURE TENDENCY CODE TABLE 10063 0 0 4 CODE TABLE 10063 0 2 010197 ANEMOMETER HEIGHT M 0 0 9 M 0 3 011001 WIND DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011002 WIND SPEED M/S 1 0 12 M/S 1 4 011003 U-COMPONENT M/S 1 -4096 13 M/S 1 4 011004 V-COMPONENT M/S 1 -4096 13 M/S 1 4 011005 W-COMPONENT PA/S 1 -512 10 PA/S 1 4 011006 W-COMPONENT M/S 2 -4096 13 M/S 2 4 011016 EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011017 EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011031 DEGREE OF TURBULENCE CODE TABLE 11031 0 0 4 CODE TABLE 11031 0 2 011036 MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED M/S 1 0 10 M/S 1 4 011037 TURBULENCE INDEX CODE TABLE 11037 0 0 6 CODE TABLE 11037 0 2 011039 EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE CODE TABLE 11039 0 0 6 CODE TABLE 11039 0 2 011041 MAXIMUM WIND GUST SPEED M/S 1 0 12 M/S 1 4 011043 MAXIMUM WIND GUST DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011050 STANDARD DEVIATION OF HORIZONTAL WIND SPEED M/S 1 0 12 M/S 1 4 011061 ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW M/S 1 0 12 M/S 1 4 011062 ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE M/S 1 0 12 M/S 1 4 011075 MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 M**(2/3)/S 2 3 011076 PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 M**(2/3)/S 2 3 011077 REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE S 0 0 12 S 0 4 011192 [SIM] W-component terrain following M/S 2 -4096 13 M/S 2 4 011193 [SIM] Stability class NUMERIC 0 0 4 NUMERIC 0 2 011194 [SIM] Friction velocity (calmet) M/S 3 0 14 M/S 3 4 011195 [SIM] Mixing height (calmet) M 0 0 12 M 0 4 011196 [SIM] Obukov lenght (calmet) M 1 -100000 15 M 1 5 011197 [SIM] Convective velocitiy scale (calmet) M/S 3 0 14 M/S 3 4 011198 [SIM] SQRT(2*TKE) M/S 4 0 20 M/S 4 6 011199 [SIM] Surface Roughness M 3 0 14 M 1 4 011200 [SIM] U-component of momentum flux N/M**2 4 -524288 20 N/M**2 4 6 011201 [SIM] V-component of momentum flux N/M**2 4 -524288 20 N/M**2 4 6 011202 [SIM] Friction velocity (diagmet) M/S 3 0 14 M/S 3 4 011203 [SIM] Mixing height (diagmet) M 0 0 12 M 0 4 011204 [SIM] Obukov lenght (diagmet) M 1 -100000 15 M 1 5 011205 [SIM] Convective velocitiy scale (diagmet) M/S 3 0 14 M/S 3 4 011206 [SIM] Friction velocity (COSMO) M/S 3 0 14 M/S 3 4 011207 [SIM] Obukov lenght (COSMO) M 1 -100000 15 M 1 5 011208 [SIM] Distance covered by the hourly mean wind M 0 0 23 M 0 7 012001 TEMPERATURE/AIR TEMPERATURE K 1 0 12 C 1 3 012003 DEW-POINT TEMPERATURE K 1 0 12 C 1 3 012030 SOIL TEMPERATURE K 1 0 12 C 1 3 012049 Temperature change over specified period K 0 -30 6 C 0 2 012061 SKIN TEMPERATURE K 1 0 12 K 1 4 012063 BRIGHTNESS TEMPERATURE K 1 0 12 K 1 4 012101 TEMPERATURE/DRY-BULB TEMPERATURE K 2 0 16 K 2 5 012102 WET-BULB TEMPERATURE K 2 0 16 C 2 4 012103 DEW-POINT TEMPERATURE K 2 0 16 K 2 5 012121 GROUND MINIMUM TEMPERATURE K 2 0 16 C 2 4 012131 SNOW TEMPERATURE K 2 0 16 C 2 4 012192 POTENTIAL TEMPERATURE K 2 0 16 K 2 5 012193 PSEUDO-EQUIVALENT POTENTIAL TEMPERATURE K 2 0 16 K 2 5 012194 [SIM] Air density KG/M**3 6 0 20 KG/M**3 6 6 013001 SPECIFIC HUMIDITY KG/KG 5 0 14 KG/KG 5 5 013002 MIXING RATIO KG/KG 5 0 14 KG/KG 5 5 013003 RELATIVE HUMIDITY % 0 0 7 % 0 3 013011 TOTAL PRECIPITATION / TOTAL WATER EQUIVALENT KG/M**2 1 -1 14 KG/M**2 1 5 013012 DEPTH OF FRESH SNOW M 2 -2 12 M 2 4 013013 TOTAL SNOW DEPTH M 3 -20 20 M 3 6 013031 EVAPOTRANSPIRATION KG/M**2 1 0 7 KG/M**2 0 3 013033 EVAPORATION/EVAPOTRANSPIRATION KG/M**2 1 0 10 KG/M**2 1 4 013080 WATER PH pH 1 0 10 pH 1 3 013081 WATER CONDUCTIVITY S/M 3 0 14 S/M 3 4 013082 WATER TEMPERATURE K 1 0 12 K 1 4 013083 DISSOLVED OXYGEN KG/M**3 6 0 15 KG/M**3 6 5 013192 [SIM] Cloud liquid water content KG/KG 8 0 27 KG/KG 8 8 013193 [SIM] Cloud ice content KG/KG 8 0 27 KG/KG 8 8 013194 [SIM] Water table depth M 3 0 18 M 3 6 013195 [SIM] Precipitating liquid water KG/KG 8 0 27 KG/KG 8 8 013196 [SIM] Precipitating ice KG/KG 8 0 27 KG/KG 8 8 013197 [SIM] Total precipitating water+ice KG/KG 8 0 27 KG/KG 8 8 013198 [SIM] Total liquid water (cloud+precipitating) KG/KG 8 0 27 KG/KG 8 8 013199 [SIM] Total ice (cloud+precipitating) KG/KG 8 0 27 KG/KG 8 8 013200 [SIM] Grid-scale liquid precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013201 [SIM] Grid-scale snowfall KG/M**2 1 -1 14 KG/M**2 1 5 013202 [SIM] Convective liquid precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013203 [SIM] Convective snowfall KG/M**2 1 -1 14 KG/M**2 1 5 013204 [SIM] Total convective precipitation (liquid + snow) KG/M**2 1 -1 14 KG/M**2 1 5 013205 [SIM] Snowfall (grid-scale + convective) KG/M**2 1 -1 14 KG/M**2 1 5 013206 [SIM] Soil water content KG/M**2 1 0 14 KG/M**2 1 5 013210 [SIM] Penetration of the probe in the snow M 2 0 9 M 2 3 013212 [SIM] Leaf wetness duration S -1 0 24 S -1 7 013215 [SIM] River level M 2 -100000 18 M 2 6 013216 [SIM] Hourly precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013217 [SIM] 5 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013218 [SIM] 10 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013219 [SIM] 15 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013220 [SIM] 20 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013221 [SIM] 30 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013222 [SIM] 180 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013223 [SIM] 360 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013224 [SIM] 720 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013225 [SIM] 1440 minutes precipitation KG/M**2 1 -1 14 KG/M**2 1 5 013226 [SIM] River discharge M**3/S 2 0 21 M**3/S 2 7 013227 [SIM] Soil volumetric water content % 1 0 10 % 1 4 013228 [SIM] Piezometric level M 3 0 18 M 3 6 013229 [SIM] Density of snow KG/M**3 1 0 14 KG/M**3 1 5 013230 [SIM] Convective Available Potential Energy (CAPE) J/KG 1 0 17 J/KG 1 5 013231 [SIM] Ossigeno disciolto sat % 1 0 10 % 1 4 014002 Long-wave radiation, integrated over period specified J M-2 -3 -65536 17 J M-2 -3 5 014004 Short-wave radiation, integrated over period specified J M-2 -3 -65536 17 J M-2 -3 5 014016 NET RADIATION J/M**2 -4 -16384 15 J/M**2 -4 5 014017 INSTANTANEOUS LONG-WAVE RADIATION (incoming) W/M**2 0 -2048 12 W/M**2 0 4 014018 INSTANTANEOUS SHORT-WAVE RADIATION (incoming) W/M**2 0 -2048 12 W/M**2 -3 4 014019 SURFACE ALBEDO % 0 0 7 % 0 3 014021 GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 J/M**2 -4 5 014028 Global solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 J M-2 -2 6 014029 Diffuse solar radiation (high accuracy), integrated over period J M-2 -2 0 20 J M-2 -2 6 014030 Direct solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 J M-2 -2 6 014031 TOTAL SUNSHINE MINUTE 0 0 11 MINUTE 0 4 014192 [SIM] Instantenous sensible heat flux W/m**2 0 -1024 11 W/M**2 0 4 014193 [SIM] Instantenous latent heat flux W/m**2 0 -1024 11 W/M**2 0 4 014194 [SIM] Instantenous direct solar radiation W/M**2 0 -2048 12 W/M**2 -3 4 014195 [SIM] Instantenous diffuse solar radiation W/M**2 0 -2048 12 W/M**2 -3 4 014196 [SIM] INSTANTANEOUS NET LONG-WAVE RADIATION W/M**2 0 -2048 12 W/M**2 0 4 014197 [SIM] INSTANTANEOUS NET SHORT-WAVE RADIATION W/M**2 0 -2048 12 W/M**2 -3 4 014198 [SIM] Visible radiation (downward) W/M**2 3 -50000 21 W/M**2 3 7 014199 [SIM] Visible radiation (upward) W/M**2 3 -50000 21 W/M**2 3 7 014200 [SIM] Infrared radiation (downward) W/M**2 3 0 20 W/M**2 3 7 014201 [SIM] Infrared radiation (upward) W/M**2 3 0 20 W/M**2 3 7 015192 [SIM] NO Concentration KG/M**3 10 0 20 KG/M**3 10 6 015193 [SIM] NO2 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015194 [SIM] O3 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015195 [SIM] PM10 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015196 [SIM] CO Concentration KG/M**3 10 0 20 KG/M**3 10 6 015197 [SIM] SO2 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015198 [SIM] PM2.5 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015199 [SIM] NOY Concentration KG/M**3 10 0 20 KG/M**3 10 6 015200 [SIM] HCNM Concentration KG/M**3 10 0 20 KG/M**3 10 6 015201 [SIM] ALDE Concentration KG/M**3 10 0 20 KG/M**3 10 6 015202 [SIM] PM5 Concentration (tot. aerosol < 5 ug) KG/M**3 10 0 20 KG/M**3 10 6 015203 [SIM] PM1 Concentration (tot. aerosol < 1.25 ug) KG/M**3 10 0 20 KG/M**3 10 6 015204 [SIM] PM06 Concentration (tot. aerosol < 0.6 ug) KG/M**3 10 0 20 KG/M**3 10 6 015205 [SIM] PM03 Concentration (tot. aerosol < 0.3 ug) KG/M**3 10 0 20 KG/M**3 10 6 015206 [SIM] PM015 Concentration (tot. aerosol < 0.15 ug) KG/M**3 10 0 20 KG/M**3 10 6 015207 [SIM] PM008 Concentration (tot. aerosol < 0.08 ug) KG/M**3 10 0 20 KG/M**3 10 6 015208 [SIM] Concentration of primary particulate matter in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015209 [SIM] Concentration of sulfate in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015210 [SIM] Concentration of nitrate in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015211 [SIM] Concentration of ammonium in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015212 [SIM] Concentration of black carbon in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015213 [SIM] Concentration of organic carbon in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015214 [SIM] Concentration of dust in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015215 [SIM] Concentration of anthrop. A1D in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015216 [SIM] Concentration of anthrop. BmP in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015217 [SIM] Concentration of biogenic A1D in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015218 [SIM] Concentration of biogenic BmP in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015219 [SIM] Concentration of water in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015220 [SIM] Concentration of sea salt in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015221 [SIM] Concentration of secondary organic aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015222 [SIM] Total concentration of primary aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015223 [SIM] Total concentration of secondary aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015224 [SIM] Uncertainity in O3 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015225 [SIM] Uncertainity in PM10 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015226 [SIM] Uncertainity in NO2 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015227 [SIM] Uncertainity in PM2.5 estimate (Pesco) KG/M**3 10 0 20 KG/M**3 10 6 015228 [SIM] NH3 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015229 [SIM] Concentration of primary part. matter in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015230 [SIM] Concentration of sulfate in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015231 [SIM] Concentration of nitrate in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015232 [SIM] Concentration of ammonium in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015233 [SIM] Concentration of anthrop. sec. org. in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015234 [SIM] Concentration of biogenic sec. org. in aerosol KG/M**3 10 0 20 KG/M**3 10 6 015235 [SIM] Concentration of ISOPA1 in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015236 [SIM] C6H6 Concentration KG/M**3 10 0 20 KG/M**3 10 6 015237 [SIM] Concentration of anthropogenic aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015238 [SIM] Concentration of biogenic aerosol in PM10 KG/M**3 10 0 20 KG/M**3 10 6 015239 [SIM] Concentration of anthropogenic aerosol in PM2.5 KG/M**3 10 0 20 KG/M**3 10 6 015240 [SIM] Concentration of biogenic aerosol in PM2.5 KG/M**3 10 0 20 KG/M**3 10 6 015241 [SIM] Aerosol Optical Thickness NUMERIC 4 0 15 NUMERIC 4 5 020001 HORIZONTAL VISIBILITY M -1 0 13 M -1 4 020003 PRESENT WEATHER (SEE NOTE 1) CODE TABLE 20003 0 0 9 CODE TABLE 20003 0 3 020004 PAST WEATHER (1) (SEE NOTE 2) CODE TABLE 20004 0 0 5 CODE TABLE 20004 0 2 020005 PAST WEATHER (2) (SEE NOTE 2) CODE TABLE 20005 0 0 5 CODE TABLE 20005 0 2 020009 GENERAL WEATHER INDICATOR (TAF/METAR) CODE TABLE 20009 0 0 4 CODE TABLE 20009 0 2 020010 CLOUD COVER (TOTAL) % 0 0 7 % 0 3 020011 CLOUD AMOUNT CODE TABLE 20011 0 0 4 CODE TABLE 20011 0 2 020012 CLOUD TYPE CODE TABLE 20012 0 0 6 CODE TABLE 20012 0 2 020013 HEIGHT OF BASE OF CLOUD M 0 -400 17 M 0 5 020017 CLOUD TOP DESCRIPTION CODE TABLE 20017 0 0 4 CODE TABLE 20017 0 2 020019 SIGNIFICANT PRESENT OR FORECAST WEATHER CCITTIA5 0 0 72 CHARACTER 0 9 020021 TYPE OF PRECIPITATION FLAG TABLE 20021 0 0 30 FLAG TABLE 20021 0 10 020031 ICE DEPOSIT (THICKNESS) M 2 0 7 M 2 3 020032 RATE OF ICE ACCRETION CODE TABLE 20032 0 0 3 CODE TABLE 20032 0 1 020033 CAUSE OF ICE ACCRETION FLAG TABLE 20033 0 0 4 FLAG TABLE 20033 0 2 020034 SEA ICE CONCENTRATION CODE TABLE 20034 0 0 5 CODE TABLE 20034 0 2 020035 AMOUNT AND TYPE OF ICE CODE TABLE 20035 0 0 4 CODE TABLE 20035 0 2 020036 ICE SITUATION CODE TABLE 20036 0 0 5 CODE TABLE 20036 0 2 020037 ICE DEVELOPMENT CODE TABLE 20037 0 0 5 CODE TABLE 20037 0 2 020038 BEARING OF ICE EDGE (SEE NOTE 3) DEGREE TRUE 0 0 12 DEGREE TRUE 0 3 020042 AIRFRAME ICING PRESENT CODE TABLE 20042 0 0 2 CODE TABLE 20042 0 1 020043 PEAK LIQUID WATER CONTENT KG/M**3 4 0 7 KG/M**3 4 2 020044 AVERAGE LIQUID WATER CONTENT KG/M**3 4 0 7 KG/M**3 4 2 020045 SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS CODE TABLE 20045 0 0 2 CODE TABLE 20045 0 2 020062 STATE OF THE GROUND (WITH OR WITHOUT SNOW) CODE TABLE 20062 0 0 5 CODE TABLE 20062 0 2 020192 [SIM] Presence of rain > 1mm BOOLEAN 0 0 1 BOOLEAN 0 1 020193 [SIM] Cloud type (METAR) CCITTIA5 0 0 16 CHARACTER 0 2 020194 [SIM] Presence of shower BOOLEAN 0 0 1 BOOLEAN 0 1 020195 [SIM] Presence of hail BOOLEAN 0 0 1 BOOLEAN 0 1 020196 [SIM] Presence of thunderstorm BOOLEAN 0 0 1 BOOLEAN 0 1 020197 [SIM] Presence of snow BOOLEAN 0 0 1 BOOLEAN 0 1 020198 [SIM] Presence of frost BOOLEAN 0 0 1 BOOLEAN 0 1 020199 [SIM] Presence of dew BOOLEAN 0 0 1 BOOLEAN 0 1 020200 [SIM] Presence of fog BOOLEAN 0 0 1 BOOLEAN 0 1 020201 [SIM] Presence of water-spout BOOLEAN 0 0 1 BOOLEAN 0 1 020202 [SIM] State of the ground with snow CODE TABLE 0 0 5 CODE TABLE 0 2 022001 DIRECTION OF WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022002 DIRECTION OF WIND WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022003 DIRECTION OF SWELL WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022004 DIRECTION OF CURRENT DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022011 PERIOD OF WAVES S 0 0 6 S 0 2 022012 PERIOD OF WIND WAVES S 0 0 6 S 0 2 022013 PERIOD OF SWELL WAVES S 0 0 6 S 0 2 022021 HEIGHT OF WAVES M 1 0 10 M 1 4 022022 HEIGHT OF WIND WAVES M 1 0 10 M 1 4 022023 HEIGHT OF SWELL WAVES M 1 0 10 M 1 4 022031 SPEED OF CURRENT M/S 2 0 13 M/S 2 4 022032 SPEED OF SEA SURFACE CURRENT M/S 2 0 13 M/S 2 4 022037 Tidal elevation with respect to national land datum M 3 -10000 15 M 3 5 022038 Tidal elevation with respect to local chart datum M 3 -10000 15 M 3 5 022043 SEA/WATER TEMPERATURE K 2 0 15 K 2 5 022049 SEA-SURFACE TEMPERATURE K 2 0 15 K 2 5 022062 SALINITY PART PER THOUSAND 2 0 14 PART PER THOUSAND 2 5 022063 TOTAL WATER DEPTH M 0 0 14 M 0 5 022066 WATER CONDUCTIVITY S M-1 6 0 26 S M-1 6 8 022070 SIGNIFICANT WAVE HEIGHT M 2 0 13 M 2 4 022071 SPECTRAL PEAK WAVE PERIOD S 1 0 9 S 1 3 022073 MAXIMUM WAVE HEIGHT M 2 0 13 M 2 4 022074 AVERAGE WAVE PERIOD S 1 0 9 S 1 3 022192 [SIM] Current X component M/S 2 0 13 M/S 2 4 022193 [SIM] Current Y component M/S 2 0 13 M/S 2 4 022194 [SIM] Concentrazione clorofilla a microg/l 2 0 17 microg/l 2 6 023192 [SIM] Dry deposition of H2SO4 MOL/M**2 5 0 20 MOL/M**3 5 6 023193 [SIM] Wet deposition of H2SO4 MOL/M**2 5 0 20 MOL/M**3 5 6 023194 [SIM] Dry deposition of NH4 MOL/M**2 5 0 20 MOL/M**3 5 6 023195 [SIM] Wet deposition of NH4 MOL/M**2 5 0 20 MOL/M**3 5 6 023196 [SIM] Dry deposition of HNO3 MOL/M**2 5 0 20 MOL/M**3 5 6 023197 [SIM] Wet deposition of HNO3 MOL/M**2 5 0 20 MOL/M**3 5 6 023198 [SIM] Solid transport by river KG/S 2 0 24 KG/S 2 8 025076 LOG-10 OF (TEMP-RAD CENTRAL WAVENUMBER) FOR ATOVS LOGM-1 8 0 30 LOGM-1 8 10 029192 [SIM] Land fraction % 1 0 10 % 1 4 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1 NUMERIC 0 1 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 31021 0 0 6 CODE TABLE 31021 0 2 031031 DATA PRESENT INDICATOR FLAG TABLE 31031 0 0 1 FLAG TABLE 31031 0 1 033002 QUALITY INFORMATION CODE TABLE 33002 0 0 2 CODE TABLE 33002 0 1 033003 QUALITY INFORMATION CODE TABLE 33003 0 0 3 CODE TABLE 33003 0 1 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 33005 0 0 30 FLAG TABLE 33005 0 10 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 33006 0 0 3 CODE TABLE 33006 0 1 033007 PER CENT CONFIDENCE % 0 0 7 % 0 3 033015 DATA QUALITY CHECK INDICATOR CODE TABLE 33015 0 0 6 CODE TABLE 33015 0 2 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 33020 0 0 3 CODE TABLE 33020 0 1 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 33021 0 0 2 CODE TABLE 33021 0 1 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 33022 0 0 2 CODE TABLE 33022 0 1 033023 QUALITY OF BUOY LOCATION CODE TABLE 33023 0 0 2 CODE TABLE 33023 0 1 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) CODE TABLE 33024 0 0 4 CODE TABLE 33024 0 2 033025 ACARS INTERPOLATED VALUES CODE TABLE 33025 0 0 3 CODE TABLE 33025 0 1 033026 MOISTURE QUALITY CODE TABLE 33026 0 0 6 CODE TABLE 33026 0 2 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) CODE TABLE 33027 0 0 3 CODE TABLE 33027 0 1 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 33030 0 0 24 FLAG TABLE 33030 0 8 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 33031 0 0 24 FLAG TABLE 33031 0 8 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 33032 0 0 24 FLAG TABLE 33032 0 8 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 33033 0 0 24 FLAG TABLE 33033 0 8 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 33035 0 0 4 CODE TABLE 33035 0 2 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 % 0 3 033037 WIND CORRELATION ERROR FLAG TABLE 33037 0 0 20 FLAG TABLE 33037 0 7 033038 QUALITY FLAGS FOR GROUND-BASED GNSS DATA FLAG TABLE 33038 0 0 10 FLAG TABLE 33038 0 4 033040 CONFIDENCE INTERVAL % 0 0 7 PERCENT 0 3 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 33041 0 0 2 CODE TABLE 33041 0 1 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 33050 0 0 4 CODE TABLE 33050 0 2 033192 [SIM] Climatological and consistency check % 0 0 7 PERCENT 0 3 033193 [SIM] Time consistency % 0 0 7 PERCENT 0 3 033194 [SIM] Space consistency % 0 0 7 PERCENT 0 3 033195 [SIM] MeteoDB variable ID NUMERIC 0 0 24 NUMERIC 0 8 033196 [SIM] Data has been invalidated CODE TABLE 33196 0 0 2 CODE TABLE 33196 0 1 033197 [SIM] Manual replacement in substitution CODE TABLE 33197 0 0 2 CODE TABLE 33197 0 1 033198 [SIM] Observation increment NUMERIC 4 -1073741823 31 NUMERIC 4 10 033201 [SIM] Kalman coefficient, state vector (s.v.) x1 NUMERIC 4 -1073741823 31 NUMERIC 4 10 033202 [SIM] Kalman coefficient, state vector (s.v.) x2 NUMERIC 4 -1073741823 31 NUMERIC 4 10 033203 [SIM] Kalman coefficient, s.v. error covariance matrix(1,1) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033204 [SIM] Kalman coefficient, s.v. error covariance matrix(1,2) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033205 [SIM] Kalman coefficient, s.v. error covariance matrix(2,1) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033206 [SIM] Kalman coefficient, s.v. error covariance matrix(2,2) NUMERIC 4 -1073741823 31 NUMERIC 4 10 033207 [SIM] Kalman observation sequential counter NUMERIC 0 -127 8 NUMERIC 0 3 033208 [SIM] Kalman osservation missing counter NUMERIC 0 -127 8 NUMERIC 0 3 033209 [SIM] Normalized Density Index % 0 0 7 PERCENT 0 3 048001 [SIM] Graminacee_Graminacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048002 [SIM] Betulacee_Ontano nero POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048003 [SIM] Betulacee_Betulla POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048004 [SIM] Betulacee_Betulacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048005 [SIM] Composite_Ambrosia POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048006 [SIM] Composite_Artemisia POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048007 [SIM] Composite_Composite indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048008 [SIM] Corilacee_Nocciolo POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048009 [SIM] Corilacee_Carpino bianco -Carpino nero POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048010 [SIM] Corilacee_Corilacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048011 [SIM] Fagacee_Castagno POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048012 [SIM] Fagacee_Faggio POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048013 [SIM] Fagacee_Quercia POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048014 [SIM] Fagacee_Fagacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048015 [SIM] Oleacee_Olivo POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048016 [SIM] Oleacee_Frassino POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048017 [SIM] Oleacee_Oleacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048018 [SIM] Plantaginacee_Plantaginacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048019 [SIM] Urticacee_Urticacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048020 [SIM] Cupressacee - Taxacee indistinte_Cipresso comune POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048021 [SIM] Cupressacee - Taxacee indistinte_Cupressacee - Taxacee ind POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048022 [SIM] Chenopodiacee - Amarantacee Indistinte_Amaranto POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048023 [SIM] Chenopodiacee - Amarantacee Indistinte_Chenopodiacee - Ama POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048024 [SIM] Poligonacee_Poligonacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048025 [SIM] Euphorbiacee_Euforbiacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048026 [SIM] Mirtacee_Mirtacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048027 [SIM] Ulmacee_Bagolaro comune POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048028 [SIM] Ulmacee_Olmo campestre POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048029 [SIM] Ulmacee_Ulmacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048030 [SIM] Platanacee_Platanacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048031 [SIM] Aceraceae_Aceracee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048032 [SIM] Pinacee_Pinacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048033 [SIM] Salicacee_Salice comune POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048034 [SIM] Salicacee_Pioppo POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048035 [SIM] Salicacee_Salicacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048036 [SIM] Ciperacee_Ciperacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048037 [SIM] Juglandacee_Juglandacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048038 [SIM] Ippocastanacee_Ippocastanacee indistinte POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048039 [SIM] Spore fungine_Alternaria POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048040 [SIM] Spore fungine_Botrytis POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048041 [SIM] Spore fungine_Stemphylium POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048042 [SIM] Spore fungine_Cladosporium POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048043 [SIM] Spore fungine_Epicoccum POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048044 [SIM] Altri Pollini / Non Identificati_Altri pollini identificat POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048045 [SIM] Altri Pollini / Non Identificati_Pollini non identificati POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048046 [SIM] Altre Spore / Non identificati_Altre spore fungine POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048047 [SIM] Altre Spore / Non identificati_Spore fungine non identific POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048048 [SIM] Graminacee_Graminacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048049 [SIM] Plantaginacee_Plantaginacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048050 [SIM] Urticacee_Urticacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048051 [SIM] Poligonacee_Poligonacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048052 [SIM] Euphorbiacee_Euforbiacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048053 [SIM] Mirtacee_Mirtacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048054 [SIM] Platanacee_Platanacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048055 [SIM] Aceraceae_Aceracee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048056 [SIM] Pinacee_Pinacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048057 [SIM] Ciperacee_Ciperacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048058 [SIM] Juglandacee_Juglandacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048059 [SIM] Ippocastanacee_Ippocastanacee indistinte 1 POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048060 [SIM] Oleacee_Ligustro POLLEN/M**3 1 0 24 POLLEN/M**3 1 8 048128 [SIM] Conta Graminacee_Graminacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048129 [SIM] Conta Betulacee_Ontano nero NUMERIC 0 0 20 NUMERIC 0 7 048130 [SIM] Conta Betulacee_Betulla NUMERIC 0 0 20 NUMERIC 0 7 048131 [SIM] Conta Betulacee_Betulacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048132 [SIM] Conta Composite_Ambrosia NUMERIC 0 0 20 NUMERIC 0 7 048133 [SIM] Conta Composite_Artemisia NUMERIC 0 0 20 NUMERIC 0 7 048134 [SIM] Conta Composite_Composite indistinte NUMERIC 0 0 20 NUMERIC 0 7 048135 [SIM] Conta Corilacee_Nocciolo NUMERIC 0 0 20 NUMERIC 0 7 048136 [SIM] Conta Corilacee_Carpino bianco -Carpino nero NUMERIC 0 0 20 NUMERIC 0 7 048137 [SIM] Conta Corilacee_Corilacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048138 [SIM] Conta Fagacee_Castagno NUMERIC 0 0 20 NUMERIC 0 7 048139 [SIM] Conta Fagacee_Faggio NUMERIC 0 0 20 NUMERIC 0 7 048140 [SIM] Conta Fagacee_Quercia NUMERIC 0 0 20 NUMERIC 0 7 048141 [SIM] Conta Fagacee_Fagacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048142 [SIM] Conta Oleacee_Olivo NUMERIC 0 0 20 NUMERIC 0 7 048143 [SIM] Conta Oleacee_Frassino NUMERIC 0 0 20 NUMERIC 0 7 048144 [SIM] Conta Oleacee_Oleacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048145 [SIM] Conta Plantaginacee_Plantaginacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048146 [SIM] Conta Urticacee_Urticacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048147 [SIM] Conta Cupressacee - Taxacee indistinte_Cipresso comune NUMERIC 0 0 20 NUMERIC 0 7 048148 [SIM] Conta Cupressacee - Taxacee indistinte_Cupressacee - Taxac NUMERIC 0 0 20 NUMERIC 0 7 048149 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Amaranto NUMERIC 0 0 20 NUMERIC 0 7 048150 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Chenopodiacee NUMERIC 0 0 20 NUMERIC 0 7 048151 [SIM] Conta Poligonacee_Poligonacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048152 [SIM] Conta Euphorbiacee_Euforbiacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048153 [SIM] Conta Mirtacee_Mirtacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048154 [SIM] Conta Ulmacee_Bagolaro comune NUMERIC 0 0 20 NUMERIC 0 7 048155 [SIM] Conta Ulmacee_Olmo campestre NUMERIC 0 0 20 NUMERIC 0 7 048156 [SIM] Conta Ulmacee_Ulmacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048157 [SIM] Conta Platanacee_Platanacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048158 [SIM] Conta Aceraceae_Aceracee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048159 [SIM] Conta Pinacee_Pinacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048160 [SIM] Conta Salicacee_Salice comune NUMERIC 0 0 20 NUMERIC 0 7 048161 [SIM] Conta Salicacee_Pioppo NUMERIC 0 0 20 NUMERIC 0 7 048162 [SIM] Conta Salicacee_Salicacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048163 [SIM] Conta Ciperacee_Ciperacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048164 [SIM] Conta Juglandacee_Juglandacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048165 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte NUMERIC 0 0 20 NUMERIC 0 7 048166 [SIM] Conta Spore fungine_Alternaria NUMERIC 0 0 20 NUMERIC 0 7 048167 [SIM] Conta Spore fungine_Botrytis NUMERIC 0 0 20 NUMERIC 0 7 048168 [SIM] Conta Spore fungine_Stemphylium NUMERIC 0 0 20 NUMERIC 0 7 048169 [SIM] Conta Spore fungine_Cladosporium NUMERIC 0 0 20 NUMERIC 0 7 048170 [SIM] Conta Spore fungine_Epicoccum NUMERIC 0 0 20 NUMERIC 0 7 048171 [SIM] Conta Altri Pollini / Non Identificati_Altri pollini ident NUMERIC 0 0 20 NUMERIC 0 7 048172 [SIM] Conta Altri Pollini / Non Identificati_Pollini non identif NUMERIC 0 0 20 NUMERIC 0 7 048173 [SIM] Conta Altre Spore / Non identificati_Altre spore fungine NUMERIC 0 0 20 NUMERIC 0 7 048174 [SIM] Conta Altre Spore / Non identificati_Spore fungine non ide NUMERIC 0 0 20 NUMERIC 0 7 048175 [SIM] Conta Graminacee_Graminacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048176 [SIM] Conta Plantaginacee_Plantaginacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048177 [SIM] Conta Urticacee_Urticacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048178 [SIM] Conta Poligonacee_Poligonacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048179 [SIM] Conta Euphorbiacee_Euforbiacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048180 [SIM] Conta Mirtacee_Mirtacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048181 [SIM] Conta Platanacee_Platanacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048182 [SIM] Conta Aceraceae_Aceracee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048183 [SIM] Conta Pinacee_Pinacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048184 [SIM] Conta Ciperacee_Ciperacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048185 [SIM] Conta Juglandacee_Juglandacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048186 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte 1 NUMERIC 0 0 20 NUMERIC 0 7 048187 [SIM] Conta Oleacee_Ligustro NUMERIC 0 0 20 NUMERIC 0 7 dballe-7.21/tables/D000299.txt0000644000175000017500000052523113022043102012464 00000000000000 D00002 2 B00002 B00003 D00003 3 B00010 B00011 B00012 D00004 9 D00003 B00013 B00014 B00015 B00016 B00017 B00018 B00019 B00020 D00010 3 D00003 R01000 B00030 D01001 2 B01001 B01002 D01002 3 B01003 B01004 B01005 D01003 3 B01011 B01012 B01013 D01004 4 B01001 B01002 B01015 B02001 D01011 3 B04001 B04002 B04003 D01012 2 B04004 B04005 D01013 3 B04004 B04005 B04006 D01021 2 B05001 B06001 D01022 3 B05001 B06001 B07001 D01023 2 B05002 B06002 D01024 3 B05002 B06002 B07001 D01025 3 D01023 B04003 D01012 D01026 7 D01021 B04003 B04003 B04004 B04004 B04005 B04005 D01029 3 B01018 B02001 D01011 D01030 4 B01018 B02001 D01011 D01024 D01031 5 D01001 B02001 D01011 D01012 D01022 D01032 5 D01001 B02001 D01011 D01012 D01024 D01033 5 B01005 B02001 D01011 D01012 D01021 D01034 5 B01005 B02001 D01011 D01012 D01023 D01035 7 B01005 B01012 B01013 B02001 D01011 D01012 D01023 D01036 5 D01003 B02001 D01011 D01012 D01023 D01037 6 D01001 B02011 B02012 D01011 D01012 D01022 D01038 6 D01001 B02011 B02012 D01011 D01012 D01024 D01039 6 D01003 B02011 B02012 D01011 D01012 D01023 D01040 6 D01003 B02011 B02012 D01011 D01012 D01024 D01041 5 B01007 B02021 B02022 D01011 D01012 D01042 2 D01041 D01021 D01043 5 B01007 B02023 D01011 D01013 D01021 D01044 5 B01007 B02024 D01011 D01013 D01021 D01049 5 B02111 B02112 B21062 B21063 B21065 D01051 6 B01006 B02061 D01011 D01012 D01021 B08004 D01055 7 B01005 B02001 D01011 D01012 D01021 B01012 B01014 D01062 2 R01000 D01001 D01065 8 B01006 B01008 B02001 B02002 B02005 B02062 B02070 B02065 D01066 6 D01011 D01013 D01023 B07004 B02064 B08004 D01070 3 B02143 B02142 B02144 D01071 5 B01007 B01031 B02020 B02028 B02029 D01072 4 D01071 D01011 D01013 D01021 D01074 4 B02143 B02142 B02145 B02146 D01075 6 D01001 B01015 D01024 B08021 D01011 D01012 D01076 3 B02011 B02143 B02142 D01090 6 D01004 D01011 D01012 D01021 B07030 B07031 D01091 10 B02180 B02181 B02182 B02183 B02184 B02179 B02186 B02187 B02188 B02189 D01193 5 001007 001031 002196 002221 002222 D01250 4 D01193 D01011 D01013 D01021 D02001 4 B10004 B10051 B10061 B10063 D02002 5 B10004 B07004 B10003 B10061 B10063 D02003 9 B11011 B11012 B12004 B12006 B13003 B20001 B20003 B20004 B20005 D02004 7 B20010 B08002 B20011 B20013 B20012 B20012 B20012 D02005 4 B08002 B20011 B20012 B20013 D02006 4 B10004 B10051 B10062 B10063 D02011 3 D02001 D02003 D02004 D02012 3 D02002 D02003 D02004 D02013 4 D02006 D02003 R01000 D02005 D02021 3 B22001 B22011 B22021 D02022 3 B22002 B22012 B22022 D02023 3 B22003 B22013 B22023 D02024 3 D02022 R01002 D02023 D02051 12 B10004 B10051 B07004 B10003 B12004 B12051 B12016 B12017 B13004 R02004 B08051 B08020 D02069 4 B07032 B07033 B33041 B20001 D02070 8 B07032 B07033 B11001 B11002 B11043 B11041 B11016 B11017 D02071 14 B07032 B07033 B08021 B04025 B11001 B11002 B08021 R03002 B04025 B11043 B11041 B04025 B11016 B11017 D02072 5 B07032 B07033 B12101 B12103 B13003 D02073 7 B20010 R05004 B08002 B20011 B20012 B33041 B20013 D02074 4 B20003 B04025 B20004 B20005 D02075 5 B08021 B04025 B13055 B13058 B08021 D02076 7 B02021 B20022 B26020 B20023 B20024 B20025 B20026 D02077 12 B07032 B07033 B04025 B12111 B12112 B07032 B04025 B12112 B02176 B20062 B02177 B13013 D02078 4 B02176 B20062 B02177 B13013 D02079 5 B07032 B02175 B02178 B04025 B13011 D02080 3 B02185 B04025 B13033 D02081 2 B04025 B14031 D02082 7 B04025 B14002 B14004 B14016 B14028 B14029 B14030 D02083 8 B04025 B08023 B10004 B11001 B11002 B12101 B13003 B08023 D03001 3 B07003 B11001 B11002 D03002 3 B07004 B11001 B11002 D03003 4 B07004 B10003 B12001 B12003 D03004 6 B07004 B10003 B12001 B12003 B11001 B11002 D03011 4 B07003 B08001 B11001 B11002 D03012 4 B07004 B08001 B11001 B11002 D03013 7 B07004 B08001 B10003 B12001 B13003 B11001 B11002 D03014 7 B07004 B08001 B10003 B12001 B12003 B11001 B11002 D03031 6 B07004 B08003 B07021 B07022 B08012 B12061 D03032 2 B20011 B20016 D03033 2 B20010 B20016 D03041 8 B02152 B02023 B07004 B11001 B11002 B02153 B02154 B12071 D03250 8 B02252 B02023 B07004 B11001 B11002 B02197 B02198 B12193 D04001 5 B08003 B10004 B12001 B11001 B11002 D04002 4 B08003 B10004 B11001 B11002 D04003 2 B08003 B12001 D04004 4 B08003 B10004 B20010 B12001 D04005 4 B02024 B07004 B07004 B13003 D04006 3 B14001 B14001 B14003 D04011 27 B02163 B02164 B08012 B07024 B02057 B08021 B04001 B04002 B04003 B04004 B08021 B04024 R10004 B08021 B04004 B04005 B04006 B08021 B04004 B04005 B04006 B11001 B11002 R03010 B02163 B07004 B12001 D04030 3 B27031 B28031 B10031 D04031 3 B01041 B01042 B01043 D04032 5 B02153 B02154 B20081 B20082 B20012 D04033 8 B02152 B02166 B02167 B02153 B02154 B12075 B12076 B12063 D04034 9 R02004 B27001 B28001 B07022 B05043 B20010 B20016 B33003 B10040 D04250 27 B02231 B02232 B08012 B07024 B02057 B08021 B04001 B04002 B04003 B04004 B08021 B04024 R10004 B08021 B04004 B04005 B04006 B08021 B04004 B04005 B04006 B11001 B11002 R03010 B02231 B07004 B12001 D05001 4 B11001 B11002 B13060 B13071 D05002 11 D01012 B12001 B13003 B14051 B13060 B13072 B13080 B13081 B13082 B13083 B13084 D05003 4 D01012 B04065 R01000 D05001 D05004 3 D01030 D05002 D05003 D05006 8 B13072 B13082 B13019 C07005 C01004 B12001 B13073 B13060 D05007 5 D01029 D01012 B04065 R01000 D05006 D05008 4 D05006 C07005 C01004 B12030 D05009 5 D01029 D01012 B04065 R01000 D05008 D05010 3 D05008 B02091 B02091 D05011 5 D01029 D01012 B04065 R01000 D05010 D05016 7 B14021 B07004 B13003 B11002 B11001 B11041 B11043 D05017 5 B13080 B13081 B13083 B13085 B13084 D05018 7 D01029 D01012 B04065 R03000 D05008 D05016 D05017 D06001 4 B02032 R02000 B07062 B22042 D06002 3 B02031 B22004 B22031 D06003 4 B02002 B11011 B11012 B12004 D06004 6 B02032 B02033 R03000 B07062 B22043 B22062 D06005 5 B02031 R03000 B07062 B22004 B22031 D06006 3 D06003 D06002 B22063 D06007 6 B01012 B01014 D06008 B04024 B27003 B28003 D06008 3 B02034 B02035 B02036 D06020 8 B01075 D01011 D01012 B22042 B22120 B22121 B04075 B04065 D06021 7 B01075 D01011 D01012 B22122 B22123 B12001 D03002 D06022 5 B01075 D01011 D01012 B22038 B22039 D06023 8 B01015 D01023 D01011 D01012 B22038 B22039 B22120 B22121 D06024 4 D06020 R02000 B22038 B22039 D07001 2 D01031 D02011 D07002 2 D01032 D02011 D07003 3 D07001 R01000 D02005 D07004 3 D07002 R01000 D02005 D07005 3 D07001 R01004 D02005 D07006 3 D07002 R01004 D02005 D07007 2 D01031 D02012 D07008 2 D01032 D02012 D07009 2 D01031 D02013 D07011 16 B01063 B02001 D01011 D01012 D01024 B07006 B11001 B11016 B11017 B11002 B11041 B07006 B12001 B12003 B10052 B20009 D07012 4 R03000 B08023 B05021 B20001 D07013 7 R06000 B01064 B08014 B20061 B08014 B20061 B20018 D07014 2 R01000 B20019 D07015 3 R01000 D02005 B20002 D07016 2 R01000 B20020 D07017 2 R01000 B11070 D07018 13 B08016 R02000 B08017 D01012 R04000 B07006 B11001 B11002 B11041 B20009 R01000 B20001 D07014 D07020 3 D07011 D07014 D07016 D07021 9 D07011 D07012 D07013 D07014 D07015 D07016 D07017 D07018 D07015 D07030 2 B15001 B15002 D07031 7 B08022 B08023 B15001 B08023 B15001 B08023 B15002 D07041 7 D01001 B01015 D01024 D01011 D01012 D01070 D07030 D07042 9 D01001 B01015 D01024 D01011 D01012 B08021 B04025 D01070 D07031 D07043 7 D01001 B01015 D01024 D01011 D01012 D01074 D07030 D07044 9 D01001 B01015 D01024 D01011 D01012 B08021 B04025 D01074 D07031 D07060 2 B07061 B12030 D07061 3 D01031 R01005 D07060 D07062 3 D01032 R01005 D07060 D07063 2 B07061 B12130 D08001 3 D01033 D02011 B22042 D08002 3 D01034 D02011 B22042 D08003 3 D01035 D02011 B22042 D08004 3 D01036 D02011 B22042 D08005 2 D08004 D02024 D08006 8 B10004 B10061 B10063 B11001 B11002 B12004 B13003 B22042 D08007 4 D01055 D02011 B07062 B22042 D09001 3 D01037 R01000 D03011 D09002 3 D01038 R01000 D03011 D09003 3 D01037 R01000 D03012 D09004 3 D01038 R01000 D03012 D09005 4 D01037 D02004 R01000 D03013 D09006 4 D01038 D02004 R01000 D03013 D09007 4 D01037 D02004 R01000 D03014 D09008 4 D01038 D02004 R01000 D03014 D09011 3 D01039 R01000 D03011 D09012 3 D01039 R01000 D03012 D09013 4 D01039 D02004 R01000 D03013 D09014 4 D01039 D02004 R01000 D03014 D09015 3 D01040 R01000 D03011 D09016 3 D01040 R01000 D03012 D09017 4 D01040 D02004 R01000 D03013 D09018 4 D01040 D02004 R01000 D03014 D09019 4 D01031 B02003 R01000 D03011 D09020 7 D01031 B02003 R04000 B07003 B11003 B11004 B11005 D09030 7 B15004 B15005 R04000 B04015 B08006 B07004 B15003 D09040 3 D01075 D01076 D09030 D09041 4 D07041 D01075 D01076 D09030 D09042 4 D07042 D01075 D01076 D09030 D09044 4 D07044 D01075 D01076 D09030 D10001 5 D01042 D03031 D03032 R01026 D03025 D10002 5 D01042 D03031 D03032 R01009 D03023 D10003 5 D01042 D03031 D03032 R01006 D03023 D10004 5 D01042 D03031 D03032 R01003 D03024 D10005 5 D01042 D03031 D03033 R01000 D03025 D10006 5 D01042 D03031 D03033 R01000 D03023 D10007 5 D01042 D03031 D03033 R01000 D03024 D10008 8 D10011 R01019 D10012 B02150 B25079 B25080 B33032 B14045 D10009 3 D10011 R01015 D10012 D10010 3 D10011 R01005 D10012 D10014 3 D01072 D03041 D04011 D10015 13 D01072 B07024 B10002 D03041 R01003 D04032 B02152 B02024 B07004 B07004 B13003 R01003 D04033 D10016 13 D01072 B07024 B10002 D03041 R01012 D04032 B02152 B02024 B07004 B07004 B13003 R01012 D04033 D10020 6 D10022 D01011 D01013 D01021 D04034 D10021 D10022 4 B01007 B02019 B01033 B02172 D10023 17 D01072 B30021 B30022 B08012 B07024 B07025 B10002 R01012 D04032 R05002 B02152 B02024 B07004 B07004 B13003 R01012 D04033 D10050 13 D10051 D10052 R01000 D10053 R01004 D10054 B20010 D10052 R01015 D10053 D10052 R01004 D10053 D10195 3 D01250 D03250 D04250 D11001 9 D01051 B07002 B12001 B11001 B11002 B11031 B11032 B11033 B20041 D11002 4 D01065 D01066 D11003 D11004 D11003 5 B10070 B11001 B11002 B12001 B13002 D11004 12 R01000 B11034 R01000 B11035 R01000 B11075 R01000 B11076 R01000 B33025 R01000 B33026 D11005 13 B01008 B01023 D01021 D01011 D01013 B07010 B08009 B11001 B11002 B11031 B11036 B12101 B33025 D11006 6 B07010 B11001 B11002 B02064 B12101 B12103 D11193 16 D01197 D01011 D01012 D01023 B08004 B07004 B08021 B11001 B11002 B11031 B11034 B11035 B12001 B12003 B13003 B20041 D12001 2 D01043 D04001 D12002 2 D01043 D04002 D12003 2 D01042 D04003 D12004 2 D01042 D04004 D12005 2 D01042 B20014 D12006 2 D01044 D04005 D12007 2 D01042 D04006 D12010 6 B01007 B05040 B02021 B05041 B04001 B04043 D12014 8 D12010 D12011 R05056 D01023 B05042 B05052 D12012 D12013 D12016 3 D12010 D12011 D12015 D12018 3 D12010 D12011 D12017 D12020 11 D01047 D01048 B15015 B29002 B21076 R04012 B06030 R02012 B05030 B21075 B21066 D12021 6 D01047 R01003 D01049 B11012 B11011 B21067 D12022 15 D01047 B08022 B11012 B11050 B22070 B22026 D12041 B10050 B21068 B21071 B21072 B21073 D12042 B21062 B15011 D12023 7 D01047 R03003 B08022 B12061 B22050 B21069 B21085 D12024 11 D12020 B08060 B08022 B08060 B08022 B25014 B22101 B22097 B22098 B22099 B22100 D12025 11 D12019 B08060 B08022 B08060 B08022 B25014 B22101 B22097 B22098 B22099 B22100 D12026 19 D01046 D01011 D01013 D01023 D12031 R01004 D12030 B21110 D01023 D21027 B21111 D01023 D21027 B21112 D01023 D21027 B21113 D01023 D21027 D12027 9 D01047 R05009 D01023 B07021 B12061 B07021 B12061 B21085 B21070 D12031 8 B05034 B06034 B21109 B11081 B11082 B21101 B21102 B21103 D12032 4 B21120 B21121 B13055 B21122 D12033 4 B02104 B08022 B12063 B12065 D12042 6 B21077 B21078 B21079 B21080 B21081 B21082 D12045 21 B01007 B02019 B01096 B25061 B05040 D01011 D01013 D01021 B07002 B12180 B12181 B12182 B12183 B12184 B12185 B02174 B21086 B12186 B21087 B12187 B33043 D13009 3 B21001 R01000 B21001 D13010 3 B21036 R01000 B21036 D13031 4 B06002 B06012 R01000 B30001 D13032 4 B05002 B05012 R01000 D13031 D13041 9 B06002 R10000 R04000 B06012 R01000 B30001 B06012 R01000 B30001 D13042 4 B05002 B05012 R01000 D13041 D13043 11 B06002 B05002 B05012 R12000 R10000 R04000 B06012 R01000 B30001 R01000 B30001 D15001 5 B01011 D01011 D01012 D01023 D06001 D15002 5 B01011 D01011 D01012 D01023 D06004 D16001 10 D01011 B04004 D01023 B01021 B02041 B19001 B10051 B19002 B19003 B19004 D16002 15 B08021 B04001 B04002 B04003 B04004 B04005 B01033 B08021 B04001 B04002 B04003 B04004 B04005 B07002 B07002 D16003 10 R09000 B08011 B08007 R04000 B05002 B06002 B10002 B11002 B08007 B08011 D16004 11 R10000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B11031 B08007 B08011 D16005 9 R08000 B08005 B08007 B05002 B06002 B01026 B19001 B08007 B08005 D16006 12 R11000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B20011 B20012 B08007 B08011 D16007 10 R09000 B08011 B08007 R04000 B05002 B06002 B19005 B19006 B08007 B08011 D16008 11 R10000 B08001 B08007 B08023 R03000 B05002 B06002 B10002 B08023 B08007 B08001 D16009 11 R10000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B20041 B08007 B08011 D16010 8 R07000 B08011 B08007 B01022 B05002 B06002 B08007 B08011 D16011 17 R16000 B08011 B01022 B08007 R02000 B05002 B06002 B08021 B04001 B04002 B04003 B04004 B04005 B20090 B08021 B08007 B08011 D16020 5 B01023 B01025 B01027 D01011 D01012 D16021 23 D01023 B02041 B19001 B19007 B19005 B19006 B19008 B08005 B10004 B08005 B10004 B19007 B08005 B08021 B04075 B11040 B19007 R05004 B05021 B05021 R02002 B19003 B19004 D16022 23 B01032 B02041 B19001 B19010 R18000 B08021 B04014 B08005 D01023 B19005 B19006 B10004 B11041 B08021 B04075 B11040 B19008 R05004 B05021 B05021 R02002 B19003 B19004 D16026 2 D16020 D16021 D18001 2 D01025 B24011 D18003 4 D01026 B24005 B24004 B24021 D18004 6 D01025 B04023 B13011 B24005 B24004 B24022 D21001 6 B02101 B02114 B02105 B02106 B02107 B02121 D21003 4 B21051 B21014 B21017 B21030 D21004 4 D01031 B02003 R01000 D21003 D21005 12 B25004 B02121 B02122 B02123 B02124 B02125 B02126 B02127 B02128 B02129 B02130 B02131 D21006 4 B25001 B25002 B25003 B25005 D21007 8 B25009 B25010 B25011 B25012 B25013 B25015 B25016 B25017 D21008 3 B25006 B25007 B25008 D21009 2 B25018 B25019 D21010 13 B02101 B07002 B02102 B02103 B02104 B02105 B02106 B02107 B02108 B02109 B02110 B02132 B02133 D21011 3 B30031 B30032 B29002 D21012 2 R01000 B02135 D35001 4 B08035 B35001 B08036 D01001 D35002 4 B08035 B35001 B08036 B01033 D35003 6 B08021 B04001 B04002 B04003 B04004 B04073 D35004 7 B08021 B04004 B08021 B04004 B35000 D01001 B35011 D35005 7 B08021 B04004 B08021 B04004 B35000 B01001 B35011 D35006 7 B08021 B04004 B08021 B04004 B35000 B01003 B35011 D35007 9 B08021 B04004 B08021 B04004 B35000 B01001 R02000 B01002 B35011 D35010 3 D35002 D35003 D35007 dballe-7.21/tables/D000000002001200.txt0000644000175000017500000107105613022043102013327 00000000000000 300002 2 000002 000003 300003 3 000010 000011 000012 300004 9 300003 000013 000014 000015 000016 000017 000018 000019 000020 300010 4 300003 101000 031001 000030 301001 2 001001 001002 301002 3 001003 001004 001005 301003 3 001011 001012 001013 301004 4 001001 001002 001015 002001 301011 3 004001 004002 004003 301012 2 004004 004005 301013 3 004004 004005 004006 301021 2 005001 006001 301022 3 005001 006001 007001 301023 2 005002 006002 301024 3 005002 006002 007001 301025 3 301023 004003 301012 301026 7 301021 004003 004003 004004 004004 004005 004005 301031 5 301001 002001 301011 301012 301022 301032 5 301001 002001 301011 301012 301024 301033 5 001005 002001 301011 301012 301021 301034 5 001005 002001 301011 301012 301023 301035 7 001005 001012 001013 002001 301011 301012 301023 301036 5 301003 002001 301011 301012 301023 301037 6 301001 002011 002012 301011 301012 301022 301038 6 301001 002011 002012 301011 301012 301024 301039 6 301003 002011 002012 301011 301012 301023 301040 6 301003 002011 002012 301011 301012 301024 301041 5 001007 002021 002022 301011 301012 301042 2 301041 301021 301043 5 001007 002023 301011 301013 301021 301044 5 001007 002024 301011 301013 301021 301045 9 301011 301012 201138 202131 004006 201000 202000 304030 304031 301046 10 001007 001012 002048 021119 025060 202124 002026 002027 202000 005040 301047 15 001007 025060 001033 001034 001012 301045 002021 301011 301012 201138 202131 004006 201000 202000 301023 301048 14 002104 002121 002113 002026 002027 002111 002140 202127 001013 202126 007001 202000 025010 021064 301049 5 002111 002112 021062 021063 021065 301051 6 001006 002061 301011 301012 301021 008004 301055 7 001005 002001 301011 301012 301021 001012 001014 301062 3 101000 031001 301001 301065 8 001006 001008 002001 002002 002005 002062 002070 002065 301066 6 301011 301013 301023 007004 002064 008004 301071 5 001007 001031 002020 002028 002029 301072 4 301071 301011 301013 301021 301090 6 301004 301011 301012 301021 007030 007031 301091 10 002180 002181 002182 002183 002184 002179 002186 002187 002188 002189 301193 5 001007 001031 002196 002221 002222 301194 9 001194 001012 001013 002011 002012 301011 301012 301023 007001 301195 9 001195 001012 001013 002011 002012 301011 301012 301023 007001 301196 7 301003 002011 002012 301011 301012 301023 007001 301197 9 001006 001008 002061 002062 002002 002005 002070 002063 002001 301200 2 001032 033194 301201 2 101003 033193 301202 2 001031 001032 301237 12 001007 001012 002021 301011 004004 004005 201138 202131 004006 201000 202000 301023 301238 14 002104 002121 002113 002026 002027 002111 002192 202127 001013 202126 007001 202000 025010 021194 301239 5 002111 002112 021192 021193 021195 301240 5 201131 202129 022021 201000 202000 301241 5 201141 202130 007001 201000 202000 301242 6 021207 021208 021209 021210 021211 021212 301250 4 301193 301011 301013 301021 302001 4 010004 010051 010061 010063 302002 5 010004 007004 010003 010061 010063 302003 9 011011 011012 012004 012006 013003 020001 020003 020004 020005 302004 7 020010 008002 020011 020013 020012 020012 020012 302005 4 008002 020011 020012 020013 302006 4 010004 010051 010062 010063 302011 3 302001 302003 302004 302012 3 302002 302003 302004 302013 5 302006 302003 101000 031001 302005 302021 3 022001 022011 022021 302022 3 022002 022012 022022 302023 3 022003 022013 022023 302024 3 302022 101002 302023 302051 12 010004 010051 007004 010003 012004 012051 012016 012017 013004 102004 008051 008020 302069 4 007032 007033 033041 020001 302070 8 007032 007033 011001 011002 011043 011041 011016 011017 302071 14 007032 007033 008021 004025 011001 011002 008021 103002 004025 011043 011041 004025 011016 011017 302072 5 007032 007033 012101 012103 013003 302073 7 020010 105004 008002 020011 020012 033041 020013 302074 4 020003 004025 020004 020005 302075 5 008021 004025 013055 013058 008021 302076 7 002021 020022 026020 020023 020024 020025 020026 302077 12 007032 007033 004025 012111 012112 007032 004025 012112 002176 020062 002177 013013 302078 4 002176 020062 002177 013013 302079 5 007032 002175 002178 004025 013011 302080 3 002185 004025 013033 302081 2 004025 014031 302082 7 004025 014002 014004 014016 014028 014029 014030 302083 8 004025 008023 010004 011001 011002 012101 013003 008023 302205 5 201131 202129 022021 201000 202000 302206 9 302205 201130 202129 022011 201000 202000 022001 011001 011002 302207 5 022193 022194 022195 022196 022197 302250 5 102000 031001 020193 020194 020012 303001 3 007003 011001 011002 303002 3 007004 011001 011002 303003 4 007004 010003 012001 012003 303004 6 007004 010003 012001 012003 011001 011002 303011 4 007003 008001 011001 011002 303012 4 007004 008001 011001 011002 303013 7 007004 008001 010003 012001 013003 011001 011002 303014 7 007004 008001 010003 012001 012003 011001 011002 303021 4 007004 007004 204007 031021 303022 3 303021 010003 204000 303023 3 303021 012001 204000 303024 3 303021 013016 204000 303025 5 002025 204007 031021 012063 204000 303026 6 007004 008003 204007 031021 012001 204000 303027 5 007004 204007 031021 010003 204000 303031 6 007004 008003 007021 007022 008012 012061 303032 2 020011 020016 303033 2 020010 020016 303041 8 002152 002023 007004 011001 011002 002153 002154 012071 303249 7 002252 104000 031001 002199 007004 007004 013003 303250 8 002252 002023 007004 011001 011002 002197 002198 012193 303251 8 002252 105000 031001 002254 002251 002197 002198 012063 303252 8 002252 105000 031001 002254 002251 002197 002198 012194 304001 5 008003 010004 012001 011001 011002 304002 4 008003 010004 011001 011002 304003 2 008003 012001 304004 4 008003 010004 020010 012001 304005 4 002024 007004 007004 013003 304006 3 014001 014001 014003 304011 27 002163 002164 008012 007024 002057 008021 004001 004002 004003 004004 008021 004024 110004 008021 004004 004005 004006 008021 004004 004005 004006 011001 011002 103010 002163 007004 012001 304030 3 027031 028031 010031 304031 3 001041 001042 001043 304032 5 002153 002154 020081 020082 020012 304033 8 002152 002166 002167 002153 002154 012075 012076 012063 304034 9 102004 027001 028001 007022 005043 020010 020016 033003 010040 304228 3 005217 006217 007217 304229 3 001208 001209 001210 304250 27 002231 002232 008012 007024 002057 008021 004001 004002 004003 004004 008021 004024 110004 008021 004004 004005 004006 008021 004004 004005 004006 011001 011002 103010 002231 007004 012001 305003 5 301012 004065 101000 031001 305001 305006 6 013072 013082 013019 012001 013073 013060 305007 6 301029 301012 004065 101000 031001 305006 305008 2 305006 012030 305009 6 301029 301012 004065 101000 031001 305008 305011 6 301029 301012 004065 101000 031001 305010 305018 8 301029 301012 004065 103000 031001 305008 305016 305017 306001 5 002032 102000 031001 007062 022042 306002 3 002031 022004 022031 306003 4 002002 011011 011012 012004 306004 7 002032 002033 103000 031001 007062 022043 022062 306005 6 002031 103000 031001 007062 022004 022031 306006 3 306003 306002 022063 306007 6 001012 001014 306008 004024 027003 028003 306008 3 002034 002035 002036 306020 4 306024 102006 022038 022039 306021 7 001075 301011 301012 022122 022123 012001 303002 306022 5 001075 301011 301012 022038 022039 306023 8 001015 301023 301011 301012 022038 022039 022120 022121 306024 8 001075 301011 301012 022042 022120 022121 004025 004015 307001 2 301031 302011 307002 2 301032 302011 307003 4 307001 101000 031001 302005 307004 4 307002 101000 031001 302005 307005 3 307001 101004 302005 307006 3 307002 101004 302005 307007 2 301031 302012 307008 2 301032 302012 307009 2 301031 302013 307011 16 001063 002001 301011 301012 301024 007006 011001 011016 011017 011002 011041 007006 012001 012003 010052 020009 307012 5 103000 031001 008023 005021 020001 307013 8 106000 031001 001064 008014 020061 008014 020061 020018 307014 3 101000 031001 020019 307015 8 101000 031001 302005 008002 020011 020012 020013 020002 307016 3 101000 031001 020020 307017 3 101000 031001 011070 307018 16 008016 102000 031001 008017 301012 104000 031001 007006 011001 011002 011041 020009 101000 031001 020001 307014 307020 3 307011 307014 307016 307021 9 307011 307012 307013 307014 307015 307016 307017 307018 307015 307022 31 001015 301011 301012 301022 008021 004025 010004 012001 013003 033038 008022 106025 002020 001050 005021 007021 015031 015032 008060 015033 015034 008060 015033 015034 015035 201131 202129 013016 202000 201000 015011 307030 2 015001 015002 307031 7 008022 008023 015001 008023 015001 008023 015002 307041 7 301001 001015 301022 301011 301012 301070 307030 307042 9 301001 001015 301022 301011 301012 008021 004025 301070 307031 307043 7 301001 001015 301024 301011 301012 301074 307030 308001 3 301033 302011 022042 308002 3 301034 302011 022042 308003 3 301035 302011 022042 308004 3 301036 302011 022042 308005 2 308004 302024 308006 8 010004 010061 010063 011001 011002 012004 013003 022042 308007 4 301055 302011 007062 022042 309001 4 301037 101000 031001 303011 309002 4 301038 101000 031001 303011 309003 4 301037 101000 031001 303012 309004 4 301038 101000 031001 303012 309005 5 301037 302004 101000 031001 303013 309006 5 301038 302004 101000 031001 303013 309007 5 301037 302004 101000 031001 303014 309008 5 301038 302004 101000 031001 303014 309011 4 301039 101000 031001 303011 309012 4 301039 101000 031001 303012 309013 5 301039 302004 101000 031001 303013 309014 5 301039 302004 101000 031001 303014 309015 4 301040 101000 031001 303011 309016 4 301040 101000 031001 303012 309017 5 301040 302004 101000 031001 303013 309018 5 301040 302004 101000 031001 303014 309019 5 301031 002003 101000 031001 303011 309020 8 301031 002003 104000 031001 007003 011003 011004 011005 309030 8 015004 015005 104000 031001 004015 008006 007004 015003 309040 3 301075 301076 309030 309042 4 307042 301075 301076 309030 309194 5 301194 302004 101000 031001 303014 309195 5 301195 302004 101000 031001 303014 309196 5 301196 302004 101000 031001 303014 310001 5 301042 303031 303032 101026 303025 310002 5 301042 303031 303032 101009 303023 310003 5 301042 303031 303032 101006 303023 310004 5 301042 303031 303032 101003 303024 310005 6 301042 303031 303033 101000 031001 303025 310006 6 301042 303031 303033 101000 031001 303023 310007 6 301042 303031 303033 101000 031001 303024 310008 8 310011 101019 310012 002150 025079 025080 033032 014045 310009 3 310011 101015 310012 310010 3 310011 101005 310012 310011 45 008070 001033 001034 008070 001033 001034 001007 002048 005040 025075 201133 005041 201000 005043 025070 033030 033031 004001 004002 004003 004004 004005 202131 201138 004006 201000 202000 005001 006001 202126 007001 202000 007024 005021 007025 005022 033033 002151 012064 002151 012064 002151 012064 002151 012064 310012 10 002150 025076 025077 025078 033032 201132 202129 012063 202000 201000 310013 62 001007 005040 004001 004002 004003 004004 004005 004006 005001 006001 007025 005043 025085 201131 202129 002150 008023 008072 014027 008072 014027 002150 008023 008072 014027 008072 014027 002150 008023 008072 014027 008072 014027 202000 201000 201132 202129 002150 008023 008072 012063 008072 012063 002150 008023 008072 012063 008072 012063 008023 008072 012063 008072 012063 002150 008023 008072 012063 008072 012063 202000 201000 310014 3 301072 303041 304011 310015 13 301072 007024 010002 303041 101003 304032 002152 002024 007004 007004 013003 101003 304033 310016 13 301072 007024 010002 303041 101012 304032 002152 002024 007004 007004 013003 101012 304033 310020 6 310022 301011 301013 301021 304034 310021 310021 10 108000 031001 201131 202129 007004 007004 202000 201000 015020 010002 310022 4 001007 002019 001033 002172 310023 17 301072 030021 030022 008012 007024 007025 010002 101012 304032 105002 002152 002024 007004 007004 013003 101012 304033 310024 17 301072 030021 030022 008012 007024 007025 010002 101003 304032 105002 002152 002024 007004 007004 013003 101003 304033 310025 61 001007 008021 004001 004002 004003 004004 004005 201138 202131 004006 202000 201000 201132 005041 201000 201129 005043 201000 005002 006002 013040 020029 104024 005042 012163 021083 021084 115003 004001 004002 004003 201142 202131 004026 202000 201000 005001 006001 201138 202129 007001 202000 201000 008021 004001 004002 004003 004004 004005 005040 101003 012070 025054 101004 025055 008007 104028 005002 006002 002111 005021 310029 12 110000 031001 201138 202130 007004 007004 202000 201000 015020 010002 012101 013098 310030 6 310022 301011 301013 301021 304034 310029 310050 14 310051 310052 101000 031002 310053 101004 310054 020010 310052 101015 310053 310052 101004 310053 310051 16 001007 005040 201133 005041 201000 201132 025070 201000 202126 007001 202000 007025 005022 102009 002151 012064 310052 12 002019 301011 301012 202131 201138 004006 201000 202000 301021 007024 005021 005043 310053 6 201134 005042 201000 025076 033032 012163 310054 13 201134 005042 201000 025076 033032 201131 202129 102002 008023 014027 008023 202000 201000 310055 8 310051 310052 102020 025076 025051 101000 031002 025050 310193 5 301250 303250 302250 303249 303251 310194 5 301250 303250 302250 303249 303252 310195 3 301250 303250 304250 310196 3 301250 303249 303251 311001 9 301051 007002 012001 011001 011002 011031 011032 011033 020041 311002 4 301065 301066 311003 311004 311003 5 010070 011001 011002 012001 013002 311004 18 101000 031000 011034 101000 031000 011035 101000 031000 011075 101000 031000 011076 101000 031000 033025 101000 031000 033026 311005 13 001008 001023 301021 301011 301013 007010 008009 011001 011002 011031 011036 012101 033025 311006 6 007010 011001 011002 002064 012101 012103 311193 16 301197 301011 301012 301023 008004 007004 008021 011001 011002 011031 011034 011035 012001 012003 013003 020041 312001 2 301043 304001 312002 2 301043 304002 312003 2 301042 304003 312004 2 301042 304004 312005 2 301042 020014 312006 2 301044 304005 312007 2 301042 304006 312010 6 001007 005040 002021 005041 004001 004043 312011 9 202131 201149 004006 201000 202126 010002 202000 005043 005053 312012 6 202129 201132 101019 012063 201000 202000 312013 6 005042 202129 201135 012063 201000 202000 312014 8 312010 312011 105056 301023 005042 005052 312012 312013 312015 10 109011 301023 005042 005052 202129 201132 101004 012063 202000 201000 312016 3 312010 312011 312015 312017 10 109008 301023 005042 005052 202129 201132 101003 012063 202000 201000 312018 3 312010 312011 312017 312019 13 301047 301048 015015 029002 021076 106012 201129 006030 201000 102012 005030 021075 021066 312020 11 301047 301048 015015 029002 021076 104012 006030 102012 005030 021075 021066 312021 6 301047 101003 301049 011012 011011 021067 312022 15 301047 008022 011012 011050 022070 022026 312041 010050 021068 021071 021072 021073 312042 021062 015011 312023 7 301047 103003 008022 012061 022050 021069 021085 312024 11 312020 008060 008022 008060 008022 025014 022101 022097 022098 022099 022100 312025 11 312019 008060 008022 008060 008022 025014 022101 022097 022098 022099 022100 312026 19 301046 301011 301013 301023 312031 101004 312030 021110 301023 321027 021111 301023 321027 021112 301023 321027 021113 301023 321027 312027 9 301047 105009 301023 007021 012061 007021 012061 021085 021070 312028 26 301046 301011 301013 301023 008025 201136 004006 201000 312031 312032 101004 312030 101002 312033 021110 301023 321028 021111 301023 321028 021112 301023 321028 021113 301023 321028 312030 13 201130 202129 011012 202000 201000 011052 201135 202130 011011 202000 201000 011053 021104 312031 8 005034 006034 021109 011081 011082 021101 021102 021103 312032 4 021120 021121 013055 021122 312033 4 002104 008022 012063 012065 312041 5 201141 202130 007001 201000 202000 312042 6 021077 021078 021079 021080 021081 021082 312045 21 001007 002019 001096 025061 005040 301011 301013 301021 007002 012180 012181 012182 012183 012184 012185 002174 021086 012186 021087 012187 033043 312050 23 001007 002019 001096 025061 005040 301011 301013 301021 007025 005022 010080 027080 008003 007004 013093 008003 201131 202129 007004 007004 202000 201000 013095 312051 48 001007 002019 001096 025061 005040 008075 301011 301013 301021 001012 201131 001013 201000 010032 010033 010034 007002 008012 025110 025111 025102 002104 025103 025104 025105 025106 025107 025108 002111 002121 002026 002027 021130 021131 021132 021133 021064 025014 021134 107018 005030 105024 201130 006030 201000 021135 021136 033044 312052 77 001007 002019 001096 025061 005040 025120 025121 025124 025125 025122 025123 301011 301013 301021 007002 002119 033047 010081 010082 010083 010084 002116 002117 002118 002156 002157 014055 022150 022151 022152 022153 022154 022155 022156 022157 022158 022159 021137 021138 021139 021140 021141 021142 010085 010086 010087 010088 010089 010090 010091 010092 010093 011002 025126 025127 025128 025129 025130 025131 025132 025133 025134 025135 025136 025137 013096 013097 011095 011096 012188 012189 002158 002159 033052 033053 021143 021144 312053 54 001007 002019 001096 025061 005040 008075 301011 301013 301021 001012 201131 001013 201000 010032 010033 010034 007002 008012 025110 025111 025102 002104 025103 025104 025105 025106 025107 025108 011001 011002 022160 025138 201130 202129 022021 202000 201000 033048 033049 002026 002027 021130 021131 021132 021133 025014 106036 005030 104024 201130 006030 201000 022161 033044 312200 10 301237 301238 029002 021206 104012 006232 102012 005232 021205 021196 312201 6 301237 101003 301239 011012 011011 021197 312202 13 301237 008022 011012 011050 301240 022243 301241 010050 021198 021201 021202 021203 301242 312203 8 301237 008022 012061 022050 021204 021199 021214 021215 312204 12 312201 001031 011012 011011 021200 021213 004004 008021 004024 055003 011012 011011 312207 3 312202 301202 033191 312208 17 301202 008022 008021 301011 301013 301023 302205 011002 001007 002021 301011 301013 301023 001032 001192 302205 011002 312209 11 301202 001192 301011 301013 301023 302206 104000 022192 102000 005232 022191 312210 13 312202 021192 015202 301011 004004 004005 201138 202131 004006 201000 202000 304228 304229 312211 19 301046 301011 301013 301023 312031 101004 312030 021110 101004 312212 021111 101004 312212 021112 101004 312212 021113 101004 312212 312212 2 301023 321027 313009 4 021001 101000 031001 021001 313010 4 021036 101000 031001 021036 313031 5 006002 006012 101000 031002 030001 313032 5 005002 005012 101000 031002 313031 313041 13 006002 110000 031001 104000 031001 006012 101000 031012 030001 006012 101000 031001 030001 313042 5 005002 005012 101000 031002 313041 313043 16 006002 005002 005012 112000 031001 110000 031001 104000 031001 006012 101000 031011 030001 101000 031001 030001 315001 5 001011 301011 301012 301023 306001 315002 5 001011 301011 301012 301023 306004 316001 10 301011 004004 301023 001021 002041 019001 010051 019002 019003 019004 316002 15 008021 004001 004002 004003 004004 004005 001033 008021 004001 004002 004003 004004 004005 007002 007002 316003 12 110000 031001 008011 008007 104000 031001 005002 006002 010002 011002 008007 008011 316004 13 111000 031001 008011 008007 007002 007002 102000 031001 005002 006002 011031 008007 008011 316005 10 108000 031001 008005 008007 005002 006002 001026 019001 008007 008005 316006 14 112000 031001 008011 008007 007002 007002 102000 031001 005002 006002 020011 020012 008007 008011 316007 12 110000 031001 008011 008007 104000 031001 005002 006002 019005 019006 008007 008011 316008 13 111000 031001 008001 008007 008023 103000 031001 005002 006002 010002 008023 008007 008001 316009 13 111000 031001 008011 008007 007002 007002 102000 031001 005002 006002 020041 008007 008011 316010 9 107000 031001 008011 008007 001022 005002 006002 008007 008011 316011 19 116000 031001 008011 001022 008007 102000 031001 005002 006002 008021 004001 004002 004003 004004 004005 020090 008021 008007 008011 316022 24 001032 002041 019001 019010 118000 031001 008021 004014 008005 301023 019005 019006 010004 011041 008021 004075 011040 019008 105004 005021 005021 102002 019003 019004 318001 2 301025 024011 318003 4 301026 024005 024004 024021 318004 6 301025 004023 013011 024005 024004 024022 321001 6 002101 002114 002105 002106 002107 002121 321003 4 021051 021014 021017 021030 321004 5 301031 002003 101000 031001 321003 321005 12 025004 002121 002122 002123 002124 002125 002126 002127 002128 002129 002130 002131 321006 4 025001 025002 025003 025005 321007 8 025009 025010 025011 025012 025013 025015 025016 025017 321008 3 025006 025007 025008 321009 2 025018 025019 321010 13 002101 007002 002102 002103 002104 002105 002106 002107 002108 002109 002110 002132 002133 321011 3 030031 030032 029002 321012 3 101000 031001 002135 321021 15 002003 002101 201130 002106 201000 201132 202130 002121 202000 201000 201133 202129 025001 202000 201000 321022 11 010007 204001 031021 011001 204000 011002 204001 031021 011006 204000 021030 321023 9 007007 021091 021030 202129 021014 201129 021017 202000 201000 321024 7 007007 204002 031021 012007 011006 204000 021030 321025 17 007007 021091 021030 202129 021014 201129 021017 202000 201000 021092 021030 025092 201129 202129 021017 202000 201000 321026 10 010007 204001 031021 012007 025091 011071 011072 011073 011074 204000 321027 18 021118 202129 201132 002112 201000 201131 002111 201000 202000 002104 021105 021106 021107 021114 021115 021116 008018 021117 321028 18 021118 202129 201132 002112 201000 201131 002111 201000 202000 002104 021123 021106 021107 021114 021115 021116 008018 021117 dballe-7.21/tables/D990203.txt0000644000175000017500000052523113022043102012467 00000000000000 D00002 2 B00002 B00003 D00003 3 B00010 B00011 B00012 D00004 9 D00003 B00013 B00014 B00015 B00016 B00017 B00018 B00019 B00020 D00010 3 D00003 R01000 B00030 D01001 2 B01001 B01002 D01002 3 B01003 B01004 B01005 D01003 3 B01011 B01012 B01013 D01004 4 B01001 B01002 B01015 B02001 D01011 3 B04001 B04002 B04003 D01012 2 B04004 B04005 D01013 3 B04004 B04005 B04006 D01021 2 B05001 B06001 D01022 3 B05001 B06001 B07001 D01023 2 B05002 B06002 D01024 3 B05002 B06002 B07001 D01025 3 D01023 B04003 D01012 D01026 7 D01021 B04003 B04003 B04004 B04004 B04005 B04005 D01029 3 B01018 B02001 D01011 D01030 4 B01018 B02001 D01011 D01024 D01031 5 D01001 B02001 D01011 D01012 D01022 D01032 5 D01001 B02001 D01011 D01012 D01024 D01033 5 B01005 B02001 D01011 D01012 D01021 D01034 5 B01005 B02001 D01011 D01012 D01023 D01035 7 B01005 B01012 B01013 B02001 D01011 D01012 D01023 D01036 5 D01003 B02001 D01011 D01012 D01023 D01037 6 D01001 B02011 B02012 D01011 D01012 D01022 D01038 6 D01001 B02011 B02012 D01011 D01012 D01024 D01039 6 D01003 B02011 B02012 D01011 D01012 D01023 D01040 6 D01003 B02011 B02012 D01011 D01012 D01024 D01041 5 B01007 B02021 B02022 D01011 D01012 D01042 2 D01041 D01021 D01043 5 B01007 B02023 D01011 D01013 D01021 D01044 5 B01007 B02024 D01011 D01013 D01021 D01049 5 B02111 B02112 B21062 B21063 B21065 D01051 6 B01006 B02061 D01011 D01012 D01021 B08004 D01055 7 B01005 B02001 D01011 D01012 D01021 B01012 B01014 D01062 2 R01000 D01001 D01065 8 B01006 B01008 B02001 B02002 B02005 B02062 B02070 B02065 D01066 6 D01011 D01013 D01023 B07004 B02064 B08004 D01070 3 B02143 B02142 B02144 D01071 5 B01007 B01031 B02020 B02028 B02029 D01072 4 D01071 D01011 D01013 D01021 D01074 4 B02143 B02142 B02145 B02146 D01075 6 D01001 B01015 D01024 B08021 D01011 D01012 D01076 3 B02011 B02143 B02142 D01090 6 D01004 D01011 D01012 D01021 B07030 B07031 D01091 10 B02180 B02181 B02182 B02183 B02184 B02179 B02186 B02187 B02188 B02189 D01193 5 001007 001031 002196 002221 002222 D01250 4 D01193 D01011 D01013 D01021 D02001 4 B10004 B10051 B10061 B10063 D02002 5 B10004 B07004 B10003 B10061 B10063 D02003 9 B11011 B11012 B12004 B12006 B13003 B20001 B20003 B20004 B20005 D02004 7 B20010 B08002 B20011 B20013 B20012 B20012 B20012 D02005 4 B08002 B20011 B20012 B20013 D02006 4 B10004 B10051 B10062 B10063 D02011 3 D02001 D02003 D02004 D02012 3 D02002 D02003 D02004 D02013 4 D02006 D02003 R01000 D02005 D02021 3 B22001 B22011 B22021 D02022 3 B22002 B22012 B22022 D02023 3 B22003 B22013 B22023 D02024 3 D02022 R01002 D02023 D02051 12 B10004 B10051 B07004 B10003 B12004 B12051 B12016 B12017 B13004 R02004 B08051 B08020 D02069 4 B07032 B07033 B33041 B20001 D02070 8 B07032 B07033 B11001 B11002 B11043 B11041 B11016 B11017 D02071 14 B07032 B07033 B08021 B04025 B11001 B11002 B08021 R03002 B04025 B11043 B11041 B04025 B11016 B11017 D02072 5 B07032 B07033 B12101 B12103 B13003 D02073 7 B20010 R05004 B08002 B20011 B20012 B33041 B20013 D02074 4 B20003 B04025 B20004 B20005 D02075 5 B08021 B04025 B13055 B13058 B08021 D02076 7 B02021 B20022 B26020 B20023 B20024 B20025 B20026 D02077 12 B07032 B07033 B04025 B12111 B12112 B07032 B04025 B12112 B02176 B20062 B02177 B13013 D02078 4 B02176 B20062 B02177 B13013 D02079 5 B07032 B02175 B02178 B04025 B13011 D02080 3 B02185 B04025 B13033 D02081 2 B04025 B14031 D02082 7 B04025 B14002 B14004 B14016 B14028 B14029 B14030 D02083 8 B04025 B08023 B10004 B11001 B11002 B12101 B13003 B08023 D03001 3 B07003 B11001 B11002 D03002 3 B07004 B11001 B11002 D03003 4 B07004 B10003 B12001 B12003 D03004 6 B07004 B10003 B12001 B12003 B11001 B11002 D03011 4 B07003 B08001 B11001 B11002 D03012 4 B07004 B08001 B11001 B11002 D03013 7 B07004 B08001 B10003 B12001 B13003 B11001 B11002 D03014 7 B07004 B08001 B10003 B12001 B12003 B11001 B11002 D03031 6 B07004 B08003 B07021 B07022 B08012 B12061 D03032 2 B20011 B20016 D03033 2 B20010 B20016 D03041 8 B02152 B02023 B07004 B11001 B11002 B02153 B02154 B12071 D03250 8 B02252 B02023 B07004 B11001 B11002 B02197 B02198 B12193 D04001 5 B08003 B10004 B12001 B11001 B11002 D04002 4 B08003 B10004 B11001 B11002 D04003 2 B08003 B12001 D04004 4 B08003 B10004 B20010 B12001 D04005 4 B02024 B07004 B07004 B13003 D04006 3 B14001 B14001 B14003 D04011 27 B02163 B02164 B08012 B07024 B02057 B08021 B04001 B04002 B04003 B04004 B08021 B04024 R10004 B08021 B04004 B04005 B04006 B08021 B04004 B04005 B04006 B11001 B11002 R03010 B02163 B07004 B12001 D04030 3 B27031 B28031 B10031 D04031 3 B01041 B01042 B01043 D04032 5 B02153 B02154 B20081 B20082 B20012 D04033 8 B02152 B02166 B02167 B02153 B02154 B12075 B12076 B12063 D04034 9 R02004 B27001 B28001 B07022 B05043 B20010 B20016 B33003 B10040 D04250 27 B02231 B02232 B08012 B07024 B02057 B08021 B04001 B04002 B04003 B04004 B08021 B04024 R10004 B08021 B04004 B04005 B04006 B08021 B04004 B04005 B04006 B11001 B11002 R03010 B02231 B07004 B12001 D05001 4 B11001 B11002 B13060 B13071 D05002 11 D01012 B12001 B13003 B14051 B13060 B13072 B13080 B13081 B13082 B13083 B13084 D05003 4 D01012 B04065 R01000 D05001 D05004 3 D01030 D05002 D05003 D05006 8 B13072 B13082 B13019 C07005 C01004 B12001 B13073 B13060 D05007 5 D01029 D01012 B04065 R01000 D05006 D05008 4 D05006 C07005 C01004 B12030 D05009 5 D01029 D01012 B04065 R01000 D05008 D05010 3 D05008 B02091 B02091 D05011 5 D01029 D01012 B04065 R01000 D05010 D05016 7 B14021 B07004 B13003 B11002 B11001 B11041 B11043 D05017 5 B13080 B13081 B13083 B13085 B13084 D05018 7 D01029 D01012 B04065 R03000 D05008 D05016 D05017 D06001 4 B02032 R02000 B07062 B22042 D06002 3 B02031 B22004 B22031 D06003 4 B02002 B11011 B11012 B12004 D06004 6 B02032 B02033 R03000 B07062 B22043 B22062 D06005 5 B02031 R03000 B07062 B22004 B22031 D06006 3 D06003 D06002 B22063 D06007 6 B01012 B01014 D06008 B04024 B27003 B28003 D06008 3 B02034 B02035 B02036 D06020 8 B01075 D01011 D01012 B22042 B22120 B22121 B04075 B04065 D06021 7 B01075 D01011 D01012 B22122 B22123 B12001 D03002 D06022 5 B01075 D01011 D01012 B22038 B22039 D06023 8 B01015 D01023 D01011 D01012 B22038 B22039 B22120 B22121 D06024 4 D06020 R02000 B22038 B22039 D07001 2 D01031 D02011 D07002 2 D01032 D02011 D07003 3 D07001 R01000 D02005 D07004 3 D07002 R01000 D02005 D07005 3 D07001 R01004 D02005 D07006 3 D07002 R01004 D02005 D07007 2 D01031 D02012 D07008 2 D01032 D02012 D07009 2 D01031 D02013 D07011 16 B01063 B02001 D01011 D01012 D01024 B07006 B11001 B11016 B11017 B11002 B11041 B07006 B12001 B12003 B10052 B20009 D07012 4 R03000 B08023 B05021 B20001 D07013 7 R06000 B01064 B08014 B20061 B08014 B20061 B20018 D07014 2 R01000 B20019 D07015 3 R01000 D02005 B20002 D07016 2 R01000 B20020 D07017 2 R01000 B11070 D07018 13 B08016 R02000 B08017 D01012 R04000 B07006 B11001 B11002 B11041 B20009 R01000 B20001 D07014 D07020 3 D07011 D07014 D07016 D07021 9 D07011 D07012 D07013 D07014 D07015 D07016 D07017 D07018 D07015 D07030 2 B15001 B15002 D07031 7 B08022 B08023 B15001 B08023 B15001 B08023 B15002 D07041 7 D01001 B01015 D01024 D01011 D01012 D01070 D07030 D07042 9 D01001 B01015 D01024 D01011 D01012 B08021 B04025 D01070 D07031 D07043 7 D01001 B01015 D01024 D01011 D01012 D01074 D07030 D07044 9 D01001 B01015 D01024 D01011 D01012 B08021 B04025 D01074 D07031 D07060 2 B07061 B12030 D07061 3 D01031 R01005 D07060 D07062 3 D01032 R01005 D07060 D07063 2 B07061 B12130 D08001 3 D01033 D02011 B22042 D08002 3 D01034 D02011 B22042 D08003 3 D01035 D02011 B22042 D08004 3 D01036 D02011 B22042 D08005 2 D08004 D02024 D08006 8 B10004 B10061 B10063 B11001 B11002 B12004 B13003 B22042 D08007 4 D01055 D02011 B07062 B22042 D09001 3 D01037 R01000 D03011 D09002 3 D01038 R01000 D03011 D09003 3 D01037 R01000 D03012 D09004 3 D01038 R01000 D03012 D09005 4 D01037 D02004 R01000 D03013 D09006 4 D01038 D02004 R01000 D03013 D09007 4 D01037 D02004 R01000 D03014 D09008 4 D01038 D02004 R01000 D03014 D09011 3 D01039 R01000 D03011 D09012 3 D01039 R01000 D03012 D09013 4 D01039 D02004 R01000 D03013 D09014 4 D01039 D02004 R01000 D03014 D09015 3 D01040 R01000 D03011 D09016 3 D01040 R01000 D03012 D09017 4 D01040 D02004 R01000 D03013 D09018 4 D01040 D02004 R01000 D03014 D09019 4 D01031 B02003 R01000 D03011 D09020 7 D01031 B02003 R04000 B07003 B11003 B11004 B11005 D09030 7 B15004 B15005 R04000 B04015 B08006 B07004 B15003 D09040 3 D01075 D01076 D09030 D09041 4 D07041 D01075 D01076 D09030 D09042 4 D07042 D01075 D01076 D09030 D09044 4 D07044 D01075 D01076 D09030 D10001 5 D01042 D03031 D03032 R01026 D03025 D10002 5 D01042 D03031 D03032 R01009 D03023 D10003 5 D01042 D03031 D03032 R01006 D03023 D10004 5 D01042 D03031 D03032 R01003 D03024 D10005 5 D01042 D03031 D03033 R01000 D03025 D10006 5 D01042 D03031 D03033 R01000 D03023 D10007 5 D01042 D03031 D03033 R01000 D03024 D10008 8 D10011 R01019 D10012 B02150 B25079 B25080 B33032 B14045 D10009 3 D10011 R01015 D10012 D10010 3 D10011 R01005 D10012 D10014 3 D01072 D03041 D04011 D10015 13 D01072 B07024 B10002 D03041 R01003 D04032 B02152 B02024 B07004 B07004 B13003 R01003 D04033 D10016 13 D01072 B07024 B10002 D03041 R01012 D04032 B02152 B02024 B07004 B07004 B13003 R01012 D04033 D10020 6 D10022 D01011 D01013 D01021 D04034 D10021 D10022 4 B01007 B02019 B01033 B02172 D10023 17 D01072 B30021 B30022 B08012 B07024 B07025 B10002 R01012 D04032 R05002 B02152 B02024 B07004 B07004 B13003 R01012 D04033 D10050 13 D10051 D10052 R01000 D10053 R01004 D10054 B20010 D10052 R01015 D10053 D10052 R01004 D10053 D10195 3 D01250 D03250 D04250 D11001 9 D01051 B07002 B12001 B11001 B11002 B11031 B11032 B11033 B20041 D11002 4 D01065 D01066 D11003 D11004 D11003 5 B10070 B11001 B11002 B12001 B13002 D11004 12 R01000 B11034 R01000 B11035 R01000 B11075 R01000 B11076 R01000 B33025 R01000 B33026 D11005 13 B01008 B01023 D01021 D01011 D01013 B07010 B08009 B11001 B11002 B11031 B11036 B12101 B33025 D11006 6 B07010 B11001 B11002 B02064 B12101 B12103 D11193 16 D01197 D01011 D01012 D01023 B08004 B07004 B08021 B11001 B11002 B11031 B11034 B11035 B12001 B12003 B13003 B20041 D12001 2 D01043 D04001 D12002 2 D01043 D04002 D12003 2 D01042 D04003 D12004 2 D01042 D04004 D12005 2 D01042 B20014 D12006 2 D01044 D04005 D12007 2 D01042 D04006 D12010 6 B01007 B05040 B02021 B05041 B04001 B04043 D12014 8 D12010 D12011 R05056 D01023 B05042 B05052 D12012 D12013 D12016 3 D12010 D12011 D12015 D12018 3 D12010 D12011 D12017 D12020 11 D01047 D01048 B15015 B29002 B21076 R04012 B06030 R02012 B05030 B21075 B21066 D12021 6 D01047 R01003 D01049 B11012 B11011 B21067 D12022 15 D01047 B08022 B11012 B11050 B22070 B22026 D12041 B10050 B21068 B21071 B21072 B21073 D12042 B21062 B15011 D12023 7 D01047 R03003 B08022 B12061 B22050 B21069 B21085 D12024 11 D12020 B08060 B08022 B08060 B08022 B25014 B22101 B22097 B22098 B22099 B22100 D12025 11 D12019 B08060 B08022 B08060 B08022 B25014 B22101 B22097 B22098 B22099 B22100 D12026 19 D01046 D01011 D01013 D01023 D12031 R01004 D12030 B21110 D01023 D21027 B21111 D01023 D21027 B21112 D01023 D21027 B21113 D01023 D21027 D12027 9 D01047 R05009 D01023 B07021 B12061 B07021 B12061 B21085 B21070 D12031 8 B05034 B06034 B21109 B11081 B11082 B21101 B21102 B21103 D12032 4 B21120 B21121 B13055 B21122 D12033 4 B02104 B08022 B12063 B12065 D12042 6 B21077 B21078 B21079 B21080 B21081 B21082 D12045 21 B01007 B02019 B01096 B25061 B05040 D01011 D01013 D01021 B07002 B12180 B12181 B12182 B12183 B12184 B12185 B02174 B21086 B12186 B21087 B12187 B33043 D13009 3 B21001 R01000 B21001 D13010 3 B21036 R01000 B21036 D13031 4 B06002 B06012 R01000 B30001 D13032 4 B05002 B05012 R01000 D13031 D13041 9 B06002 R10000 R04000 B06012 R01000 B30001 B06012 R01000 B30001 D13042 4 B05002 B05012 R01000 D13041 D13043 11 B06002 B05002 B05012 R12000 R10000 R04000 B06012 R01000 B30001 R01000 B30001 D15001 5 B01011 D01011 D01012 D01023 D06001 D15002 5 B01011 D01011 D01012 D01023 D06004 D16001 10 D01011 B04004 D01023 B01021 B02041 B19001 B10051 B19002 B19003 B19004 D16002 15 B08021 B04001 B04002 B04003 B04004 B04005 B01033 B08021 B04001 B04002 B04003 B04004 B04005 B07002 B07002 D16003 10 R09000 B08011 B08007 R04000 B05002 B06002 B10002 B11002 B08007 B08011 D16004 11 R10000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B11031 B08007 B08011 D16005 9 R08000 B08005 B08007 B05002 B06002 B01026 B19001 B08007 B08005 D16006 12 R11000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B20011 B20012 B08007 B08011 D16007 10 R09000 B08011 B08007 R04000 B05002 B06002 B19005 B19006 B08007 B08011 D16008 11 R10000 B08001 B08007 B08023 R03000 B05002 B06002 B10002 B08023 B08007 B08001 D16009 11 R10000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B20041 B08007 B08011 D16010 8 R07000 B08011 B08007 B01022 B05002 B06002 B08007 B08011 D16011 17 R16000 B08011 B01022 B08007 R02000 B05002 B06002 B08021 B04001 B04002 B04003 B04004 B04005 B20090 B08021 B08007 B08011 D16020 5 B01023 B01025 B01027 D01011 D01012 D16021 23 D01023 B02041 B19001 B19007 B19005 B19006 B19008 B08005 B10004 B08005 B10004 B19007 B08005 B08021 B04075 B11040 B19007 R05004 B05021 B05021 R02002 B19003 B19004 D16022 23 B01032 B02041 B19001 B19010 R18000 B08021 B04014 B08005 D01023 B19005 B19006 B10004 B11041 B08021 B04075 B11040 B19008 R05004 B05021 B05021 R02002 B19003 B19004 D16026 2 D16020 D16021 D18001 2 D01025 B24011 D18003 4 D01026 B24005 B24004 B24021 D18004 6 D01025 B04023 B13011 B24005 B24004 B24022 D21001 6 B02101 B02114 B02105 B02106 B02107 B02121 D21003 4 B21051 B21014 B21017 B21030 D21004 4 D01031 B02003 R01000 D21003 D21005 12 B25004 B02121 B02122 B02123 B02124 B02125 B02126 B02127 B02128 B02129 B02130 B02131 D21006 4 B25001 B25002 B25003 B25005 D21007 8 B25009 B25010 B25011 B25012 B25013 B25015 B25016 B25017 D21008 3 B25006 B25007 B25008 D21009 2 B25018 B25019 D21010 13 B02101 B07002 B02102 B02103 B02104 B02105 B02106 B02107 B02108 B02109 B02110 B02132 B02133 D21011 3 B30031 B30032 B29002 D21012 2 R01000 B02135 D35001 4 B08035 B35001 B08036 D01001 D35002 4 B08035 B35001 B08036 B01033 D35003 6 B08021 B04001 B04002 B04003 B04004 B04073 D35004 7 B08021 B04004 B08021 B04004 B35000 D01001 B35011 D35005 7 B08021 B04004 B08021 B04004 B35000 B01001 B35011 D35006 7 B08021 B04004 B08021 B04004 B35000 B01003 B35011 D35007 9 B08021 B04004 B08021 B04004 B35000 B01001 R02000 B01002 B35011 D35010 3 D35002 D35003 D35007 dballe-7.21/tables/B0000000000200014001.txt0000644000175000017500000017132013022503466013640 00000000000000 001001 WMO BLOCK NUMBER NUMERIC 0 0 7 001002 WMO STATION NUMBER NUMERIC 0 0 10 001006 AIRCRAFT FLIGHT NUMBER CCITTIA5 0 0 64 001007 SATELLITE IDENTIFIER CODE TABLE 1007 0 0 10 001008 AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION CCITTIA5 0 0 64 001011 SHIP OR MOBILE LAND STATION IDENTIFIER CCITTIA5 0 0 72 001012 DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM** DEGREE TRUE 0 0 9 001013 SPEED OF MOTION OF MOVING OBSERVING PLATFORM* M/S 0 0 10 001019 LONG STATION OR SITE NAME CCITTIA5 0 0 256 001023 OBSERVATION SEQUENCE NUMBER NUMERIC 0 0 9 001033 IDENTIFICATION OF ORIGINATING/GENERATING CENTRE CODE TABLE 001033 0 0 8 001034 IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE CODE TABLE 001034 0 0 8 001063 ICAO LOCATION INDICATOR CCITTIA5 0 0 64 001192 [SIM] MeteoDB station ID NUMERIC 0 0 24 001193 [SIM] Report code NUMERIC 0 0 16 001194 [SIM] Report mnemonic CCITTIA5 0 0 128 001212 AIR QUALITY OBSERVING STATION LOCAL CODE CCITTIA5 0 0 56 001213 AIRBASE AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 56 001214 GEMS AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 48 001215 AIR QUALITY OBSERVING STATION DOMINANT EMISSION SOURCE CODE TABLE 001215 0 0 3 001216 AIR QUALITY OBSERVING STATION AREA TYPE CODE TABLE 001216 0 0 3 001217 AIR QUALITY OBSERVING STATION TERRAIN TYPE CODE TABLE 001217 0 0 4 002001 TYPE OF STATION CODE TABLE 2001 0 0 2 002002 TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT FLAG TABLE 2002 0 0 4 002003 TYPE OF MEASURING EQUIPMENT USED CODE TABLE 2003 0 0 4 002004 TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C CODE TABLE 2004 0 0 4 002005 PRECISION OF TEMPERATURE OBSERVATION K 2 0 7 002011 RADIOSONDE TYPE CODE TABLE 2011 0 0 8 002012 RADIOSONDE COMPUTATIONAL METHOD CODE TABLE 2012 0 0 4 002013 SOLAR AND INFRARED RADIATION CORRECTION CODE TABLE 2013 0 0 4 002014 TRACKING TECHNIQUE/STATUS OF SYSTEM USED CODE TABLE 2014 0 0 7 002038 METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT CODE TABLE 2038 0 0 4 002039 METHOD OF WET-BULB TEMPERATURE MEASUREMENT CODE TABLE 2039 0 0 3 002048 SATELLITE SENSOR INDICATOR CODE TABLE 2048 0 0 4 002061 AIRCRAFT NAVIGATIONAL SYSTEM CODE TABLE 2061 0 0 3 002062 TYPE OF AIRCRAFT DATA RELAY SYSTEM CODE TABLE 2062 0 0 4 002063 AIRCRAFT ROLL ANGLE DEGREE 2 -18000 16 002064 AIRCRAFT ROLL ANGLE QUALITY CODE TABLE 2064 0 0 2 002070 ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE CODE TABLE 2070 0 0 4 002121 MEAN FREQUENCY Hz -8 0 7 002125 PULSE REPETITION FREQUENCY Hz -1 0 8 004001 YEAR YEAR 0 0 12 004002 MONTH MONTH 0 0 4 004003 DAY DAY 0 0 6 004004 HOUR HOUR 0 0 5 004005 MINUTE MINUTE 0 0 6 004006 SECOND SECOND 0 0 6 004086 LONG TIME PERIOD OR DISPLACEMENT SECOND 0 -8192 15 004192 [SIM] Time range type NUMERIC 0 0 10 004193 [SIM] Time range P1 NUMERIC 0 -536870912 31 004194 [SIM] Time range P2 NUMERIC 0 -536870912 31 004195 [SIM] Temperature event - time of occurrence MINUTE 0 0 11 004196 [SIM] Relative humidity event - time of occurrence MINUTE 0 0 11 004197 [SIM] Wind velocity event - time of occurrence MINUTE 0 0 11 004198 [SIM] Pressure event - time of occurrence MINUTE 0 0 11 005001 LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 005015 LATITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -9000000 25 005021 BEARING OR AZIMUTH DEGREE TRUE 2 0 16 005022 SOLAR AZIMUTH DEGREE TRUE 2 0 16 005040 ORBIT NUMBER NUMERIC 0 0 24 005041 SCAN LINE NUMBER NUMERIC 0 0 8 005043 FIELD OF VIEW NUMBER NUMERIC 0 0 8 006001 LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 006015 LONGITUDE DISPLACEMENT (HIGH ACCURACY) DEGREE 5 -18000000 26 007002 HEIGHT OR ALTITUDE M -1 -40 16 007004 PRESSURE PA -1 0 14 007007 HEIGHT M 0 -1000 17 007010 FLIGHT LEVEL M 0 -1024 16 007024 SATELLITE ZENITH ANGLE DEGREE 2 -9000 15 007025 SOLAR ZENITH ANGLE DEGREE 2 -9000 15 007030 HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3) M 1 -4000 17 007031 HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4) M 1 - 4000 17 007032 HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) M 2 0 16 007192 [SIM] First level type NUMERIC 0 0 10 007193 [SIM] Level L1 NUMERIC 0 -536870912 31 007194 [SIM] Level L2 NUMERIC 0 -536870912 31 007195 [SIM] Second level type NUMERIC 0 0 31 008002 VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS) CODE TABLE 8002 0 0 6 008004 PHASE OF AIRCRAFT FLIGHT CODE TABLE 8004 0 0 3 008009 DETAILED PHASE OF FLIGHT CODE TABLE 8009 0 0 4 008021 TIME SIGNIFICANCE CODE TABLE 8021 0 0 5 008042 EXTENDED VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8042 0 0 18 008044 (VAL) CAS REGISTRY NUMBER CCITTIA5 0 0 88 008192 [SIM] Number of wind velocity mean values present NUMERIC 0 0 5 008193 [SIM] Number of wind velocity minimum values present NUMERIC 0 0 5 008194 [SIM] Number of wind velocity maximum values present NUMERIC 0 0 5 008195 [SIM] Number of wind prevalent direction values present NUMERIC 0 0 5 008196 [SIM] Number of mean temperature values present NUMERIC 0 0 5 008197 [SIM] Number of minimum temperature values present NUMERIC 0 0 5 008198 [SIM] Number of maximum temperature values present NUMERIC 0 0 5 008199 [SIM] Number of mean relative humidity values present NUMERIC 0 0 5 008200 [SIM] Number of minimum relative humidity values present NUMERIC 0 0 5 008201 [SIM] Number of maximum relative humidity values present NUMERIC 0 0 5 008202 [SIM] Number of mean pressure values present NUMERIC 0 0 5 008203 [SIM] Number of minimum pressure values present NUMERIC 0 0 5 008204 [SIM] Number of maximum pressure values present NUMERIC 0 0 5 008205 [SIM] Number of precipitation values present NUMERIC 0 0 5 008206 [SIM] Number of leaf wetness values present NUMERIC 0 0 5 008207 [SIM] Number of scalar wind velocity mean values present NUMERIC 0 0 5 008208 [SIM] Number of cloud cover mean values present NUMERIC 0 0 5 008209 [SIM] Number of cloud cover maximum values present NUMERIC 0 0 5 008210 [SIM] Number of cloud cover minimum values present NUMERIC 0 0 5 010004 PRESSURE PA -1 0 14 010007 HEIGHT M 0 -1000 17 010008 GEOPOTENTIAL M**2/S**2 0 -10000 20 010009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 010051 PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 010052 ALTIMETER SETTING (QNH) PA -1 0 14 010060 PRESSURE CHANGE PA -1 -1024 11 010063 CHARACTERISTIC OF PRESSURE TENDENCY CODE TABLE 10063 0 0 4 010197 ANEMOMETER HEIGHT M 0 0 9 011001 WIND DIRECTION DEGREE TRUE 0 0 9 011002 WIND SPEED M/S 1 0 12 011003 U-COMPONENT M/S 1 -4096 13 011004 V-COMPONENT M/S 1 -4096 13 011005 W-COMPONENT PA/S 1 -512 10 011006 W-COMPONENT M/S 2 -4096 13 011016 EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 011017 EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 011031 DEGREE OF TURBULENCE CODE TABLE 11031 0 0 4 011036 MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED M/S 1 0 10 011037 TURBULENCE INDEX CODE TABLE 11037 0 0 6 011039 EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE CODE TABLE 11039 0 0 6 011041 MAXIMUM WIND GUST SPEED M/S 1 0 12 011043 MAXIMUM WIND GUST DIRECTION DEGREE TRUE 0 0 9 011050 STANDARD DEVIATION OF HORIZONTAL WIND SPEED M/S 1 0 12 011061 ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW M/S 1 0 12 011062 ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE M/S 1 0 12 011075 MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 011076 PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 011077 REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE S 0 0 12 011192 [SIM] W-component terrain following M/S 2 -4096 13 011193 [SIM] Stability class NUMERIC 0 0 4 011194 [SIM] Friction velocity (calmet) M/S 3 0 14 011195 [SIM] Mixing height (calmet) M 0 0 12 011196 [SIM] Obukov lenght (calmet) M 1 -100000 15 011197 [SIM] Convective velocitiy scale (calmet) M/S 3 0 14 011198 [SIM] SQRT(2*TKE) M/S 4 0 20 011199 [SIM] Surface Roughness M 3 0 14 011200 [SIM] U-component of momentum flux N/M**2 4 -524288 20 011201 [SIM] V-component of momentum flux N/M**2 4 -524288 20 011202 [SIM] Friction velocity (diagmet) M/S 3 0 14 011203 [SIM] Mixing height (diagmet) M 0 0 12 011204 [SIM] Obukov lenght (diagmet) M 1 -100000 15 011205 [SIM] Convective velocitiy scale (diagmet) M/S 3 0 14 011206 [SIM] Friction velocity (COSMO) M/S 3 0 14 011207 [SIM] Obukov lenght (COSMO) M 1 -100000 15 011208 [SIM] Distance covered by the hourly mean wind M 0 0 23 012001 TEMPERATURE/AIR TEMPERATURE K 1 0 12 012003 DEW-POINT TEMPERATURE K 1 0 12 012030 SOIL TEMPERATURE K 1 0 12 012049 Temperature change over specified period K 0 -30 6 012061 SKIN TEMPERATURE K 1 0 12 012063 BRIGHTNESS TEMPERATURE K 1 0 12 012101 TEMPERATURE/DRY-BULB TEMPERATURE K 2 0 16 012102 WET-BULB TEMPERATURE K 2 0 16 012103 DEW-POINT TEMPERATURE K 2 0 16 012121 GROUND MINIMUM TEMPERATURE K 2 0 16 012131 SNOW TEMPERATURE K 2 0 16 012192 POTENTIAL TEMPERATURE K 2 0 16 012193 PSEUDO-EQUIVALENT POTENTIAL TEMPERATURE K 2 0 16 012194 [SIM] Air density KG/M**3 6 0 20 013001 SPECIFIC HUMIDITY KG/KG 5 0 14 013002 MIXING RATIO KG/KG 5 0 14 013003 RELATIVE HUMIDITY % 0 0 7 013011 TOTAL PRECIPITATION / TOTAL WATER EQUIVALENT KG/M**2 1 -1 14 013012 DEPTH OF FRESH SNOW M 2 -2 12 013013 TOTAL SNOW DEPTH M 3 -20 20 013031 EVAPOTRANSPIRATION KG/M**2 1 0 7 013033 EVAPORATION/EVAPOTRANSPIRATION KG/M**2 1 0 10 013080 WATER PH pH 1 0 10 013081 WATER CONDUCTIVITY S/M 3 0 14 013082 WATER TEMPERATURE K 1 0 12 013083 DISSOLVED OXYGEN KG/M**3 6 0 15 013192 [SIM] Cloud liquid water content KG/KG 8 0 27 013193 [SIM] Cloud ice content KG/KG 8 0 27 013194 [SIM] Water table depth M 3 0 18 013195 [SIM] Precipitating liquid water KG/KG 8 0 27 013196 [SIM] Precipitating ice KG/KG 8 0 27 013197 [SIM] Total precipitating water+ice KG/KG 8 0 27 013198 [SIM] Total liquid water (cloud+precipitating) KG/KG 8 0 27 013199 [SIM] Total ice (cloud+precipitating) KG/KG 8 0 27 013200 [SIM] Grid-scale liquid precipitation KG/M**2 1 -1 14 013201 [SIM] Grid-scale snowfall KG/M**2 1 -1 14 013202 [SIM] Convective liquid precipitation KG/M**2 1 -1 14 013203 [SIM] Convective snowfall KG/M**2 1 -1 14 013204 [SIM] Total convective precipitation (liquid + snow) KG/M**2 1 -1 14 013205 [SIM] Snowfall (grid-scale + convective) KG/M**2 1 -1 14 013206 [SIM] Soil water content KG/M**2 1 0 14 013210 [SIM] Penetration of the probe in the snow M 2 0 9 013212 [SIM] Leaf wetness duration S -1 0 24 013215 [SIM] River level M 2 -100000 18 013216 [SIM] Hourly precipitation KG/M**2 1 -1 14 013217 [SIM] 5 minutes precipitation KG/M**2 1 -1 14 013218 [SIM] 10 minutes precipitation KG/M**2 1 -1 14 013219 [SIM] 15 minutes precipitation KG/M**2 1 -1 14 013220 [SIM] 20 minutes precipitation KG/M**2 1 -1 14 013221 [SIM] 30 minutes precipitation KG/M**2 1 -1 14 013222 [SIM] 180 minutes precipitation KG/M**2 1 -1 14 013223 [SIM] 360 minutes precipitation KG/M**2 1 -1 14 013224 [SIM] 720 minutes precipitation KG/M**2 1 -1 14 013225 [SIM] 1440 minutes precipitation KG/M**2 1 -1 14 013226 [SIM] River discharge M**3/S 2 0 21 013227 [SIM] Soil volumetric water content % 1 0 10 013228 [SIM] Piezometric level M 3 0 18 013229 [SIM] Density of snow KG/M**3 1 0 14 013230 [SIM] Convective Available Potential Energy (CAPE) J/KG 1 0 17 013231 [SIM] Ossigeno disciolto sat % 1 0 10 014002 Long-wave radiation, integrated over period specified J M-2 -3 -65536 17 014004 Short-wave radiation, integrated over period specified J M-2 -3 -65536 17 014016 NET RADIATION J/M**2 -4 -16384 15 014017 INSTANTANEOUS LONG-WAVE RADIATION (incoming) W/M**2 0 -2048 12 014018 INSTANTANEOUS SHORT-WAVE RADIATION (incoming) W/M**2 0 -2048 12 014019 SURFACE ALBEDO % 0 0 7 014021 GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 014028 Global solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 014029 Diffuse solar radiation (high accuracy), integrated over period J M-2 -2 0 20 014030 Direct solar radiation (high accuracy), integrated over period s J M-2 -2 0 20 014031 TOTAL SUNSHINE MINUTE 0 0 11 014192 [SIM] Instantenous sensible heat flux W/m**2 0 -1024 11 014193 [SIM] Instantenous latent heat flux W/m**2 0 -1024 11 014194 [SIM] Instantenous direct solar radiation W/M**2 0 -2048 12 014195 [SIM] Instantenous diffuse solar radiation W/M**2 0 -2048 12 014196 [SIM] INSTANTANEOUS NET LONG-WAVE RADIATION W/M**2 0 -2048 12 014197 [SIM] INSTANTANEOUS NET SHORT-WAVE RADIATION W/M**2 0 -2048 12 014198 [SIM] Visible radiation (downward) W/M**2 3 -50000 21 014199 [SIM] Visible radiation (upward) W/M**2 3 -50000 21 014200 [SIM] Infrared radiation (downward) W/M**2 3 0 20 014201 [SIM] Infrared radiation (upward) W/M**2 3 0 20 015192 [SIM] NO Concentration KG/M**3 10 0 20 015193 [SIM] NO2 Concentration KG/M**3 10 0 20 015194 [SIM] O3 Concentration KG/M**3 10 0 20 015195 [SIM] PM10 Concentration KG/M**3 10 0 20 015196 [SIM] CO Concentration KG/M**3 10 0 20 015197 [SIM] SO2 Concentration KG/M**3 10 0 20 015198 [SIM] PM2.5 Concentration KG/M**3 10 0 20 015199 [SIM] NOY Concentration KG/M**3 10 0 20 015200 [SIM] HCNM Concentration KG/M**3 10 0 20 015201 [SIM] ALDE Concentration KG/M**3 10 0 20 015202 [SIM] PM5 Concentration (tot. aerosol < 5 ug) KG/M**3 10 0 20 015203 [SIM] PM1 Concentration (tot. aerosol < 1.25 ug) KG/M**3 10 0 20 015204 [SIM] PM06 Concentration (tot. aerosol < 0.6 ug) KG/M**3 10 0 20 015205 [SIM] PM03 Concentration (tot. aerosol < 0.3 ug) KG/M**3 10 0 20 015206 [SIM] PM015 Concentration (tot. aerosol < 0.15 ug) KG/M**3 10 0 20 015207 [SIM] PM008 Concentration (tot. aerosol < 0.08 ug) KG/M**3 10 0 20 015208 [SIM] Concentration of primary particulate matter in PM10 KG/M**3 10 0 20 015209 [SIM] Concentration of sulfate in PM10 KG/M**3 10 0 20 015210 [SIM] Concentration of nitrate in PM10 KG/M**3 10 0 20 015211 [SIM] Concentration of ammonium in PM10 KG/M**3 10 0 20 015212 [SIM] Concentration of black carbon in PM10 KG/M**3 10 0 20 015213 [SIM] Concentration of organic carbon in PM10 KG/M**3 10 0 20 015214 [SIM] Concentration of dust in PM10 KG/M**3 10 0 20 015215 [SIM] Concentration of anthrop. A1D in PM10 KG/M**3 10 0 20 015216 [SIM] Concentration of anthrop. BmP in PM10 KG/M**3 10 0 20 015217 [SIM] Concentration of biogenic A1D in PM10 KG/M**3 10 0 20 015218 [SIM] Concentration of biogenic BmP in PM10 KG/M**3 10 0 20 015219 [SIM] Concentration of water in PM10 KG/M**3 10 0 20 015220 [SIM] Concentration of sea salt in PM10 KG/M**3 10 0 20 015221 [SIM] Concentration of secondary organic aerosol in PM10 KG/M**3 10 0 20 015222 [SIM] Total concentration of primary aerosol in PM10 KG/M**3 10 0 20 015223 [SIM] Total concentration of secondary aerosol in PM10 KG/M**3 10 0 20 015224 [SIM] Uncertainity in O3 estimate (Pesco) KG/M**3 10 0 20 015225 [SIM] Uncertainity in PM10 estimate (Pesco) KG/M**3 10 0 20 015226 [SIM] Uncertainity in NO2 estimate (Pesco) KG/M**3 10 0 20 015227 [SIM] Uncertainity in PM2.5 estimate (Pesco) KG/M**3 10 0 20 015228 [SIM] NH3 Concentration KG/M**3 10 0 20 015229 [SIM] Concentration of primary part. matter in aerosol KG/M**3 10 0 20 015230 [SIM] Concentration of sulfate in aerosol KG/M**3 10 0 20 015231 [SIM] Concentration of nitrate in aerosol KG/M**3 10 0 20 015232 [SIM] Concentration of ammonium in aerosol KG/M**3 10 0 20 015233 [SIM] Concentration of anthrop. sec. org. in aerosol KG/M**3 10 0 20 015234 [SIM] Concentration of biogenic sec. org. in aerosol KG/M**3 10 0 20 015235 [SIM] Concentration of ISOPA1 in PM10 KG/M**3 10 0 20 015236 [SIM] C6H6 Concentration KG/M**3 10 0 20 015237 [SIM] Concentration of anthropogenic aerosol in PM10 KG/M**3 10 0 20 015238 [SIM] Concentration of biogenic aerosol in PM10 KG/M**3 10 0 20 015239 [SIM] Concentration of anthropogenic aerosol in PM2.5 KG/M**3 10 0 20 015240 [SIM] Concentration of biogenic aerosol in PM2.5 KG/M**3 10 0 20 015241 [SIM] Aerosol Optical Thickness NUMERIC 4 0 15 020001 HORIZONTAL VISIBILITY M -1 0 13 020003 PRESENT WEATHER (SEE NOTE 1) CODE TABLE 20003 0 0 9 020004 PAST WEATHER (1) (SEE NOTE 2) CODE TABLE 20004 0 0 5 020005 PAST WEATHER (2) (SEE NOTE 2) CODE TABLE 20005 0 0 5 020009 GENERAL WEATHER INDICATOR (TAF/METAR) CODE TABLE 20009 0 0 4 020010 CLOUD COVER (TOTAL) % 0 0 7 020011 CLOUD AMOUNT CODE TABLE 20011 0 0 4 020012 CLOUD TYPE CODE TABLE 20012 0 0 6 020013 HEIGHT OF BASE OF CLOUD M 0 -400 17 020017 CLOUD TOP DESCRIPTION CODE TABLE 20017 0 0 4 020019 SIGNIFICANT PRESENT OR FORECAST WEATHER CCITTIA5 0 0 72 020021 TYPE OF PRECIPITATION FLAG TABLE 20021 0 0 30 020031 ICE DEPOSIT (THICKNESS) M 2 0 7 020032 RATE OF ICE ACCRETION CODE TABLE 20032 0 0 3 020033 CAUSE OF ICE ACCRETION FLAG TABLE 20033 0 0 4 020034 SEA ICE CONCENTRATION CODE TABLE 20034 0 0 5 020035 AMOUNT AND TYPE OF ICE CODE TABLE 20035 0 0 4 020036 ICE SITUATION CODE TABLE 20036 0 0 5 020037 ICE DEVELOPMENT CODE TABLE 20037 0 0 5 020038 BEARING OF ICE EDGE (SEE NOTE 3) DEGREE TRUE 0 0 12 020042 AIRFRAME ICING PRESENT CODE TABLE 20042 0 0 2 020043 PEAK LIQUID WATER CONTENT KG/M**3 4 0 7 020044 AVERAGE LIQUID WATER CONTENT KG/M**3 4 0 7 020045 SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS CODE TABLE 20045 0 0 2 020062 STATE OF THE GROUND (WITH OR WITHOUT SNOW) CODE TABLE 20062 0 0 5 020192 [SIM] Presence of rain > 1mm BOOLEAN 0 0 1 020193 [SIM] Cloud type (METAR) CCITTIA5 0 0 16 020194 [SIM] Presence of shower BOOLEAN 0 0 1 020195 [SIM] Presence of hail BOOLEAN 0 0 1 020196 [SIM] Presence of thunderstorm BOOLEAN 0 0 1 020197 [SIM] Presence of snow BOOLEAN 0 0 1 020198 [SIM] Presence of frost BOOLEAN 0 0 1 020199 [SIM] Presence of dew BOOLEAN 0 0 1 020200 [SIM] Presence of fog BOOLEAN 0 0 1 020201 [SIM] Presence of water-spout BOOLEAN 0 0 1 020202 [SIM] State of the ground with snow CODE TABLE 0 0 5 022001 DIRECTION OF WAVES DEGREE TRUE 0 0 9 022002 DIRECTION OF WIND WAVES DEGREE TRUE 0 0 9 022003 DIRECTION OF SWELL WAVES DEGREE TRUE 0 0 9 022004 DIRECTION OF CURRENT DEGREE TRUE 0 0 9 022011 PERIOD OF WAVES S 0 0 6 022012 PERIOD OF WIND WAVES S 0 0 6 022013 PERIOD OF SWELL WAVES S 0 0 6 022021 HEIGHT OF WAVES M 1 0 10 022022 HEIGHT OF WIND WAVES M 1 0 10 022023 HEIGHT OF SWELL WAVES M 1 0 10 022031 SPEED OF CURRENT M/S 2 0 13 022032 SPEED OF SEA SURFACE CURRENT M/S 2 0 13 022037 Tidal elevation with respect to national land datum M 3 -10000 15 022038 Tidal elevation with respect to local chart datum M 3 -10000 15 022043 SEA/WATER TEMPERATURE K 2 0 15 022049 SEA-SURFACE TEMPERATURE K 2 0 15 022062 SALINITY PART PER THOUSAND 2 0 14 022063 TOTAL WATER DEPTH M 0 0 14 022066 WATER CONDUCTIVITY S M-1 6 0 26 022070 SIGNIFICANT WAVE HEIGHT M 2 0 13 022071 SPECTRAL PEAK WAVE PERIOD S 1 0 9 022073 MAXIMUM WAVE HEIGHT M 2 0 13 022074 AVERAGE WAVE PERIOD S 1 0 9 022192 [SIM] Current X component M/S 2 0 13 022193 [SIM] Current Y component M/S 2 0 13 022194 [SIM] Concentrazione clorofilla a microg/l 2 0 17 023192 [SIM] Dry deposition of H2SO4 MOL/M**2 5 0 20 023193 [SIM] Wet deposition of H2SO4 MOL/M**2 5 0 20 023194 [SIM] Dry deposition of NH4 MOL/M**2 5 0 20 023195 [SIM] Wet deposition of NH4 MOL/M**2 5 0 20 023196 [SIM] Dry deposition of HNO3 MOL/M**2 5 0 20 023197 [SIM] Wet deposition of HNO3 MOL/M**2 5 0 20 023198 [SIM] Solid transport by river KG/S 2 0 24 025076 LOG-10 OF (TEMP-RAD CENTRAL WAVENUMBER) FOR ATOVS LOGM-1 8 0 30 029192 [SIM] Land fraction % 1 0 10 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 31021 0 0 6 031031 DATA PRESENT INDICATOR FLAG TABLE 31031 0 0 1 033002 QUALITY INFORMATION CODE TABLE 33002 0 0 2 033003 QUALITY INFORMATION CODE TABLE 33003 0 0 3 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 33005 0 0 30 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 33006 0 0 3 033007 PER CENT CONFIDENCE % 0 0 7 033015 DATA QUALITY CHECK INDICATOR CODE TABLE 33015 0 0 6 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 33020 0 0 3 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 33021 0 0 2 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 33022 0 0 2 033023 QUALITY OF BUOY LOCATION CODE TABLE 33023 0 0 2 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) CODE TABLE 33024 0 0 4 033025 ACARS INTERPOLATED VALUES CODE TABLE 33025 0 0 3 033026 MOISTURE QUALITY CODE TABLE 33026 0 0 6 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) CODE TABLE 33027 0 0 3 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 33030 0 0 24 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 33031 0 0 24 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 33032 0 0 24 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 33033 0 0 24 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 33035 0 0 4 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 033037 WIND CORRELATION ERROR FLAG TABLE 33037 0 0 20 033038 QUALITY FLAGS FOR GROUND-BASED GNSS DATA FLAG TABLE 33038 0 0 10 033040 CONFIDENCE INTERVAL % 0 0 7 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 33041 0 0 2 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 33050 0 0 4 033192 [SIM] Climatological and consistency check % 0 0 7 033193 [SIM] Time consistency % 0 0 7 033194 [SIM] Space consistency % 0 0 7 033195 [SIM] MeteoDB variable ID NUMERIC 0 0 24 033196 [SIM] Data has been invalidated CODE TABLE 33196 0 0 2 033197 [SIM] Manual replacement in substitution CODE TABLE 33197 0 0 2 033198 [SIM] Observation increment NUMERIC 4 -1073741823 31 033201 [SIM] Kalman coefficient, state vector (s.v.) x1 NUMERIC 4 -1073741823 31 033202 [SIM] Kalman coefficient, state vector (s.v.) x2 NUMERIC 4 -1073741823 31 033203 [SIM] Kalman coefficient, s.v. error covariance matrix(1,1) NUMERIC 4 -1073741823 31 033204 [SIM] Kalman coefficient, s.v. error covariance matrix(1,2) NUMERIC 4 -1073741823 31 033205 [SIM] Kalman coefficient, s.v. error covariance matrix(2,1) NUMERIC 4 -1073741823 31 033206 [SIM] Kalman coefficient, s.v. error covariance matrix(2,2) NUMERIC 4 -1073741823 31 033207 [SIM] Kalman observation sequential counter NUMERIC 0 -127 8 033208 [SIM] Kalman osservation missing counter NUMERIC 0 -127 8 033209 [SIM] Normalized Density Index % 0 0 7 048001 [SIM] Graminacee_Graminacee indistinte POLLEN/M**3 1 0 24 048002 [SIM] Betulacee_Ontano nero POLLEN/M**3 1 0 24 048003 [SIM] Betulacee_Betulla POLLEN/M**3 1 0 24 048004 [SIM] Betulacee_Betulacee indistinte POLLEN/M**3 1 0 24 048005 [SIM] Composite_Ambrosia POLLEN/M**3 1 0 24 048006 [SIM] Composite_Artemisia POLLEN/M**3 1 0 24 048007 [SIM] Composite_Composite indistinte POLLEN/M**3 1 0 24 048008 [SIM] Corilacee_Nocciolo POLLEN/M**3 1 0 24 048009 [SIM] Corilacee_Carpino bianco -Carpino nero POLLEN/M**3 1 0 24 048010 [SIM] Corilacee_Corilacee indistinte POLLEN/M**3 1 0 24 048011 [SIM] Fagacee_Castagno POLLEN/M**3 1 0 24 048012 [SIM] Fagacee_Faggio POLLEN/M**3 1 0 24 048013 [SIM] Fagacee_Quercia POLLEN/M**3 1 0 24 048014 [SIM] Fagacee_Fagacee indistinte POLLEN/M**3 1 0 24 048015 [SIM] Oleacee_Olivo POLLEN/M**3 1 0 24 048016 [SIM] Oleacee_Frassino POLLEN/M**3 1 0 24 048017 [SIM] Oleacee_Oleacee indistinte POLLEN/M**3 1 0 24 048018 [SIM] Plantaginacee_Plantaginacee indistinte POLLEN/M**3 1 0 24 048019 [SIM] Urticacee_Urticacee indistinte POLLEN/M**3 1 0 24 048020 [SIM] Cupressacee - Taxacee indistinte_Cipresso comune POLLEN/M**3 1 0 24 048021 [SIM] Cupressacee - Taxacee indistinte_Cupressacee - Taxacee ind POLLEN/M**3 1 0 24 048022 [SIM] Chenopodiacee - Amarantacee Indistinte_Amaranto POLLEN/M**3 1 0 24 048023 [SIM] Chenopodiacee - Amarantacee Indistinte_Chenopodiacee - Ama POLLEN/M**3 1 0 24 048024 [SIM] Poligonacee_Poligonacee indistinte POLLEN/M**3 1 0 24 048025 [SIM] Euphorbiacee_Euforbiacee indistinte POLLEN/M**3 1 0 24 048026 [SIM] Mirtacee_Mirtacee indistinte POLLEN/M**3 1 0 24 048027 [SIM] Ulmacee_Bagolaro comune POLLEN/M**3 1 0 24 048028 [SIM] Ulmacee_Olmo campestre POLLEN/M**3 1 0 24 048029 [SIM] Ulmacee_Ulmacee indistinte POLLEN/M**3 1 0 24 048030 [SIM] Platanacee_Platanacee indistinte POLLEN/M**3 1 0 24 048031 [SIM] Aceraceae_Aceracee indistinte POLLEN/M**3 1 0 24 048032 [SIM] Pinacee_Pinacee indistinte POLLEN/M**3 1 0 24 048033 [SIM] Salicacee_Salice comune POLLEN/M**3 1 0 24 048034 [SIM] Salicacee_Pioppo POLLEN/M**3 1 0 24 048035 [SIM] Salicacee_Salicacee indistinte POLLEN/M**3 1 0 24 048036 [SIM] Ciperacee_Ciperacee indistinte POLLEN/M**3 1 0 24 048037 [SIM] Juglandacee_Juglandacee indistinte POLLEN/M**3 1 0 24 048038 [SIM] Ippocastanacee_Ippocastanacee indistinte POLLEN/M**3 1 0 24 048039 [SIM] Spore fungine_Alternaria POLLEN/M**3 1 0 24 048040 [SIM] Spore fungine_Botrytis POLLEN/M**3 1 0 24 048041 [SIM] Spore fungine_Stemphylium POLLEN/M**3 1 0 24 048042 [SIM] Spore fungine_Cladosporium POLLEN/M**3 1 0 24 048043 [SIM] Spore fungine_Epicoccum POLLEN/M**3 1 0 24 048044 [SIM] Altri Pollini / Non Identificati_Altri pollini identificat POLLEN/M**3 1 0 24 048045 [SIM] Altri Pollini / Non Identificati_Pollini non identificati POLLEN/M**3 1 0 24 048046 [SIM] Altre Spore / Non identificati_Altre spore fungine POLLEN/M**3 1 0 24 048047 [SIM] Altre Spore / Non identificati_Spore fungine non identific POLLEN/M**3 1 0 24 048048 [SIM] Graminacee_Graminacee indistinte 1 POLLEN/M**3 1 0 24 048049 [SIM] Plantaginacee_Plantaginacee indistinte 1 POLLEN/M**3 1 0 24 048050 [SIM] Urticacee_Urticacee indistinte 1 POLLEN/M**3 1 0 24 048051 [SIM] Poligonacee_Poligonacee indistinte 1 POLLEN/M**3 1 0 24 048052 [SIM] Euphorbiacee_Euforbiacee indistinte 1 POLLEN/M**3 1 0 24 048053 [SIM] Mirtacee_Mirtacee indistinte 1 POLLEN/M**3 1 0 24 048054 [SIM] Platanacee_Platanacee indistinte 1 POLLEN/M**3 1 0 24 048055 [SIM] Aceraceae_Aceracee indistinte 1 POLLEN/M**3 1 0 24 048056 [SIM] Pinacee_Pinacee indistinte 1 POLLEN/M**3 1 0 24 048057 [SIM] Ciperacee_Ciperacee indistinte 1 POLLEN/M**3 1 0 24 048058 [SIM] Juglandacee_Juglandacee indistinte 1 POLLEN/M**3 1 0 24 048059 [SIM] Ippocastanacee_Ippocastanacee indistinte 1 POLLEN/M**3 1 0 24 048060 [SIM] Oleacee_Ligustro POLLEN/M**3 1 0 24 048128 [SIM] Conta Graminacee_Graminacee indistinte NUMERIC 0 0 20 048129 [SIM] Conta Betulacee_Ontano nero NUMERIC 0 0 20 048130 [SIM] Conta Betulacee_Betulla NUMERIC 0 0 20 048131 [SIM] Conta Betulacee_Betulacee indistinte NUMERIC 0 0 20 048132 [SIM] Conta Composite_Ambrosia NUMERIC 0 0 20 048133 [SIM] Conta Composite_Artemisia NUMERIC 0 0 20 048134 [SIM] Conta Composite_Composite indistinte NUMERIC 0 0 20 048135 [SIM] Conta Corilacee_Nocciolo NUMERIC 0 0 20 048136 [SIM] Conta Corilacee_Carpino bianco -Carpino nero NUMERIC 0 0 20 048137 [SIM] Conta Corilacee_Corilacee indistinte NUMERIC 0 0 20 048138 [SIM] Conta Fagacee_Castagno NUMERIC 0 0 20 048139 [SIM] Conta Fagacee_Faggio NUMERIC 0 0 20 048140 [SIM] Conta Fagacee_Quercia NUMERIC 0 0 20 048141 [SIM] Conta Fagacee_Fagacee indistinte NUMERIC 0 0 20 048142 [SIM] Conta Oleacee_Olivo NUMERIC 0 0 20 048143 [SIM] Conta Oleacee_Frassino NUMERIC 0 0 20 048144 [SIM] Conta Oleacee_Oleacee indistinte NUMERIC 0 0 20 048145 [SIM] Conta Plantaginacee_Plantaginacee indistinte NUMERIC 0 0 20 048146 [SIM] Conta Urticacee_Urticacee indistinte NUMERIC 0 0 20 048147 [SIM] Conta Cupressacee - Taxacee indistinte_Cipresso comune NUMERIC 0 0 20 048148 [SIM] Conta Cupressacee - Taxacee indistinte_Cupressacee - Taxac NUMERIC 0 0 20 048149 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Amaranto NUMERIC 0 0 20 048150 [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Chenopodiacee NUMERIC 0 0 20 048151 [SIM] Conta Poligonacee_Poligonacee indistinte NUMERIC 0 0 20 048152 [SIM] Conta Euphorbiacee_Euforbiacee indistinte NUMERIC 0 0 20 048153 [SIM] Conta Mirtacee_Mirtacee indistinte NUMERIC 0 0 20 048154 [SIM] Conta Ulmacee_Bagolaro comune NUMERIC 0 0 20 048155 [SIM] Conta Ulmacee_Olmo campestre NUMERIC 0 0 20 048156 [SIM] Conta Ulmacee_Ulmacee indistinte NUMERIC 0 0 20 048157 [SIM] Conta Platanacee_Platanacee indistinte NUMERIC 0 0 20 048158 [SIM] Conta Aceraceae_Aceracee indistinte NUMERIC 0 0 20 048159 [SIM] Conta Pinacee_Pinacee indistinte NUMERIC 0 0 20 048160 [SIM] Conta Salicacee_Salice comune NUMERIC 0 0 20 048161 [SIM] Conta Salicacee_Pioppo NUMERIC 0 0 20 048162 [SIM] Conta Salicacee_Salicacee indistinte NUMERIC 0 0 20 048163 [SIM] Conta Ciperacee_Ciperacee indistinte NUMERIC 0 0 20 048164 [SIM] Conta Juglandacee_Juglandacee indistinte NUMERIC 0 0 20 048165 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte NUMERIC 0 0 20 048166 [SIM] Conta Spore fungine_Alternaria NUMERIC 0 0 20 048167 [SIM] Conta Spore fungine_Botrytis NUMERIC 0 0 20 048168 [SIM] Conta Spore fungine_Stemphylium NUMERIC 0 0 20 048169 [SIM] Conta Spore fungine_Cladosporium NUMERIC 0 0 20 048170 [SIM] Conta Spore fungine_Epicoccum NUMERIC 0 0 20 048171 [SIM] Conta Altri Pollini / Non Identificati_Altri pollini ident NUMERIC 0 0 20 048172 [SIM] Conta Altri Pollini / Non Identificati_Pollini non identif NUMERIC 0 0 20 048173 [SIM] Conta Altre Spore / Non identificati_Altre spore fungine NUMERIC 0 0 20 048174 [SIM] Conta Altre Spore / Non identificati_Spore fungine non ide NUMERIC 0 0 20 048175 [SIM] Conta Graminacee_Graminacee indistinte 1 NUMERIC 0 0 20 048176 [SIM] Conta Plantaginacee_Plantaginacee indistinte 1 NUMERIC 0 0 20 048177 [SIM] Conta Urticacee_Urticacee indistinte 1 NUMERIC 0 0 20 048178 [SIM] Conta Poligonacee_Poligonacee indistinte 1 NUMERIC 0 0 20 048179 [SIM] Conta Euphorbiacee_Euforbiacee indistinte 1 NUMERIC 0 0 20 048180 [SIM] Conta Mirtacee_Mirtacee indistinte 1 NUMERIC 0 0 20 048181 [SIM] Conta Platanacee_Platanacee indistinte 1 NUMERIC 0 0 20 048182 [SIM] Conta Aceraceae_Aceracee indistinte 1 NUMERIC 0 0 20 048183 [SIM] Conta Pinacee_Pinacee indistinte 1 NUMERIC 0 0 20 048184 [SIM] Conta Ciperacee_Ciperacee indistinte 1 NUMERIC 0 0 20 048185 [SIM] Conta Juglandacee_Juglandacee indistinte 1 NUMERIC 0 0 20 048186 [SIM] Conta Ippocastanacee_Ippocastanacee indistinte 1 NUMERIC 0 0 20 048187 [SIM] Conta Oleacee_Ligustro NUMERIC 0 0 20 dballe-7.21/tables/B000000002001200.txt0000644000175000017500000004540013022043102013316 00000000000000 001001 WMO BLOCK NUMBER NUMERIC 0 0 7 001002 WMO STATION NUMBER NUMERIC 0 0 10 001007 SATELLITE IDENTIFIER CODE TABLE 1007 0 0 10 001008 AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION CCITTIA5 0 0 64 001011 SHIP OR MOBILE LAND STATION IDENTIFIER CCITTIA5 0 0 72 001012 DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM** DEGREE TRUE 0 0 9 001013 SPEED OF MOTION OF MOVING OBSERVING PLATFORM* M/S 0 0 10 001019 LONG STATION OR SITE NAME CCITTIA5 0 0 256 001063 ICAO LOCATION INDICATOR CCITTIA5 0 0 64 001192 [SIM] MeteoDB station ID NUMERIC 0 0 24 001193 [SIM] Report code NUMERIC 0 0 16 001194 [SIM] Report mnemonic CCITTIA5 0 0 128 001212 AIR QUALITY OBSERVING STATION LOCAL CODE CCITTIA5 0 0 56 001213 AIRBASE AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 56 001214 GEMS AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 48 001215 AIR QUALITY OBSERVING STATION DOMINANT EMISSION SOURCE CODE TABLE 001215 0 0 3 001216 AIR QUALITY OBSERVING STATION AREA TYPE CODE TABLE 001216 0 0 3 001217 AIR QUALITY OBSERVING STATION TERRAIN TYPE CODE TABLE 001217 0 0 4 002001 TYPE OF STATION CODE TABLE 2001 0 0 2 002002 TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT FLAG TABLE 2002 0 0 4 002005 PRECISION OF TEMPERATURE OBSERVATION K 2 0 7 002011 RADIOSONDE TYPE CODE TABLE 2011 0 0 8 002012 RADIOSONDE COMPUTATIONAL METHOD CODE TABLE 2012 0 0 4 002048 SATELLITE SENSOR INDICATOR CODE TABLE 2048 0 0 4 002061 AIRCRAFT NAVIGATIONAL SYSTEM CODE TABLE 2061 0 0 3 002062 TYPE OF AIRCRAFT DATA RELAY SYSTEM CODE TABLE 2062 0 0 4 002063 AIRCRAFT ROLL ANGLE DEGREE 2 -18000 16 002070 ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE CODE TABLE 2070 0 0 4 004001 YEAR YEAR 0 0 12 004002 MONTH MONTH 0 0 4 004003 DAY DAY 0 0 6 004004 HOUR HOUR 0 0 5 004005 MINUTE MINUTE 0 0 6 004006 SECOND SECOND 0 0 6 004192 [SIM] Time range type NUMERIC 0 0 10 004193 [SIM] Time range P1 NUMERIC 0 -536870912 31 004194 [SIM] Time range P2 NUMERIC 0 -536870912 31 005001 LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 005021 BEARING OR AZIMUTH DEGREE TRUE 2 0 16 005022 SOLAR AZIMUTH DEGREE TRUE 2 0 16 005040 ORBIT NUMBER NUMERIC 0 0 24 005041 SCAN LINE NUMBER NUMERIC 0 0 8 005043 FIELD OF VIEW NUMBER NUMERIC 0 0 8 006001 LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 007001 HEIGHT OF STATION (SEE NOTE 1) M 0 -400 15 007002 HEIGHT OR ALTITUDE M -1 -40 16 007004 PRESSURE PA -1 0 14 007024 SATELLITE ZENITH ANGLE DEGREE 2 -9000 15 007025 SOLAR ZENITH ANGLE DEGREE 2 -9000 15 007031 HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4) M 1 - 4000 17 007192 [SIM] First level type NUMERIC 0 0 10 007193 [SIM] Level L1 NUMERIC 0 -536870912 31 007194 [SIM] Level L2 NUMERIC 0 -536870912 31 007195 [SIM] Second level type NUMERIC 0 0 31 008001 VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8001 0 0 7 008004 PHASE OF AIRCRAFT FLIGHT CODE TABLE 8004 0 0 3 008021 TIME SIGNIFICANCE CODE TABLE 8021 0 0 5 008044 (VAL) CAS REGISTRY NUMBER CCITTIA5 0 0 88 010003 GEOPOTENTIAL M**2/S**2 0 -4000 24 010004 PRESSURE PA -1 0 14 010007 HEIGHT M 0 -1000 17 010009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 010051 PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 010052 ALTIMETER SETTING (QNH) PA -1 0 14 010061 3-HOUR PRESSURE CHANGE PA -1 -500 11 010063 CHARACTERISTIC OF PRESSURE TENDENCY CODE TABLE 10063 0 0 4 010197 ANEMOMETER HEIGHT M 0 0 9 011001 WIND DIRECTION DEGREE TRUE 0 0 9 011002 WIND SPEED M/S 1 0 12 011003 U-COMPONENT M/S 1 -4096 13 011004 V-COMPONENT M/S 1 -4096 13 011005 W-COMPONENT PA/S 1 -512 10 011006 W-COMPONENT M/S 2 -4096 13 011016 EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 011017 EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 011041 MAXIMUM WIND GUST SPEED M/S 1 0 12 012001 TEMPERATURE/DRY-BULB TEMPERATURE K 1 0 12 012002 WET-BULB TEMPERATURE K 1 0 12 012003 DEW-POINT TEMPERATURE K 1 0 12 012030 SOIL TEMPERATURE K 1 0 12 012061 SKIN TEMPERATURE K 1 0 12 012063 BRIGHTNESS TEMPERATURE K 1 0 12 013001 SPECIFIC HUMIDITY KG/KG 5 0 14 013003 RELATIVE HUMIDITY % 0 0 7 013011 TOTAL PRECIPITATION / TOTAL WATER EQUIVALENT KG/M**2 1 -1 14 013013 TOTAL SNOW DEPTH M 3 -20 20 014016 NET RADIATION J/M**2 -4 -16384 15 014018 INSTANTANEOUS SHORT-WAVE RADIATION W/M**2 -3 -2048 12 014021 GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 014192 [SIM] Instantenous sensible heat flux W m-2 -3 -2048 12 014193 [SIM] Instantenous latent heat flux W m-2 -3 -2048 12 015192 [SIM] NO Concentration KG/M**3 10 0 14 015193 [SIM] NO2 Concentration KG/M**3 10 0 14 015194 [SIM] O3 Concentration KG/M**3 10 0 14 015195 [SIM] PM10 Concentration KG/M**3 10 0 14 015196 [SIM] CO Concentration KG/M**3 10 0 14 015197 [SIM] SO2 Concentration KG/M**3 10 0 14 015198 [SIM] PM2.5 Concentration KG/M**3 10 0 14 020001 HORIZONTAL VISIBILITY M -1 0 13 020003 PRESENT WEATHER (SEE NOTE 1) CODE TABLE 20003 0 0 9 020004 PAST WEATHER (1) (SEE NOTE 2) CODE TABLE 20004 0 0 5 020005 PAST WEATHER (2) (SEE NOTE 2) CODE TABLE 20005 0 0 5 020009 GENERAL WEATHER INDICATOR (TAF/METAR) CODE TABLE 20009 0 0 4 020010 CLOUD COVER (TOTAL) % 0 0 7 020011 CLOUD AMOUNT CODE TABLE 20011 0 0 4 020012 CLOUD TYPE CODE TABLE 20012 0 0 6 020013 HEIGHT OF BASE OF CLOUD M 0 -400 17 020019 SIGNIFICANT PRESENT OR FORECAST WEATHER CCITTIA5 0 0 72 020021 TYPE OF PRECIPITATION FLAG TABLE 20021 0 0 30 020062 STATE OF THE GROUND (WITH OR WITHOUT SNOW) CODE TABLE 20062 0 0 5 020193 [SIM] Cloud type (METAR) CCITTIA5 0 0 16 022001 DIRECTION OF WAVES DEGREE TRUE 0 0 9 022011 PERIOD OF WAVES S 0 0 6 022012 PERIOD OF WIND WAVES S 0 0 6 022021 HEIGHT OF WAVES M 1 0 10 022022 HEIGHT OF WIND WAVES M 1 0 10 022042 SEA/WATER TEMPERATURE K 1 0 12 022070 SIGNIFICANT WAVE HEIGHT M 2 0 13 022071 SPECTRAL PEAK WAVE PERIOD S 1 0 9 022074 AVERAGE WAVE PERIOD S 1 0 9 025076 LOG-10 OF (TEMP-RAD CENTRAL WAVENUMBER) FOR ATOVS LOGM-1 8 0 30 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 31021 0 0 6 031031 DATA PRESENT INDICATOR FLAG TABLE 31031 0 0 1 033002 QUALITY INFORMATION CODE TABLE 33002 0 0 2 033003 QUALITY INFORMATION CODE TABLE 33003 0 0 3 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 33005 0 0 30 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 33006 0 0 3 033007 PER CENT CONFIDENCE % 0 0 7 033015 DATA QUALITY CHECK INDICATOR CODE TABLE 33015 0 0 6 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 33020 0 0 3 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 33021 0 0 2 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 33022 0 0 2 033023 QUALITY OF BUOY LOCATION CODE TABLE 33023 0 0 2 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) CODE TABLE 33024 0 0 4 033025 ACARS INTERPOLATED VALUES CODE TABLE 33025 0 0 3 033026 MOISTURE QUALITY CODE TABLE 33026 0 0 6 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) CODE TABLE 33027 0 0 3 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 33030 0 0 24 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 33031 0 0 24 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 33032 0 0 24 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 33033 0 0 24 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 33035 0 0 4 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 033037 WIND CORRELATION ERROR FLAG TABLE 33037 0 0 20 033038 QUALITY FLAGS FOR GROUND-BASED GNSS DATA FLAG TABLE 33038 0 0 10 033040 CONFIDENCE INTERVAL % 0 0 7 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 33041 0 0 2 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 33050 0 0 4 033192 [SIM] Climatological and consistency check % 0 0 7 033193 [SIM] Time consistency % 0 0 7 033194 [SIM] Space consistency % 0 0 7 033195 [SIM] MeteoDB variable ID NUMERIC 0 0 24 033196 [SIM] Data has been invalidated CODE TABLE 33196 0 0 1 033197 [SIM] Manual replacement in substitution CODE TABLE 33197 0 0 2 033198 [SIM] Observation increment NUMERIC 4 -536870912 31 dballe-7.21/tables/B990203.txt0000644000175000017500000006130113022043102012456 00000000000000 001001 WMO BLOCK NUMBER NUMERIC 0 0 7 NUMERIC 0 2 001002 WMO STATION NUMBER NUMERIC 0 0 10 NUMERIC 0 3 001007 SATELLITE IDENTIFIER CODE TABLE 1007 0 0 10 CODE TABLE 1007 0 3 001008 AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION CCITTIA5 0 0 64 CHARACTER 0 8 001011 SHIP OR MOBILE LAND STATION IDENTIFIER CCITTIA5 0 0 72 CHARACTER 0 9 001012 DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM** DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 001013 SPEED OF MOTION OF MOVING OBSERVING PLATFORM* M/S 0 0 10 M/S 0 3 001019 LONG STATION OR SITE NAME CCITTIA5 0 0 256 CHARACTER 0 32 001063 ICAO LOCATION INDICATOR CCITTIA5 0 0 64 CHARACTER 0 8 001192 [SIM] MeteoDB station ID NUMERIC 0 0 24 NUMERIC 0 8 001193 [SIM] Report code NUMERIC 0 0 16 NUMERIC 0 5 001194 [SIM] Report mnemonic CCITTIA5 0 0 128 CHARACTER 0 16 001212 AIR QUALITY OBSERVING STATION LOCAL CODE CCITTIA5 0 0 56 CHARACTER 0 7 001213 AIRBASE AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 56 CHARACTER 0 7 001214 GEMS AIR QUALITY OBSERVING STATION CODE CCITTIA5 0 0 48 CHARACTER 0 6 001215 AIR QUALITY OBSERVING STATION DOMINANT EMISSION SOURCE CODE TABLE 001215 0 0 3 CODE TABLE 001215 0 1 001216 AIR QUALITY OBSERVING STATION AREA TYPE CODE TABLE 001216 0 0 3 CODE TABLE 001216 0 1 001217 AIR QUALITY OBSERVING STATION TERRAIN TYPE CODE TABLE 001217 0 0 4 CODE TABLE 001217 0 2 002001 TYPE OF STATION CODE TABLE 2001 0 0 2 CODE TABLE 2001 0 1 002002 TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT FLAG TABLE 2002 0 0 4 FLAG TABLE 2002 0 2 002005 PRECISION OF TEMPERATURE OBSERVATION K 2 0 7 K 2 3 002011 RADIOSONDE TYPE CODE TABLE 2011 0 0 8 CODE TABLE 2011 0 3 002012 RADIOSONDE COMPUTATIONAL METHOD CODE TABLE 2012 0 0 4 CODE TABLE 2012 0 2 002048 SATELLITE SENSOR INDICATOR CODE TABLE 2048 0 0 4 CODE TABLE 2048 0 2 002061 AIRCRAFT NAVIGATIONAL SYSTEM CODE TABLE 2061 0 0 3 CODE TABLE 2061 0 1 002062 TYPE OF AIRCRAFT DATA RELAY SYSTEM CODE TABLE 2062 0 0 4 CODE TABLE 2062 0 2 002063 AIRCRAFT ROLL ANGLE DEGREE 2 -18000 16 DEGREE 2 5 002070 ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE CODE TABLE 2070 0 0 4 CODE TABLE 2070 0 2 004001 YEAR YEAR 0 0 12 YEAR 0 4 004002 MONTH MONTH 0 0 4 MONTH 0 2 004003 DAY DAY 0 0 6 DAY 0 2 004004 HOUR HOUR 0 0 5 HOUR 0 2 004005 MINUTE MINUTE 0 0 6 MINUTE 0 2 004006 SECOND SECOND 0 0 6 SECOND 0 2 004192 [SIM] Time range type NUMERIC 0 0 10 NUMERIC 0 4 004193 [SIM] Time range P1 NUMERIC 0 -536870912 31 NUMERIC 0 10 004194 [SIM] Time range P2 NUMERIC 0 -536870912 31 NUMERIC 0 10 005001 LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 005021 BEARING OR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005022 SOLAR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005040 ORBIT NUMBER NUMERIC 0 0 24 NUMERIC 0 8 005041 SCAN LINE NUMBER NUMERIC 0 0 8 NUMERIC 0 3 005043 FIELD OF VIEW NUMBER NUMERIC 0 0 8 NUMERIC 0 3 006001 LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 007001 HEIGHT OF STATION (SEE NOTE 1) M 0 -400 15 M 0 5 007002 HEIGHT OR ALTITUDE M -1 -40 16 M -1 5 007004 PRESSURE PA -1 0 14 PA -1 5 007024 SATELLITE ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007025 SOLAR ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007031 HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4) M 1 - 4000 17 M 1 5 007192 [SIM] First level type NUMERIC 0 0 10 NUMERIC 0 4 007193 [SIM] Level L1 NUMERIC 0 -536870912 31 NUMERIC 0 10 007194 [SIM] Level L2 NUMERIC 0 -536870912 31 NUMERIC 0 10 007195 [SIM] Second level type NUMERIC 0 0 31 NUMERIC 0 4 008001 VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8001 0 0 7 FLAG TABLE 8001 0 3 008004 PHASE OF AIRCRAFT FLIGHT CODE TABLE 8004 0 0 3 CODE TABLE 8004 0 1 008021 TIME SIGNIFICANCE CODE TABLE 8021 0 0 5 CODE TABLE 8021 0 2 008044 (VAL) CAS REGISTRY NUMBER CCITTIA5 0 0 88 CHARACTER 0 11 010003 GEOPOTENTIAL M**2/S**2 0 -4000 24 M**2/S**2 0 7 010004 PRESSURE PA -1 0 14 PA -1 5 010007 HEIGHT M 0 -1000 17 M 0 6 010009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 GPM 0 5 010051 PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5 010052 ALTIMETER SETTING (QNH) PA -1 0 14 PA -1 5 010061 3-HOUR PRESSURE CHANGE PA -1 -500 11 PA -1 4 010063 CHARACTERISTIC OF PRESSURE TENDENCY CODE TABLE 10063 0 0 4 CODE TABLE 10063 0 2 010197 ANEMOMETER HEIGHT M 0 0 9 M 0 3 011001 WIND DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011002 WIND SPEED M/S 1 0 12 M/S 1 4 011003 U-COMPONENT M/S 1 -4096 13 M/S 1 4 011004 V-COMPONENT M/S 1 -4096 13 M/S 1 4 011005 W-COMPONENT PA/S 1 -512 10 PA/S 1 4 011006 W-COMPONENT M/S 2 -4096 13 M/S 2 4 011016 EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011017 EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011041 MAXIMUM WIND GUST SPEED M/S 1 0 12 M/S 1 4 012001 TEMPERATURE/DRY-BULB TEMPERATURE K 1 0 12 K 1 4 012002 WET-BULB TEMPERATURE K 1 0 12 K 1 4 012003 DEW-POINT TEMPERATURE K 1 0 12 K 1 4 012030 SOIL TEMPERATURE K 1 0 12 K 1 4 012061 SKIN TEMPERATURE K 1 0 12 K 1 4 012063 BRIGHTNESS TEMPERATURE K 1 0 12 K 1 4 013001 SPECIFIC HUMIDITY KG/KG 5 0 14 KG/KG 5 5 013003 RELATIVE HUMIDITY % 0 0 7 % 0 3 013011 TOTAL PRECIPITATION / TOTAL WATER EQUIVALENT KG/M**2 1 -1 14 KG/M**2 1 5 013013 TOTAL SNOW DEPTH M 3 -20 20 M 3 6 014016 NET RADIATION J/M**2 -4 -16384 15 J/M**2 -4 5 014018 INSTANTANEOUS SHORT-WAVE RADIATION W/M**2 -3 -2048 12 W/M**2 -3 4 014021 GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 J/M**2 -4 5 014192 [SIM] Instantenous sensible heat flux W m-2 -3 -2048 12 W m-2 -3 4 014193 [SIM] Instantenous latent heat flux W m-2 -3 -2048 12 W m-2 -3 4 015192 [SIM] NO Concentration KG/M**3 10 0 14 KG/M**3 10 4 015193 [SIM] NO2 Concentration KG/M**3 10 0 14 KG/M**3 10 4 015194 [SIM] O3 Concentration KG/M**3 10 0 14 KG/M**3 10 4 015195 [SIM] PM10 Concentration KG/M**3 10 0 14 KG/M**3 10 4 015196 [SIM] CO Concentration KG/M**3 10 0 14 KG/M**3 10 4 015197 [SIM] SO2 Concentration KG/M**3 10 0 14 KG/M**3 10 4 015198 [SIM] PM2.5 Concentration KG/M**3 10 0 14 KG/M**3 10 4 020001 HORIZONTAL VISIBILITY M -1 0 13 M -1 4 020003 PRESENT WEATHER (SEE NOTE 1) CODE TABLE 20003 0 0 9 CODE TABLE 20003 0 3 020004 PAST WEATHER (1) (SEE NOTE 2) CODE TABLE 20004 0 0 5 CODE TABLE 20004 0 2 020005 PAST WEATHER (2) (SEE NOTE 2) CODE TABLE 20005 0 0 5 CODE TABLE 20005 0 2 020009 GENERAL WEATHER INDICATOR (TAF/METAR) CODE TABLE 20009 0 0 4 CODE TABLE 20009 0 2 020010 CLOUD COVER (TOTAL) % 0 0 7 % 0 3 020011 CLOUD AMOUNT CODE TABLE 20011 0 0 4 CODE TABLE 20011 0 2 020012 CLOUD TYPE CODE TABLE 20012 0 0 6 CODE TABLE 20012 0 2 020013 HEIGHT OF BASE OF CLOUD M 0 -400 17 M 0 5 020019 SIGNIFICANT PRESENT OR FORECAST WEATHER CCITTIA5 0 0 72 CHARACTER 0 9 020021 TYPE OF PRECIPITATION FLAG TABLE 20021 0 0 30 FLAG TABLE 20021 0 10 020062 STATE OF THE GROUND (WITH OR WITHOUT SNOW) CODE TABLE 20062 0 0 5 CODE TABLE 20062 0 2 020193 [SIM] Cloud type (METAR) CCITTIA5 0 0 16 CHARACTER 0 2 022001 DIRECTION OF WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022011 PERIOD OF WAVES S 0 0 6 S 0 2 022012 PERIOD OF WIND WAVES S 0 0 6 S 0 2 022021 HEIGHT OF WAVES M 1 0 10 M 1 4 022022 HEIGHT OF WIND WAVES M 1 0 10 M 1 4 022042 SEA/WATER TEMPERATURE K 1 0 12 K 1 4 022070 SIGNIFICANT WAVE HEIGHT M 2 0 13 M 2 4 022071 SPECTRAL PEAK WAVE PERIOD S 1 0 9 S 1 3 022074 AVERAGE WAVE PERIOD S 1 0 9 S 1 3 025076 LOG-10 OF (TEMP-RAD CENTRAL WAVENUMBER) FOR ATOVS LOGM-1 8 0 30 LOGM-1 8 10 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1 NUMERIC 0 1 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 31021 0 0 6 CODE TABLE 31021 0 2 031031 DATA PRESENT INDICATOR FLAG TABLE 31031 0 0 1 FLAG TABLE 31031 0 1 033002 QUALITY INFORMATION CODE TABLE 33002 0 0 2 CODE TABLE 33002 0 1 033003 QUALITY INFORMATION CODE TABLE 33003 0 0 3 CODE TABLE 33003 0 1 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 33005 0 0 30 FLAG TABLE 33005 0 10 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 33006 0 0 3 CODE TABLE 33006 0 1 033007 PER CENT CONFIDENCE % 0 0 7 % 0 3 033015 DATA QUALITY CHECK INDICATOR CODE TABLE 33015 0 0 6 CODE TABLE 33015 0 2 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 33020 0 0 3 CODE TABLE 33020 0 1 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 33021 0 0 2 CODE TABLE 33021 0 1 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 33022 0 0 2 CODE TABLE 33022 0 1 033023 QUALITY OF BUOY LOCATION CODE TABLE 33023 0 0 2 CODE TABLE 33023 0 1 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) CODE TABLE 33024 0 0 4 CODE TABLE 33024 0 2 033025 ACARS INTERPOLATED VALUES CODE TABLE 33025 0 0 3 CODE TABLE 33025 0 1 033026 MOISTURE QUALITY CODE TABLE 33026 0 0 6 CODE TABLE 33026 0 2 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) CODE TABLE 33027 0 0 3 CODE TABLE 33027 0 1 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 33030 0 0 24 FLAG TABLE 33030 0 8 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 33031 0 0 24 FLAG TABLE 33031 0 8 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 33032 0 0 24 FLAG TABLE 33032 0 8 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 33033 0 0 24 FLAG TABLE 33033 0 8 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 33035 0 0 4 CODE TABLE 33035 0 2 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 % 0 3 033037 WIND CORRELATION ERROR FLAG TABLE 33037 0 0 20 FLAG TABLE 33037 0 7 033038 QUALITY FLAGS FOR GROUND-BASED GNSS DATA FLAG TABLE 33038 0 0 10 FLAG TABLE 33038 0 4 033040 CONFIDENCE INTERVAL % 0 0 7 PERCENT 0 3 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 33041 0 0 2 CODE TABLE 33041 0 1 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 33050 0 0 4 CODE TABLE 33050 0 2 033192 [SIM] Climatological and consistency check % 0 0 7 PERCENT 0 3 033193 [SIM] Time consistency % 0 0 7 PERCENT 0 3 033194 [SIM] Space consistency % 0 0 7 PERCENT 0 3 033195 [SIM] MeteoDB variable ID NUMERIC 0 0 24 NUMERIC 0 8 033196 [SIM] Data has been invalidated CODE TABLE 33196 0 0 1 CODE TABLE 33196 0 1 033197 [SIM] Manual replacement in substitution CODE TABLE 33197 0 0 2 CODE TABLE 33197 0 1 033198 [SIM] Observation increment NUMERIC 4 -536870912 31 NUMERIC 4 10 dballe-7.21/python/0000755000175000017500000000000013022523411011201 500000000000000dballe-7.21/python/test-volnd.py0000755000175000017500000004057513022043102013602 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import dballe from dballe.volnd import * import unittest, random, sys import datetime import warnings import numpy import numpy.ma as ma class TestTddiv(unittest.TestCase): # def tons(td): # return td.days * 86400000000 + td.seconds * 1000000 + td.microseconds def dtest(self, td1, td2): self.assertEqual(tddivmod1(td1, td2), tddivmod2(td1, td2)) q, r = tddivmod1(td1, td2) self.assertEqual(td2 * q + r, td1) if tddivmod3 is not None: self.assertEqual(tddivmod1(td1, td2), tddivmod3(td1, td2)) def testtddiv(self): #self.assertEqual(tddivmod(datetime.timedelta(10, 0, 0), datetime.timedelta(2, 0, 0)), (5, datetime.timedelta(0))) #self.assertEqual(tddivmod(datetime.timedelta(10, 0, 1), datetime.timedelta(2, 0, 0)), (5, datetime.timedelta(0, 0, 1))) #self.assertEqual(tddivmod(datetime.timedelta(10, 0, 1), datetime.timedelta(3, 0, 0)), (3, datetime.timedelta(1, 0, 1))) #self.assertEqual(tddivmod(datetime.timedelta(10, 6, 18), datetime.timedelta(5, 3, 9)), (2, datetime.timedelta(0))) #self.assertEqual(tddivmod(datetime.timedelta(3, 4, 5), datetime.timedelta(1, 3, 10)), (2, datetime.timedelta(0, 86397, 999985))) #self.assertEqual(tddivmod(datetime.timedelta(0, 4, 5), datetime.timedelta(0, 3, 10)), (1, datetime.timedelta(0, 0, 999995))) #self.assertEqual(tddivmod(datetime.timedelta(2, 40, 10), datetime.timedelta(0, 0, 5)), (34568000002, datetime.timedelta(0))) self.dtest(datetime.timedelta(10, 0, 0), datetime.timedelta(2, 0, 0)) self.dtest(datetime.timedelta(10, 0, 1), datetime.timedelta(2, 0, 0)) self.dtest(datetime.timedelta(10, 0, 1), datetime.timedelta(3, 0, 0)) self.dtest(datetime.timedelta(10, 6, 18), datetime.timedelta(5, 3, 9)) self.dtest(datetime.timedelta(3, 4, 5), datetime.timedelta(1, 3, 10)) self.dtest(datetime.timedelta(0, 4, 5), datetime.timedelta(0, 3, 10)) self.dtest(datetime.timedelta(2, 40, 10), datetime.timedelta(0, 0, 5)) # Re-enable when Debian bug #48872 has been fixed #self.dtest(datetime.timedelta(999999999, 86399, 999999), datetime.timedelta(0, 0, 2)) random.seed(1) for i in range(100): td1 = datetime.timedelta(random.randint(0, 999999999), random.randint(0, 86400), random.randint(0, 1000000)) td2 = datetime.timedelta(random.randint(0, 999999999), random.randint(0, 86400), random.randint(0, 1000000)) self.dtest(td1, td2) # Re-enable when Debian bug #48872 has been fixed #for i in xrange(100): # td1 = datetime.timedelta(random.randint(0, 999999999), random.randint(0, 86400), random.randint(0, 1000000)) # td2 = datetime.timedelta(0, random.randint(0, 86400), random.randint(0, 1000000)) # self.dtest(td1, td2) #for i in xrange(100): # td1 = datetime.timedelta(random.randint(0, 999999999), random.randint(0, 86400), random.randint(0, 1000000)) # td2 = datetime.timedelta(0, 0, random.randint(0, 1000000)) # self.dtest(td1, td2) #for i in xrange(100): # td1 = datetime.timedelta(0, random.randint(0, 86400), random.randint(0, 1000000)) # td2 = datetime.timedelta(0, 0, random.randint(0, 1000000)) # self.dtest(td1, td2) class TestRead(unittest.TestCase): def __init__(self, *args, **kw): super(TestRead, self).__init__(*args, **kw) if not hasattr(self, "assertCountEqual"): self.assertCountEqual = self.assertItemsEqual def setUp(self): from testlib import fill_volnd self.db = dballe.DB.connect_test() fill_volnd(self.db) def tearDown(self): #self.db.disconnect() pass def testIndexFind(self): # Ana in one dimension, network in the other query = dballe.Record(ana_id=1, var="B13011", rep_memo="synop") query["datetime"] = datetime.datetime(2007, 1, 1, 0, 0, 0) vars = read(self.db.query_data(query), (AnaIndex(), TimeRangeIndex())) self.assertEqual(vars["B13011"].dims[1].index((4, -21600, 0)), 1) def testFilter(self): # Ana in one dimension, network in the other query = dballe.Record(ana_id=1, var="B13011", rep_memo="synop") query["datetime"] = datetime.datetime(2007, 1, 1, 0, 0, 0) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) vars = read(self.db.query_data(query), \ (AnaIndex(), TimeRangeIndex()), \ filter=lambda rec: rec["trange"] == (4, -21600, 0)) self.assertEqual(vars["B13011"].dims[1].index((4, -21600, 0)), 0) def testUnsharedIndex(self): # Ana in one dimension, network in the other query = dballe.Record(ana_id=1, rep_memo="synop") vars = read(self.db.query_data(query), (AnaIndex(), TimeRangeIndex(), DateTimeIndex())) self.assertEqual(len(vars["B13011"].dims[2]), len(vars["B10004"].dims[2])) self.assertEqual(vars["B13011"].dims[2], vars["B10004"].dims[2]) vars = read(self.db.query_data(query), (AnaIndex(), TimeRangeIndex(), DateTimeIndex(shared=False))) self.assertNotEqual(len(vars["B13011"].dims[2]), len(vars["B10004"].dims[2])) def testConflicts(self): # Ana in one dimension, network in the other query = dballe.Record(ana_id=1, var="B13011") query["datetime"] = datetime.datetime(2007, 1, 1, 0, 0, 0) # Here conflicting values are overwritten vars = read(self.db.query_data(query), (AnaIndex(), ), checkConflicts=False) self.assertEqual(type(vars), dict) # Here insted they should be detected self.assertRaises(IndexError, read, self.db.query_data(query), (AnaIndex(),), checkConflicts=True) def testFixedIndex(self): # Ana in one dimension, network in the other query = dballe.Record(ana_id=1, rep_memo="synop", year=2007, month=1, day=1) vars = read(self.db.query_data(query), (AnaIndex(), TimeRangeIndex(frozen=True, start=((4, -21600, 0), (4, -43200, 0)) ) ), checkConflicts=False) self.assertEqual(len(vars["B13011"].dims[1]), 2) vars = read(self.db.query_data(query), (AnaIndex(), TimeRangeIndex()), checkConflicts=False) self.assertEqual(len(vars["B13011"].dims[1]), 3) vars = read(self.db.query_data(query), (AnaIndex(), LevelIndex(frozen=True, start=((1, None, None, None),))), checkConflicts=False) self.assertEqual(len(vars["B13011"].dims[1]), 1) vars = read(self.db.query_data(query), (AnaIndex(), LevelIndex()), checkConflicts=False) self.assertEqual(len(vars["B13011"].dims[1]), 2) def testAnaNetwork(self): # Ana in one dimension, network in the other query = dballe.Record() query["var"] = "B10004" query["datetime"] = datetime.datetime(2007, 1, 1, 0, 0, 0) vars = read(self.db.query_data(query), (AnaIndex(), NetworkIndex())) self.assertEqual(len(vars), 1) self.assertCountEqual(vars.keys(), ["B10004"]) data = vars["B10004"] self.assertEqual(data.name, "B10004") self.assertEqual(len(data.attrs), 0) self.assertEqual(len(data.dims), 2) self.assertEqual(len(data.dims[0]), 6) self.assertEqual(len(data.dims[1]), 2) self.assertEqual(data.vals.size, 12) self.assertEqual(data.vals.shape, (6, 2)) self.assertEqual(sum(data.vals.mask.flat), 1) self.assertEqual(round(ma.average(data.vals)), 83185) self.assertEqual(data.dims[0][0], (1, 10., 15., None)) self.assertEqual(data.dims[0][1], (2, 10., 25., None)) self.assertEqual(data.dims[0][2], (3, 20., 15., None)) self.assertEqual(data.dims[0][3], (4, 20., 25., None)) self.assertEqual(data.dims[0][4], (5, 30., 15., None)) self.assertEqual(data.dims[0][5], (6, 30., 25., None)) self.assertEqual(set(data.dims[1]), set(("temp", "synop"))) def testAnaTrangeNetwork(self): # 3 dimensions: ana, timerange, network # 2 variables query = dballe.Record(datetime=datetime.datetime(2007, 1, 1, 0, 0, 0)) vars = read(self.db.query_data(query), (AnaIndex(), TimeRangeIndex(shared=False), NetworkIndex())) self.assertEqual(len(vars), 2) self.assertEqual(sorted(vars.keys()), ["B10004", "B13011"]) data = vars["B10004"] self.assertEqual(data.name, "B10004") self.assertEqual(len(data.attrs), 0) self.assertEqual(len(data.dims), 3) self.assertEqual(len(data.dims[0]), 6) self.assertEqual(len(data.dims[1]), 1) self.assertEqual(len(data.dims[2]), 2) self.assertEqual(data.vals.size, 12) self.assertEqual(data.vals.shape, (6, 1, 2)) self.assertEqual(sum(data.vals.mask.flat), 1) self.assertEqual(round(ma.average(data.vals)), 83185) self.assertEqual(data.dims[0][0], (1, 10., 15., None)) self.assertEqual(data.dims[0][1], (2, 10., 25., None)) self.assertEqual(data.dims[0][2], (3, 20., 15., None)) self.assertEqual(data.dims[0][3], (4, 20., 25., None)) self.assertEqual(data.dims[0][4], (5, 30., 15., None)) self.assertEqual(data.dims[0][5], (6, 30., 25., None)) self.assertEqual(data.dims[1][0], (0, None, None)) self.assertEqual(set(data.dims[2]), set(("temp", "synop"))) data = vars["B13011"] self.assertEqual(data.name, "B13011") self.assertEqual(len(data.attrs), 0) self.assertEqual(len(data.dims), 3) self.assertEqual(len(data.dims[0]), 6) self.assertEqual(len(data.dims[1]), 2) self.assertEqual(len(data.dims[2]), 2) self.assertEqual(data.vals.size, 24) self.assertEqual(data.vals.shape, (6, 2, 2)) self.assertEqual(sum(data.vals.mask.flat), 0) self.assertAlmostEqual(ma.average(data.vals), 5.325, 6) self.assertEqual(data.dims[0][0], (1, 10., 15., None)) self.assertEqual(data.dims[0][1], (2, 10., 25., None)) self.assertEqual(data.dims[0][2], (3, 20., 15., None)) self.assertEqual(data.dims[0][3], (4, 20., 25., None)) self.assertEqual(data.dims[0][4], (5, 30., 15., None)) self.assertEqual(data.dims[0][5], (6, 30., 25., None)) self.assertEqual(data.dims[1][0], (4, -43200, 0)) self.assertEqual(data.dims[1][1], (4, -21600, 0)) self.assertEqual(set(data.dims[2]), set(("temp", "synop"))) self.assertEqual(vars["B10004"].dims[0], vars["B13011"].dims[0]) self.assertNotEqual(vars["B10004"].dims[1], vars["B13011"].dims[1]) self.assertEqual(vars["B10004"].dims[2], vars["B13011"].dims[2]) def testAttrs(self): # Same export as testAnaNetwork, but check that the # attributes are synchronised query = dballe.Record() query["var"] = "B10004" query["datetime"] = datetime.datetime(2007, 1, 1, 0, 0, 0) vars = read(self.db.query_data(query), (AnaIndex(), NetworkIndex()), attributes=True) self.assertEqual(len(vars), 1) self.assertCountEqual(vars.keys(), ["B10004"]) data = vars["B10004"] self.assertEqual(len(data.attrs), 2) self.assertCountEqual(sorted(data.attrs.keys()), ['B33007', 'B33040']) for net, a in ('synop', 'B33007'), ('temp', 'B33040'): self.assertEqual(data.dims, data.attrs[a].dims) self.assertEqual(data.vals.size, data.attrs[a].vals.size) self.assertEqual(data.vals.shape, data.attrs[a].vals.shape) # Find what is the network dimension where we have the attributes netidx = -1 for idx, n in enumerate(data.dims[1]): if n == net: netidx = idx break self.assertNotEqual(netidx, -1) # No attrs in the other network self.assertEqual([x for x in data.attrs[a].vals.mask[:,1-netidx].flat], [True]*len(data.attrs[a].vals.mask[:,1-netidx].flat)) # Same attrs as values in this network self.assertEqual([x for x in data.vals.mask[:,netidx].flat], [x for x in data.attrs[a].vals.mask[:,netidx].flat]) self.assertEqual(round(ma.average(data.attrs['B33007'].vals)), 32) self.assertEqual(round(ma.average(data.attrs['B33040'].vals)), 54) def testSomeAttrs(self): # Same export as testAnaNetwork, but check that the # attributes are synchronised query = dballe.Record() query["var"] = "B10004" query["datetime"] = datetime.datetime(2007, 1, 1, 0, 0, 0) vars = read(self.db.query_data(query), (AnaIndex(), NetworkIndex()), attributes=('B33040',)) self.assertEqual(len(vars), 1) self.assertCountEqual(vars.keys(), ["B10004"]) data = vars["B10004"] self.assertEqual(len(data.attrs), 1) self.assertCountEqual(data.attrs.keys(), ['B33040']) a = data.attrs['B33040'] self.assertEqual(data.dims, a.dims) self.assertEqual(data.vals.size, a.vals.size) self.assertEqual(data.vals.shape, a.vals.shape) # Find the temp index netidx = -1 for idx, n in enumerate(data.dims[1]): if n == "temp": netidx = idx break self.assertNotEqual(netidx, -1) # Only compare the values on the temp index self.assertEqual([x for x in a.vals.mask[:,1-netidx].flat], [True]*len(a.vals.mask[:,1-netidx].flat)) self.assertEqual([x for x in data.vals.mask[:,netidx].flat], [x for x in a.vals.mask[:,netidx].flat]) self.assertEqual(round(ma.average(a.vals)), 54) def testEmptyExport(self): query = dballe.Record() query["ana_id"] = 5000 vars = read(self.db.query_data(query), (AnaIndex(), NetworkIndex()), attributes=True) self.assertEqual(len(vars), 0) def testGhostIndexes(self): # If an index rejects a variable after another index # has successfuly added an item, we used to end up with # a 'ghost' index entry with no items in it indexes = (TimeRangeIndex(), \ LevelIndex(frozen=True, start=((3, 2, None, None),) )) query = dballe.Record() query['ana_id'] = 1 query['var'] = 'B13011' vars = read(self.db.query_data(query), indexes, \ checkConflicts=False) self.assertCountEqual(vars.keys(), ["B13011"]) self.assertEqual(len(vars["B13011"].dims[1]), 1) self.assertEqual(vars["B13011"].dims[0][0], (4, -21600, 0)) def testBuggyExport1(self): indexes = (AnaIndex(), LevelIndex(frozen=True, start=((1, None, None), (3, 2, None))), TimeRangeIndex(), DateTimeIndex()) query = dballe.Record() query['rep_memo'] = 'synop' vars = read(self.db.query_data(query), indexes, checkConflicts=True, attributes=True) def testExportAna(self): indexes = (AnaIndex(),) query = dballe.Record() query["rep_memo"] = "synop" vars = read(self.db.query_station_data(query), indexes, checkConflicts=True) self.assertEqual(sorted(vars.keys()), ["B01001", "B01002", "B01019"]) def testExportSyncAna(self): # Export some data indexes = (AnaIndex(), DateTimeIndex()) query = dballe.Record() query["rep_memo"] = 'synop' query["level"] = (1,) query["trange"] = (4, -21600, 0) vars = read(self.db.query_data(query), indexes, checkConflicts=True) self.assertEqual(sorted(vars.keys()), ["B13011"]) # Freeze all the indexes for i in range(len(indexes)): indexes[i].freeze() # Export the pseudoana data in sync with the data query.clear() query["rep_memo"] = "synop" anas = read(self.db.query_station_data(query), (indexes[0],), checkConflicts=True) self.assertEqual(sorted(anas.keys()), ["B01001", "B01002", "B01019"]) self.assertEqual(anas["B01001"].dims[0], vars["B13011"].dims[0]) if __name__ == "__main__": from testlib import main main("test_volnd") dballe-7.21/python/doc-dballe0000755000175000017500000001652213022043102013035 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import os os.environ["DBALLE_BUILDING_DOCS"]="true" try: import rpy_options rpy_options.set_options(VERBOSE=False) except ImportError: pass import sys import inspect import dballe import dballe.volnd import dballe.rconvert def print_indented(spaces, *args): "Print a string, indented by the given number of spaces" for s in args: for line in s.split("\n"): for i in range(1,spaces): sys.stdout.write(" ") sys.stdout.write(line) sys.stdout.write("\n") c_argspecs = { "dballe.varinfo": "(varcode)", "dballe.var": "(varcode[, default])", "dballe.describe_level": "(ltype1=None, l1=None, ltype2=None, l2=None)", "dballe.describe_trange": "(pind=None, p1=None, p2=None)", "Var.enqi": "()", "Var.enqc": "()", "Var.enqd": "()", "Var.enq": "()", "Var.get": "(default=None)", "Var.format": "(default='')", "Record.clear": "()", "Record.clear_vars": "()", "Record.get": "(key, default=None)", "Record.copy": "()", "Record.key": "(key)", "Record.var": "(key)", "Record.keys": "()", "Record.items": "()", "Record.varitems": "()", "Record.vars": "()", "Record.update": "(\*\*kwargs)", "Record.date_extremes": "()", "Record.set_station_context": "()", "Record.set_from_string": "(str)", "DB.connect": "(dsn, user='', password='')", "DB.connect_from_file": "(filename)", "DB.connect_from_url": "(url)", "DB.connect_test": "()", "DB.is_url": "(string)", "DB.disappear": "()", "DB.reset": "([repinfo_filename])", "DB.insert": "(record, can_replace=False, can_add_stations=False)", "DB.remove": "(query)", "DB.vacuum": "()", "DB.query_reports": "(query)", "DB.query_stations": "(query)", "DB.query_levels": "(query)", "DB.query_tranges": "(query)", "DB.query_variable_types": "(query)", "DB.query_summary": "(query)", "DB.query_data": "(query)", "DB.query_datetime_extremes": "(query)", "DB.attr_insert": "(varcode, attrs, reference_id=None, replace=True)", "DB.attr_remove": "(varcode, reference_id, attrs=None)", "DB.query_attrs": "(varcode, reference_id, attrs=None)", "DB.load": "(file)", "DB.export_to_file": "(query, format, filename, generic=False)", "Cursor.next": "()", "Cursor.query_attrs": "(attrs=None)", } def document_class(cls): name = cls.__name__ print() print("dballe.{}".format(name)) print("-" * (len(name) + 7)) print() print(inspect.getdoc(cls)) print() print("Members") print("```````") document_members(cls) def document(obj): if obj.__doc__ == None: return if inspect.ismodule(obj): print_indented(0, inspect.getdoc(obj)) print elif inspect.isroutine(obj) and inspect.isfunction(obj): # A Python function print_indented(2, '``'+obj.__name__ + inspect.formatargspec(*inspect.getargspec(obj))+"``") print_indented(4, inspect.getdoc(obj)) else: print_indented(2, obj.__name__) print_indented(4, inspect.getdoc(obj)) def document_members(cls): # List and classify members member_vars = [] member_funcs = [] for name, m in inspect.getmembers(cls): if name[0] == '_': continue fullname = cls.__name__ + "." + name if inspect.isroutine(m) and (inspect.isfunction(m) or fullname in c_argspecs): member_funcs.append((fullname, name, m)) elif inspect.isclass(m) or inspect.ismodule(m): pass elif m.__class__.__name__ == "_Feature": pass else: member_vars.append((fullname, name, m)) member_vars.sort() member_funcs.sort() # Document vars and get/setters for fullname, name, m in member_vars: print(".. _{}.{}:".format(cls.__name__, name)) for fullname, name, m in member_funcs: print(".. _{}.{}():".format(cls.__name__, name)) print() for fullname, name, m in member_vars: print_indented(2, name) print_indented(4, inspect.getdoc(m)) # Document functions for fullname, name, m in member_funcs: argspec = c_argspecs.get(fullname, None) if argspec is None: if inspect.isfunction(m): argspec = inspect.formatargspec(*inspect.getargspec(m)) else: argspec = "" print_indented(2, name + argspec) print_indented(4, inspect.getdoc(m)) print("""=================================== README for DB-All.e Python bindings =================================== The DB-All.e Python bindings provide 2 levels of access to a DB-All.e database: a complete API similar to the Fortran and C++ API, and a high-level API called volnd that allows to automatically export matrices of data out of the database. .. contents:: The DB-All.e API ================ The 'dballe' module has a few global methods: """) document_members(dballe) print(""" and several classes, documented in their own sections. """) document_class(dballe.Var) document_class(dballe.Varinfo) document_class(dballe.Vartable) document_class(dballe.Record) print(""" dballe.DB --------- a DB is used to access the database. Its members are: """) document_members(dballe.DB) print(""" Examples: :: # Connect to a database and run a query db = dballe.DB.connect_from_file("db.sqlite") query = dballe.Record(latmin=44.0, latmax=45.0, lonmin=11.0, lonmax=12.0) # The result is a dballe.Cursor, which can be iterated to get results as # dballe.Record objects. # The results always point to the same Record to avoid creating a new one # for every iteration: if you need to store them, use Record.copy() for rec in db.query_data(query): print rec["lat"], rec["lon"], rec["var"], rec.var().format("undefined") # Insert 2 new variables in the database rec = dballe.Record( lat=44.5, lon=11.4, level=(1,), trange=(254,), date=datetime.datetime(2013, 4, 25, 12, 0, 0), B11101=22.4, B12103=17.2, ) db.insert(rec) dballe.Cursor ------------- a Cursor is the result of database queries. It is generally not used explicitly and just iterated, but it does have a few members: """) document_members(dballe.Cursor) print(""" The volnd API ============= """) document(dballe.volnd) print(""" This is the list of dimensions supported by dballe.volnd: """) document (dballe.volnd.AnaIndex) document (dballe.volnd.NetworkIndex) document (dballe.volnd.LevelIndex) document (dballe.volnd.TimeRangeIndex) document (dballe.volnd.DateTimeIndex) document (dballe.volnd.IntervalIndex) print(""" The data object used by ``AnaIndex`` is: """) document (dballe.volnd.AnaIndexEntry) print(""" The extraction is done using the dballe.volnd.read function: """) document (dballe.volnd.read) print(""" The result of dballe.volnd.read is a dict mapping output variable names to a dballe.volnd.Data object with the results. All the Data objects share their indexes unless the *xxx*-Index definitions have been created with ``shared=False``. This is the dballe.volnd.Data class documentation: """) document (dballe.volnd.Data) print(""" The methods of dballe.volnd.Data are: """) document_members(dballe.volnd.Data) dballe-7.21/python/common.h0000644000175000017500000001052713022043102012561 00000000000000#ifndef DBALLE_PYTHON_COMMON_H #define DBALLE_PYTHON_COMMON_H #include #include #include #include #include namespace dballe { namespace python { extern wrpy_c_api* wrpy; /** * unique_ptr-like object that contains PyObject pointers, and that calls * Py_DECREF on destruction. */ template class py_unique_ptr { protected: Obj* ptr; public: py_unique_ptr(Obj* o) : ptr(o) {} py_unique_ptr(const py_unique_ptr&) = delete; py_unique_ptr(py_unique_ptr&& o) : ptr(o.ptr) { o.ptr = nullptr; } ~py_unique_ptr() { Py_XDECREF(ptr); } py_unique_ptr& operator=(const py_unique_ptr&) = delete; py_unique_ptr& operator=(py_unique_ptr&& o) { if (this == &o) return *this; Py_XDECREF(ptr); ptr = o.ptr; o.ptr = nullptr; return *this; } /// Release the reference without calling Py_DECREF Obj* release() { Obj* res = ptr; ptr = nullptr; return res; } /// Use it as a Obj operator Obj*() { return ptr; } /// Get the pointer (useful for passing to Py_BuildValue) Obj* get() { return ptr; } /// Check if ptr is not nullptr operator bool() const { return ptr; } }; typedef py_unique_ptr pyo_unique_ptr; /** * Return a python string representing a varcode */ PyObject* format_varcode(wreport::Varcode code); /// Given a wreport exception, set the Python error indicator appropriately. void set_wreport_exception(const wreport::error& e); /** * Given a wreport exception, set the Python error indicator appropriately. * * @retval * Always returns NULL, so one can do: * try { * // ...code... * } catch (wreport::error& e) { * return raise_wreport_exception(e); * } */ PyObject* raise_wreport_exception(const wreport::error& e); /// Given a generic exception, set the Python error indicator appropriately. void set_std_exception(const std::exception& e); /** * Given a generic exception, set the Python error indicator appropriately. * * @retval * Always returns NULL, so one can do: * try { * // ...code... * } catch (std::exception& e) { * return raise_std_exception(e); * } */ PyObject* raise_std_exception(const std::exception& e); #define DBALLE_CATCH_RETURN_PYO \ catch (wreport::error& e) { \ set_wreport_exception(e); return nullptr; \ } catch (std::exception& se) { \ set_std_exception(se); return nullptr; \ } #define DBALLE_CATCH_RETURN_INT \ catch (wreport::error& e) { \ set_wreport_exception(e); return -1; \ } catch (std::exception& se) { \ set_std_exception(se); return -1; \ } /// Convert a Datetime to a python datetime object PyObject* datetime_to_python(const Datetime& dt); /// Convert a python datetime object to a Datetime int datetime_from_python(PyObject* dt, Datetime& out); /// Convert a sequence of two python datetime objects to a DatetimeRange int datetimerange_from_python(PyObject* dt, DatetimeRange& out); /// Convert a Level to a python 4-tuple PyObject* level_to_python(const Level& lev); /// Convert a 4-tuple to a Level int level_from_python(PyObject* o, Level& out); /// Convert a Trange to a python 3-tuple PyObject* trange_to_python(const Trange& tr); /// Convert a 3-tuple to a Trange int trange_from_python(PyObject* o, Trange& out); /// Convert a python string, bytes or unicode to an utf8 string int string_from_python(PyObject* o, std::string& out); /// Call repr() on \a o, and return the result in \a out int object_repr(PyObject* o, std::string& out); /** * call o.fileno() and return its result. * * In case of AttributeError and IOError (parent of UnsupportedOperation, not * available from C), it clear the error indicator. * * Returns -1 if fileno() was not available or some other exception happened. * Use PyErr_Occurred to tell between the two. */ int file_get_fileno(PyObject* o); /** * call o.data() and return its result, both as a PyObject and as a buffer. * * The data returned in buf and len will be valid as long as the returned * object stays valid. */ PyObject* file_get_data(PyObject* o, char*&buf, Py_ssize_t& len); /** * Initialize the python bits to use used by the common functions. * * This can be called multiple times and will execute only once. */ int common_init(); } } #endif dballe-7.21/python/MANIFEST.in0000644000175000017500000000001413022043102012644 00000000000000include *.h dballe-7.21/python/Makefile.in0000644000175000017500000007574713022512015013210 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HAVE_RST2HTML_TRUE@am__append_1 = python-dballe.html subdir = python ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/m4_ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(pkgpython_PYTHON) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pkgpythondir)" \ "$(DESTDIR)$(docdir)" LTLIBRARIES = $(pyexec_LTLIBRARIES) _dballe_la_DEPENDENCIES = ../dballe/libdballe.la am__dballe_la_OBJECTS = _dballe_la-common.lo _dballe_la-record.lo \ _dballe_la-dballe.lo _dballe_la-db.lo _dballe_la-cursor.lo _dballe_la_OBJECTS = $(am__dballe_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = _dballe_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(_dballe_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(_dballe_la_SOURCES) DIST_SOURCES = $(_dballe_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) am__pep3147_tweak = \ sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' py_compile = $(top_srcdir)/py-compile DATA = $(doc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ $(top_srcdir)/py-compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDBALLEF_VERSION_INFO = @LIBDBALLEF_VERSION_INFO@ LIBDBALLE_VERSION_INFO = @LIBDBALLE_VERSION_INFO@ LIBOBJS = @LIBOBJS@ LIBPQ_CFLAGS = @LIBPQ_CFLAGS@ LIBPQ_LIBS = @LIBPQ_LIBS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MYSQL_CFLAGS = @MYSQL_CFLAGS@ MYSQL_LIBS = @MYSQL_LIBS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ WREPORT_CFLAGS = @WREPORT_CFLAGS@ WREPORT_LIBS = @WREPORT_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_doxygen = @have_doxygen@ have_gperf = @have_gperf@ have_rst2html = @have_rst2html@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mysql_config = @mysql_config@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ tabledir = @tabledir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TESTS_ENVIRONMENT = $(top_srcdir)/extra/runtest dballe_python_tests = test-core.py test-record.py test-db.py test-volnd.py test-rconvert.py test-csv.py # TESTS = $(dballe_python_tests) pkgpython_PYTHON = dballe/dbacsv.py dballe/rconvert.py dballe/__init__.py dballe/volnd.py pyexec_LTLIBRARIES = _dballe.la _dballe_la_SOURCES = \ common.cc \ record.cc \ dballe.cc \ db.cc \ cursor.cc _dballe_la_CPPFLAGS = $(PYTHON_CFLAGS) _dballe_la_LDFLAGS = -module -avoid-version -export-symbols-regex init_dballe _dballe_la_LIBADD = ../dballe/libdballe.la doc_DATA = python-dballe.rst $(am__append_1) EXTRA_DIST = \ doc-dballe \ common.h \ record.h \ db.h \ cursor.h \ testlib.py \ MANIFEST.in \ setup.py \ $(dballe_python_tests) AM_CPPFLAGS = -I/usr/include/python$(PYTHON_VERSION) -I$(top_srcdir) CLEANFILES = python-dballe.rst python-dballe.html all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign python/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign python/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pyexecLTLIBRARIES: $(pyexec_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pyexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pyexecdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyexecdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyexecdir)"; \ } uninstall-pyexecLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pyexecdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pyexecdir)/$$f"; \ done clean-pyexecLTLIBRARIES: -test -z "$(pyexec_LTLIBRARIES)" || rm -f $(pyexec_LTLIBRARIES) @list='$(pyexec_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } _dballe.la: $(_dballe_la_OBJECTS) $(_dballe_la_DEPENDENCIES) $(EXTRA__dballe_la_DEPENDENCIES) $(AM_V_CXXLD)$(_dballe_la_LINK) -rpath $(pyexecdir) $(_dballe_la_OBJECTS) $(_dballe_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_dballe_la-common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_dballe_la-cursor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_dballe_la-db.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_dballe_la-dballe.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_dballe_la-record.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< _dballe_la-common.lo: common.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _dballe_la-common.lo -MD -MP -MF $(DEPDIR)/_dballe_la-common.Tpo -c -o _dballe_la-common.lo `test -f 'common.cc' || echo '$(srcdir)/'`common.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_dballe_la-common.Tpo $(DEPDIR)/_dballe_la-common.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='common.cc' object='_dballe_la-common.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _dballe_la-common.lo `test -f 'common.cc' || echo '$(srcdir)/'`common.cc _dballe_la-record.lo: record.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _dballe_la-record.lo -MD -MP -MF $(DEPDIR)/_dballe_la-record.Tpo -c -o _dballe_la-record.lo `test -f 'record.cc' || echo '$(srcdir)/'`record.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_dballe_la-record.Tpo $(DEPDIR)/_dballe_la-record.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='record.cc' object='_dballe_la-record.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _dballe_la-record.lo `test -f 'record.cc' || echo '$(srcdir)/'`record.cc _dballe_la-dballe.lo: dballe.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _dballe_la-dballe.lo -MD -MP -MF $(DEPDIR)/_dballe_la-dballe.Tpo -c -o _dballe_la-dballe.lo `test -f 'dballe.cc' || echo '$(srcdir)/'`dballe.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_dballe_la-dballe.Tpo $(DEPDIR)/_dballe_la-dballe.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dballe.cc' object='_dballe_la-dballe.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _dballe_la-dballe.lo `test -f 'dballe.cc' || echo '$(srcdir)/'`dballe.cc _dballe_la-db.lo: db.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _dballe_la-db.lo -MD -MP -MF $(DEPDIR)/_dballe_la-db.Tpo -c -o _dballe_la-db.lo `test -f 'db.cc' || echo '$(srcdir)/'`db.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_dballe_la-db.Tpo $(DEPDIR)/_dballe_la-db.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='db.cc' object='_dballe_la-db.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _dballe_la-db.lo `test -f 'db.cc' || echo '$(srcdir)/'`db.cc _dballe_la-cursor.lo: cursor.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _dballe_la-cursor.lo -MD -MP -MF $(DEPDIR)/_dballe_la-cursor.Tpo -c -o _dballe_la-cursor.lo `test -f 'cursor.cc' || echo '$(srcdir)/'`cursor.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_dballe_la-cursor.Tpo $(DEPDIR)/_dballe_la-cursor.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cursor.cc' object='_dballe_la-cursor.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_dballe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _dballe_la-cursor.lo `test -f 'cursor.cc' || echo '$(srcdir)/'`cursor.cc mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgpythonPYTHON: $(pkgpython_PYTHON) @$(NORMAL_INSTALL) @list='$(pkgpython_PYTHON)'; dlist=; list2=; test -n "$(pkgpythondir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgpythondir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgpythondir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpythondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpythondir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(pkgpythondir)" $$dlist; \ else :; fi uninstall-pkgpythonPYTHON: @$(NORMAL_UNINSTALL) @list='$(pkgpython_PYTHON)'; test -n "$(pkgpythondir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(pkgpythondir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) installdirs: for dir in "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local \ clean-pyexecLTLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-docDATA install-pkgpythonPYTHON install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pyexecLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-docDATA uninstall-pkgpythonPYTHON \ uninstall-pyexecLTLIBRARIES .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \ clean-generic clean-libtool clean-local \ clean-pyexecLTLIBRARIES cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-docDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkgpythonPYTHON install-ps install-ps-am \ install-pyexecLTLIBRARIES install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-docDATA \ uninstall-pkgpythonPYTHON uninstall-pyexecLTLIBRARIES .PRECIOUS: Makefile export PYTHONPATH=. _dballe.so: _dballe.la ln -fs .libs/_dballe.so $@ python-dballe.rst: doc-dballe $(pkgpython_PYTHON) _dballe.so $(PYTHON) $(srcdir)/doc-dballe > $@ || (rm -f $@; false) python-dballe.html: python-dballe.rst rst2html $< > $@ || (rm -f $@; false) clean-local: rm -f *.pyc dballe/*.pyc _dballe.so rm -rf __pycache__ dballe/__pycache__ check-local: _dballe.so for test in $(dballe_python_tests); do \ PYTHON="$(PYTHON)" $(TESTS_ENVIRONMENT) $$test ; \ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dballe-7.21/python/setup.py0000644000175000017500000000215313022043102012626 00000000000000from setuptools import Extension, setup, command import subprocess def pkg_config_flags(options): return [ s for s in subprocess.check_output(['pkg-config'] + options + ['libdballe']).decode().strip().split(" ") if s ] dballe_module = Extension( '_dballe', sources=[ "common.cc", "cursor.cc", "dballe.cc", "db.cc", "record.cc", ], language="c++", extra_compile_args=pkg_config_flags(["--cflags"]) + ["-std=c++11"], extra_link_args=pkg_config_flags(["--libs"]), ) setup( name="dballe", version="7.6.0", author="Enrico Zini", author_email="enrico@enricozini.org", maintainer="Emanuele Di Giacomo", maintainer_email="edigiacomo@arpa.emr.it", description="Fast on-disk database for meteorological data", long_description="Fast on-disk database for meteorological data", url="http://github.com/arpa-simc/dballe", license="GPLv2+", py_modules=[], packages=['dballe'], data_files=[], zip_safe=False, include_package_data=True, exclude_package_data={}, ext_modules=[dballe_module], install_requires=['wreport'], ) dballe-7.21/python/record.cc0000644000175000017500000006563213022043102012714 00000000000000#include #include #include #include "record.h" #include "common.h" #include #include "config.h" #if PY_MAJOR_VERSION >= 3 #define PyInt_FromLong PyLong_FromLong #define PyInt_AsLong PyLong_AsLong #define PyInt_Check PyLong_Check #define Py_TPFLAGS_HAVE_ITER 0 #endif using namespace std; using namespace dballe; using namespace dballe::python; using namespace wreport; extern "C" { static const char* level_keys[4] = { "leveltype1", "l1", "leveltype2", "l2" }; static const char* trange_keys[3] = { "pindicator", "p1", "p2" }; static int any_key_set(const Record& rec, const char** keys, unsigned len) { for (unsigned i = 0; i < len; ++i) if (rec.isset(keys[i])) return 1; return 0; } /* * Record */ static int dpy_Record_setitem(dpy_Record* self, PyObject *key, PyObject *val); static int dpy_Record_contains(dpy_Record* self, PyObject *value); static PyObject* dpy_Record_getitem(dpy_Record* self, PyObject* key); static PyObject* dpy_Record_getitem(dpy_Record* self, PyObject* key) { string varname; if (string_from_python(key, varname)) return nullptr; try { // Just look at the first character to see if we need to check for python // API specific keys switch (varname[0]) { case 'd': if (varname == "datetime" || varname == "date") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return NULL; auto dt = core::Record::downcast(*self->rec).get_datetime(); if (!dt.is_missing()) return datetime_to_python(dt); PyErr_SetString(PyExc_KeyError, varname.c_str()); return NULL; } else if (varname == "datemin") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return NULL; auto dt = core::Record::downcast(*self->rec).get_datetimerange().min; if (!dt.is_missing()) return datetime_to_python(dt); PyErr_SetString(PyExc_KeyError, varname.c_str()); return NULL; } else if (varname == "datemax") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return NULL; auto dt = core::Record::downcast(*self->rec).get_datetimerange().max; if (!dt.is_missing()) return datetime_to_python(dt); PyErr_SetString(PyExc_KeyError, varname.c_str()); return NULL; } break; case 'l': if (varname == "level") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return NULL; auto lev = core::Record::downcast(*self->rec).get_level(); if (!lev.is_missing()) return level_to_python(lev); PyErr_SetString(PyExc_KeyError, varname.c_str()); return NULL; } break; case 't': if (varname == "trange" || varname == "timerange") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return NULL; auto tr = core::Record::downcast(*self->rec).get_trange(); if (!tr.is_missing()) return trange_to_python(tr); PyErr_SetString(PyExc_KeyError, varname.c_str()); return NULL; } break; } const Var* var = self->rec->get(varname.c_str()); if (var == NULL) Py_RETURN_NONE; if (!var->isset()) Py_RETURN_NONE; return wrpy->var_value_to_python(*var); } DBALLE_CATCH_RETURN_PYO } static int dpy_Record_setitem(dpy_Record* self, PyObject *key, PyObject *val) { string varname; if (string_from_python(key, varname)) return -1; try { // Check for shortcut keys if (varname == "datetime" || varname == "date") { if (varname == "date") if (int res = PyErr_WarnEx(PyExc_DeprecationWarning, "please use rec[\"datetime\"] instead of rec[\"date\"]", 1)) return res; if (val && PySequence_Check(val)) { DatetimeRange dtr; if (datetimerange_from_python(val, dtr)) return -1; self->rec->set(dtr); } else { Datetime dt; if (datetime_from_python(val, dt)) return -1; self->rec->set(dt); } self->station_context = false; return 0; } if (varname == "datemin") { if (int res = PyErr_WarnEx(PyExc_DeprecationWarning, "please use rec[\"datetime\"] = (min, max) instead of rec[\"datemin\"]", 1)) return res; DatetimeRange dtr = core::Record::downcast(*self->rec).get_datetimerange(); if (datetime_from_python(val, dtr.min)) return -1; self->rec->set(dtr); self->station_context = false; return 0; } if (varname == "datemax") { if (int res = PyErr_WarnEx(PyExc_DeprecationWarning, "please use rec[\"datetime\"] = (min, max) instead of rec[\"datemax\"]", 1)) return res; DatetimeRange dtr = core::Record::downcast(*self->rec).get_datetimerange(); if (datetime_from_python(val, dtr.max)) return -1; self->rec->set(dtr); self->station_context = false; return 0; } if (varname == "level") { Level lev; if (level_from_python(val, lev)) return -1; self->station_context = false; self->rec->set(lev); return 0; } if (varname == "trange" || varname == "timerange") { if (varname == "timerange") if (int res = PyErr_WarnEx(PyExc_DeprecationWarning, "please use rec[\"trange\"] instead of rec[\"timerange\"]", 1)) return res; Trange tr; if (trange_from_python(val, tr)) return -1; self->station_context = false; self->rec->set(tr); return 0; } if (!val) { // del rec[val] self->rec->unset(varname.c_str()); return 0; } if (PyFloat_Check(val)) { double v = PyFloat_AsDouble(val); if (v == -1.0 && PyErr_Occurred()) return -1; self->rec->set(varname.c_str(), v); } else if (PyInt_Check(val)) { long v = PyInt_AsLong(val); if (v == -1 && PyErr_Occurred()) return -1; self->rec->set(varname.c_str(), (int)v); } else if ( PyUnicode_Check(val) #if PY_MAJOR_VERSION >= 3 || PyBytes_Check(val) #else || PyString_Check(val) #endif ) { string value; if (string_from_python(val, value)) return -1; self->rec->set(varname.c_str(), value.c_str()); } else if (val == Py_None) { self->rec->unset(varname.c_str()); } else { PyErr_SetString(PyExc_TypeError, "Expected int, float, str, unicode, or None"); return -1; } return 0; } DBALLE_CATCH_RETURN_INT } static int dpy_Record_contains(dpy_Record* self, PyObject *value) { string varname; if (string_from_python(value, varname)) return -1; switch (varname[0]) { case 'd': // We don't bother checking the seconds, since they default to 0 if // missing if (varname == "date") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return -1; return !core::Record::downcast(*self->rec).get_datetime().is_missing(); } else if (varname == "datemin") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return -1; return !core::Record::downcast(*self->rec).get_datetimerange().min.is_missing(); } else if (varname == "datemax") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return -1; return !core::Record::downcast(*self->rec).get_datetimerange().max.is_missing(); } break; case 'l': if (varname == "level") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return -1; return any_key_set(*self->rec, level_keys, 4); } break; case 't': if (varname == "trange" || varname == "timerange") { if (PyErr_WarnEx(PyExc_DeprecationWarning, "date, datemin, datemax, level, trange, and timerange may disappear as record keys in a future version of DB-All.e; no replacement is planned", 1)) return -1; return any_key_set(*self->rec, trange_keys, 3); } break; } return self->rec->isset(varname.c_str()) ? 1 : 0; } static PyObject* dpy_Record_copy(dpy_Record* self) { dpy_Record* result = PyObject_New(dpy_Record, &dpy_Record_Type); if (!result) return NULL; try { result->rec = self->rec->clone().release(); result->station_context = self->station_context; return (PyObject*)result; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Record_clear(dpy_Record* self) { try { self->rec->clear(); self->station_context = false; Py_RETURN_NONE; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Record_clear_vars(dpy_Record* self) { try { self->rec->clear_vars(); Py_RETURN_NONE; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Record_keys(dpy_Record* self) { pyo_unique_ptr result(PyList_New(0)); if (!result) return nullptr; try { bool fail = false; self->rec->foreach_key([&](const char* key, const wreport::Var&) { if (fail) return; pyo_unique_ptr item(PyUnicode_FromString(key)); if (!item) { fail = true; return; } if (PyList_Append(result, item)) { fail = true; return; } }); return result.release(); } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Record_items(dpy_Record* self) { pyo_unique_ptr result(PyList_New(0)); if (!result) return nullptr; try { bool fail = false; self->rec->foreach_key([&](const char* key, const wreport::Var& val) { if (fail) return; pyo_unique_ptr py_key(PyUnicode_FromString(key)); if (!py_key) { fail = true; return; } pyo_unique_ptr py_val(wrpy->var_value_to_python(val)); if (!py_val) { fail = true; return; } pyo_unique_ptr item(PyTuple_Pack(2, py_key.get(), py_val.get())); if (!item) { fail = true; return; } if (PyList_Append(result, item)) { fail = true; return; } }); return result.release(); } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Record_varitems(dpy_Record* self) { pyo_unique_ptr result(PyList_New(0)); if (!result) return nullptr; try { bool fail = false; self->rec->foreach_key([&](const char* key, const wreport::Var& val) { if (fail) return; pyo_unique_ptr py_key(PyUnicode_FromString(key)); if (!py_key) { fail = true; return; } pyo_unique_ptr py_val((PyObject*)wrpy->var_create_copy(val)); if (!py_val) { fail = true; return; } pyo_unique_ptr item(PyTuple_Pack(2, py_key.get(), py_val.get())); if (!item) { fail = true; return; } if (PyList_Append(result, item)) { fail = true; return; } }); return result.release(); } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Record_var(dpy_Record* self, PyObject* args) { const char* name = NULL; if (!PyArg_ParseTuple(args, "s", &name)) return nullptr; try { return (PyObject*)wrpy->var_create_copy((*self->rec)[name]); } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Record_key(dpy_Record* self, PyObject* args) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "please use Record.var(name) instead of Record.key(name)", 1)) return nullptr; const char* name = NULL; if (!PyArg_ParseTuple(args, "s", &name)) return nullptr; try { return (PyObject*)wrpy->var_create_copy((*self->rec)[name]); } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Record_update(dpy_Record* self, PyObject *args, PyObject *kw) { if (kw) { PyObject *key, *value; Py_ssize_t pos = 0; while (PyDict_Next(kw, &pos, &key, &value)) if (dpy_Record_setitem(self, key, value) < 0) return NULL; } Py_RETURN_NONE; } static PyObject* dpy_Record_get(dpy_Record* self, PyObject *args, PyObject* kw) { static char* kwlist[] = { "key", "default", NULL }; PyObject* key; PyObject* def = Py_None; if (!PyArg_ParseTupleAndKeywords(args, kw, "O|O", kwlist, &key, &def)) return nullptr; try { int has = dpy_Record_contains(self, key); if (has < 0) return NULL; if (!has) { Py_INCREF(def); return def; } return dpy_Record_getitem(self, key); } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Record_vars(dpy_Record* self) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "Record.vars() may disappear in a future version of DB-All.e, and no replacement is planned", 1)) return nullptr; const std::vector& vars = core::Record::downcast(*self->rec).vars(); pyo_unique_ptr result(PyTuple_New(vars.size())); if (!result) return NULL; try { for (size_t i = 0; i < vars.size(); ++i) { pyo_unique_ptr v((PyObject*)wrpy->var_create_copy(*vars[i])); if (!v) return nullptr; if (PyTuple_SetItem(result, i, v.release())) return nullptr; } return result.release(); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyObject* dpy_Record_date_extremes(dpy_Record* self) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "Record.date_extremes may disappear in a future version of DB-All.e, and no replacement is planned", 1)) return NULL; try { DatetimeRange dtr = core::Record::downcast(*self->rec).get_datetimerange(); pyo_unique_ptr dt_min(datetime_to_python(dtr.min)); pyo_unique_ptr dt_max(datetime_to_python(dtr.max)); if (!dt_min || !dt_max) return NULL; return Py_BuildValue("(NN)", dt_min.release(), dt_max.release()); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyObject* dpy_Record_set_station_context(dpy_Record* self) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "Record.set_station_context is deprecated in favour of using DB.query_station_data", 1)) return NULL; try { self->rec->set_datetime(Datetime()); self->rec->set_level(Level()); self->rec->set_trange(Trange()); self->station_context = true; Py_RETURN_NONE; } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyObject* dpy_Record_set_from_string(dpy_Record* self, PyObject *args) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "Record.set_from_string() may disappear in a future version of DB-All.e, and no replacement is planned", 1)) return nullptr; const char* str = NULL; if (!PyArg_ParseTuple(args, "s", &str)) return NULL; try { core::Record::downcast(*self->rec).set_from_string(str); self->station_context = false; Py_RETURN_NONE; } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyMethodDef dpy_Record_methods[] = { {"copy", (PyCFunction)dpy_Record_copy, METH_NOARGS, "return a deep copy of the Record" }, {"clear", (PyCFunction)dpy_Record_clear, METH_NOARGS, "remove all data from the record" }, {"clear_vars", (PyCFunction)dpy_Record_clear_vars, METH_NOARGS, "remove all variables from the record, leaving the keywords intact" }, {"keys", (PyCFunction)dpy_Record_keys, METH_NOARGS, "return a list with all the keys set in the Record." }, {"items", (PyCFunction)dpy_Record_items, METH_NOARGS, "return a list with all the (key, value) tuples set in the Record." }, {"varitems", (PyCFunction)dpy_Record_varitems, METH_NOARGS, "return a list with all the (key, `dballe.Var`_) tuples set in the Record." }, {"var", (PyCFunction)dpy_Record_var, METH_VARARGS, "return a `dballe.Var`_ from the record, given its key." }, {"update", (PyCFunction)dpy_Record_update, METH_VARARGS | METH_KEYWORDS, "set many record keys/vars in a single shot, via kwargs" }, {"get", (PyCFunction)dpy_Record_get, METH_VARARGS | METH_KEYWORDS, "lookup a value, returning a fallback value (None by default) if unset" }, // Deprecated {"key", (PyCFunction)dpy_Record_var, METH_VARARGS, "(deprecated) return a `dballe.Var`_ from the record, given its key." }, {"vars", (PyCFunction)dpy_Record_vars, METH_NOARGS, "(deprecated) return a sequence with all the variables set on the Record. Note that this does not include keys." }, {"date_extremes", (PyCFunction)dpy_Record_date_extremes, METH_NOARGS, "(deprecated) get two datetime objects with the lower and upper bounds of the datetime period in this record" }, {"set_station_context", (PyCFunction)dpy_Record_set_station_context, METH_NOARGS, "(deprecated) set the date, level and time range values to match the station data context" }, {"set_from_string", (PyCFunction)dpy_Record_set_from_string, METH_VARARGS, "(deprecated) set values from a 'key=val' string" }, {NULL} }; static int dpy_Record_init(dpy_Record* self, PyObject* args, PyObject* kw) { // Construct on preallocated memory self->rec = Record::create().release(); self->station_context = false; if (kw) { PyObject *key, *value; Py_ssize_t pos = 0; while (PyDict_Next(kw, &pos, &key, &value)) if (dpy_Record_setitem(self, key, value) < 0) return -1; } return 0; } static void dpy_Record_dealloc(dpy_Record* self) { delete self->rec; self->rec = 0; } static PyObject* dpy_Record_str(dpy_Record* self) { /* std::string f = self->var.format("None"); return PyString_FromString(f.c_str()); */ return PyUnicode_FromString("Record"); } static PyObject* dpy_Record_repr(dpy_Record* self) { /* string res = "Var('"; res += varcode_format(self->var.code()); if (self->var.info()->is_string()) { res += "', '"; res += self->var.format(); res += "')"; } else { res += "', "; res += self->var.format("None"); res += ")"; } return PyString_FromString(res.c_str()); */ return PyUnicode_FromString("Record object"); } static PySequenceMethods dpy_Record_sequence = { 0, // sq_length 0, // sq_concat 0, // sq_repeat 0, // sq_item 0, // sq_slice 0, // sq_ass_item 0, // sq_ass_slice (objobjproc)dpy_Record_contains, // sq_contains }; static PyMappingMethods dpy_Record_mapping = { 0, // __len__ (binaryfunc)dpy_Record_getitem, // __getitem__ (objobjargproc)dpy_Record_setitem, // __setitem__ }; static PyObject* dpy_Record_iter(dpy_Record* self) { pyo_unique_ptr keys(dpy_Record_keys(self)); if (!keys) return nullptr; pyo_unique_ptr iter(PyObject_GetIter(keys)); if (!iter) return nullptr; return iter.release(); } static PyObject* dpy_Record_richcompare(dpy_Record* a, dpy_Record* b, int op) { PyObject *result; // Make sure both arguments are Records. if (!(dpy_Record_Check(a) && dpy_Record_Check(b))) { result = Py_NotImplemented; goto out; } int cmp; switch (op) { case Py_EQ: cmp = *a->rec == *b->rec; break; case Py_NE: cmp = *a->rec != *b->rec; break; default: // https://www.python.org/dev/peps/pep-0207/ // If the function cannot compare the particular combination of objects, it // should return a new reference to Py_NotImplemented. result = Py_NotImplemented; goto out; } result = cmp ? Py_True : Py_False; out: Py_INCREF(result); return result; } PyTypeObject dpy_Record_Type = { PyVarObject_HEAD_INIT(NULL, 0) "dballe.Record", // tp_name sizeof(dpy_Record), // tp_basicsize 0, // tp_itemsize (destructor)dpy_Record_dealloc, // tp_dealloc 0, // tp_print 0, // tp_getattr 0, // tp_setattr 0, // tp_compare (reprfunc)dpy_Record_repr, // tp_repr 0, // tp_as_number &dpy_Record_sequence, // tp_as_sequence &dpy_Record_mapping, // tp_as_mapping 0, // tp_hash 0, // tp_call (reprfunc)dpy_Record_str, // tp_str 0, // tp_getattro 0, // tp_setattro 0, // tp_as_buffer Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER, // tp_flags R"( A record holds a number of key->value mappings, similar to a dict. Keys are strings, from a fixed set of keywords defined in DB-All.e and documented in the Fortran API documentation, plus all varcodes from the DB-All.e BUFR/CREX B table. Using unknown keys raises an exception. Values are values internally stored inside `dballe.Var`_ objects, with a `dballe.Varinfo`_ corresponding to the key. Record's mapping interface directly exposes the variable values, but the `dballe.Var`_ objects are still accessible using Record.var(key). A Record is used to make queries to the database, and read results. When creating a new record, keyword arguments can be passed and they are set as if Record.update(\*\*kwargs) had been called. When setting items, either via __setitem__ and via update(), there are special keys that allow to set many items in a single call:: # Set year, month, day, hour, min, sec rec["datetime"] = None rec["datetime"] = datetime.datetime(2015, 06, 21, 12, 0, 0) # Set yearmin..secmin and yearmax..secmax rec["datetime"] = (None, None) rec["datetime"] = (datetime.datetime(2014), None) rec["datetime"] = (None, datetime.datetime(2015)) rec["datetime"] = (datetime.datetime(2014), datetime.datetime(2015)) # Set leveltype1, l1, leveltype2, l2 rec["level"] = None rec["level"] = (103, 2000) rec["level"] = (103, 2000, 103, 10000) # Set pindicator, p1, p2 rec["trange"] = None rec["trange"] = (205, 0, 10800) Examples:: rec = Record(lat=44.05, lon=11.03, B12101=22.1) # Key lookup returns the value of the corresponding variable print(rec["lat"], rec["B12101"]) # Use .var() to get the variable itself; note that it can return # None if the value is not set print(rec.var("lat").info.desc, rec.var("B12101").info.desc) # Iterating a record iterates all keys for key in rec: print(key, rec.get(key, "undefined"), rec.var(key).info.desc) # Use .vars() to get a list of only the varcode keys for varcode in rec.vars(): print(varcode, rec.get(varcode, "undefined"), rec.var(varcode).info.desc) )", // tp_doc 0, // tp_traverse 0, // tp_clear (richcmpfunc)dpy_Record_richcompare, // tp_richcompare 0, // tp_weaklistoffset (getiterfunc)dpy_Record_iter, // tp_iter 0, // tp_iternext dpy_Record_methods, // tp_methods 0, // tp_members 0, // tp_getset 0, // tp_base 0, // tp_dict 0, // tp_descr_get 0, // tp_descr_set 0, // tp_dictoffset (initproc)dpy_Record_init, // tp_init 0, // tp_alloc 0, // tp_new }; } namespace dballe { namespace python { dpy_Record* record_create() { return (dpy_Record*)PyObject_CallObject((PyObject*)&dpy_Record_Type, NULL); } void register_record(PyObject* m) { common_init(); dpy_Record_Type.tp_new = PyType_GenericNew; if (PyType_Ready(&dpy_Record_Type) < 0) return; Py_INCREF(&dpy_Record_Type); PyModule_AddObject(m, "Record", (PyObject*)&dpy_Record_Type); } } } dballe-7.21/python/test-rconvert.py0000755000175000017500000000420013022043102014303 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import dballe from dballe import volnd, rconvert import numpy, rpy2 from datetime import * import unittest class TestR(unittest.TestCase): def setUp(self): from testlib import fill_volnd numpy.seterr(divide="raise", over="raise", under="raise", invalid="raise") self.db = dballe.DB.connect_test() fill_volnd(self.db) #def f(x,y,z): # return (x+1)*100+(y+1)*10+(z+1) #a = MA.array(numpy.fromfunction(f, (4,3,2))) ##a = MA.array(numpy.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]], dtype='int8')) #a[1,1,1]=MA.masked #print "verypre", a ##rconvert.makeConvertible(a) #rpy.r.print_(rconvert.ma_to_r(a, dimnames=[['a','b','c','d'],['e','f','g'],['h', 'i']])) def test_volnd(self): # Test from volnd query = dballe.Record(datetime=datetime(2007, 1, 1, 0, 0, 0)) #query.set("var", "B10004") #query.settimerange(dballe.TimeRange(0,0,0)) vars = volnd.read(self.db.query_data(query), (volnd.AnaIndex(), volnd.NetworkIndex(), volnd.LevelIndex(), volnd.TimeRangeIndex())) #print "ana:", vars["B10004"].dims[0] #print "net:", vars["B10004"].dims[1] #print vars["B10004"] #rpy.r.print_(rconvert.vnddata_to_r(vars['B10004'])) #rpy.r.assign('pippo', rconvert.vnddata_to_r(vars['B10004'])) #rpy.r.save('pippo', file='/tmp/pippo') rconvert.volnd_save_to_r(vars, "/tmp/pippo") def test_bug1(self): # Second test case reported by Paolo query = dballe.Record() #query.setd("latmin", 10.) #query.setd("latmax", 60.) #query.setd("lonmin", -10.) #query.setd("lonmax", 40.) query["var"] = "B13011" vars = volnd.read(self.db.query_data(query), (volnd.AnaIndex(),volnd.DateTimeIndex()), checkConflicts=False) rconvert.volnd_save_to_r(vars, "/tmp/pippo") if __name__ == "__main__": from testlib import main main("test_rconvert") dballe-7.21/python/db.cc0000644000175000017500000007021513022043102012014 00000000000000#include #include "db.h" #include "record.h" #include "cursor.h" #include "common.h" #include "dballe/types.h" #include "dballe/file.h" #include "dballe/core/query.h" #include "dballe/core/values.h" #include "dballe/message.h" #include "dballe/msg/codec.h" #include #include #include "config.h" #if PY_MAJOR_VERSION >= 3 #define PyInt_FromLong PyLong_FromLong #define PyInt_AsLong PyLong_AsLong #define PyInt_Check PyLong_Check #define PyInt_Type PyLong_Type #define Py_TPFLAGS_HAVE_ITER 0 #endif using namespace std; using namespace dballe; using namespace dballe::python; using namespace wreport; template static PyObject* get_insert_ids(const Vals& vals) { pyo_unique_ptr res(PyDict_New()); pyo_unique_ptr ana_id(PyInt_FromLong(vals.info.ana_id)); if (!ana_id) return nullptr; if (PyDict_SetItemString(res, "ana_id", ana_id)) return nullptr; for (const auto& v: vals.values) { pyo_unique_ptr id(PyInt_FromLong(v.second.data_id)); pyo_unique_ptr varcode(format_varcode(v.first)); if (PyDict_SetItem(res, varcode, id)) return nullptr; } return res.release(); } extern "C" { static PyGetSetDef dpy_DB_getsetters[] = { //{"code", (getter)dpy_Var_code, NULL, "variable code", NULL }, //{"isset", (getter)dpy_Var_isset, NULL, "true if the value is set", NULL }, {NULL} }; static PyObject* dpy_DB_connect_from_file(PyTypeObject *type, PyObject *args) { const char* fname; if (!PyArg_ParseTuple(args, "s", &fname)) return NULL; unique_ptr db; try { db = DB::connect_from_file(fname); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } return (PyObject*)db_create(move(db)); } static PyObject* dpy_DB_connect_from_url(PyTypeObject *type, PyObject *args) { const char* url; if (!PyArg_ParseTuple(args, "s", &url)) return NULL; unique_ptr db; try { db = DB::connect_from_url(url); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } return (PyObject*)db_create(move(db)); } static PyObject* dpy_DB_connect_test(PyTypeObject *type) { unique_ptr db; try { db = DB::connect_test(); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } return (PyObject*)db_create(move(db)); } static PyObject* dpy_DB_is_url(PyTypeObject *type, PyObject *args) { const char* url; if (!PyArg_ParseTuple(args, "s", &url)) return NULL; if (DB::is_url(url)) Py_RETURN_TRUE; else Py_RETURN_FALSE; } static PyObject* dpy_DB_reset(dpy_DB* self, PyObject *args) { const char* repinfo_file = 0; if (!PyArg_ParseTuple(args, "|s", &repinfo_file)) return NULL; try { self->db->reset(repinfo_file); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } Py_RETURN_NONE; } /* virtual void update_repinfo(const char* repinfo_file, int* added, int* deleted, int* updated) = 0; */ static PyObject* dpy_DB_insert(dpy_DB* self, PyObject* args, PyObject* kw) { static const char* kwlist[] = { "record", "can_replace", "can_add_stations", NULL }; dpy_Record* record; int can_replace = 0; int station_can_add = 0; if (PyErr_WarnEx(PyExc_DeprecationWarning, "please use DB.insert_station_data or DB.insert_data instead of DB.insert", 1)) return NULL; if (!PyArg_ParseTupleAndKeywords(args, kw, "O!|ii", const_cast(kwlist), &dpy_Record_Type, &record, &can_replace, &station_can_add)) return NULL; try { if (record->station_context) { StationValues vals(*record->rec); self->db->insert_station_data(vals, can_replace, station_can_add); } else { DataValues vals(*record->rec); self->db->insert_data(vals, can_replace, station_can_add); } Py_RETURN_NONE; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_insert_station_data(dpy_DB* self, PyObject* args, PyObject* kw) { static const char* kwlist[] = { "record", "can_replace", "can_add_stations", NULL }; dpy_Record* record; int can_replace = 0; int station_can_add = 0; if (!PyArg_ParseTupleAndKeywords(args, kw, "O!|ii", const_cast(kwlist), &dpy_Record_Type, &record, &can_replace, &station_can_add)) return NULL; try { StationValues vals(*record->rec); self->db->insert_station_data(vals, can_replace, station_can_add); return get_insert_ids(vals); } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_insert_data(dpy_DB* self, PyObject* args, PyObject* kw) { static const char* kwlist[] = { "record", "can_replace", "can_add_stations", NULL }; dpy_Record* record; int can_replace = 0; int station_can_add = 0; if (!PyArg_ParseTupleAndKeywords(args, kw, "O!|ii", const_cast(kwlist), &dpy_Record_Type, &record, &can_replace, &station_can_add)) return NULL; try { DataValues vals(*record->rec); self->db->insert_data(vals, can_replace, station_can_add); return get_insert_ids(vals); } DBALLE_CATCH_RETURN_PYO } static unsigned db_load_file_enc(DB* db, File::Encoding encoding, FILE* file, bool close_on_exit, const std::string& name) { std::unique_ptr f = File::create(encoding, file, close_on_exit, name); std::unique_ptr imp = msg::Importer::create(f->encoding()); unsigned count = 0; f->foreach([&](const BinaryMessage& raw) { Messages msgs = imp->from_binary(raw); db->import_msgs(msgs, NULL, 0); ++count; return true; }); return count; } static unsigned db_load_file(DB* db, FILE* file, bool close_on_exit, const std::string& name) { std::unique_ptr f = File::create(file, close_on_exit, name); std::unique_ptr imp = msg::Importer::create(f->encoding()); unsigned count = 0; f->foreach([&](const BinaryMessage& raw) { Messages msgs = imp->from_binary(raw); db->import_msgs(msgs, NULL, 0); ++count; return true; }); return count; } static PyObject* dpy_DB_load(dpy_DB* self, PyObject* args) { PyObject* obj; const char* encoding = nullptr; if (!PyArg_ParseTuple(args, "O|s", &obj, &encoding)) return nullptr; string repr; if (object_repr(obj, repr)) return nullptr; try { int fileno = file_get_fileno(obj); if (fileno == -1) { if (PyErr_Occurred()) return nullptr; char* buf; Py_ssize_t len; pyo_unique_ptr data = file_get_data(obj, buf, len); if (!data) return nullptr; FILE* f = fmemopen(buf, len, "r"); if (!f) return nullptr; unsigned count; if (encoding) { count = db_load_file_enc(self->db, File::parse_encoding(encoding), f, true, repr); } else count = db_load_file(self->db, f, true, repr); return PyInt_FromLong(count); } else { // Duplicate the file descriptor because both python and libc will want to // close it fileno = dup(fileno); if (fileno == -1) { PyErr_Format(PyExc_OSError, "cannot dup() the file handle from %s", repr.c_str()); return nullptr; } FILE* f = fdopen(fileno, "rb"); if (f == nullptr) { close(fileno); PyErr_Format(PyExc_OSError, "cannot fdopen() the dup()ed file handle from %s", repr.c_str()); return nullptr; } unsigned count; if (encoding) { count = db_load_file_enc(self->db, File::parse_encoding(encoding), f, true, repr); } else count = db_load_file(self->db, f, true, repr); return PyInt_FromLong(count); } } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyObject* dpy_DB_remove_station_data(dpy_DB* self, PyObject* args) { dpy_Record* record; if (!PyArg_ParseTuple(args, "O!", &dpy_Record_Type, &record)) return NULL; // TODO: if it is a dict, turn it directly into a Query? try { core::Query query; query.set_from_record(*record->rec); self->db->remove_station_data(query); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } Py_RETURN_NONE; } static PyObject* dpy_DB_remove(dpy_DB* self, PyObject* args) { dpy_Record* record; if (!PyArg_ParseTuple(args, "O!", &dpy_Record_Type, &record)) return NULL; // TODO: if it is a dict, turn it directly into a Query? try { core::Query query; query.set_from_record(*record->rec); if (record->station_context) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "DB.remove after Record.set_station_context is deprecated in favour of using DB.remove_station_data", 1)) return NULL; self->db->remove_station_data(query); } else self->db->remove(query); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } Py_RETURN_NONE; } static PyObject* dpy_DB_disappear(dpy_DB* self) { try { self->db->disappear(); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } Py_RETURN_NONE; } static PyObject* dpy_DB_vacuum(dpy_DB* self) { try { self->db->vacuum(); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } Py_RETURN_NONE; } static PyObject* dpy_DB_query_stations(dpy_DB* self, PyObject* args) { dpy_Record* record; if (!PyArg_ParseTuple(args, "O!", &dpy_Record_Type, &record)) return NULL; // TODO: if it is a dict, turn it directly into a Query? try { core::Query query; query.set_from_record(*record->rec); std::unique_ptr res = self->db->query_stations(query); return (PyObject*)cursor_create(self, move(res)); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyObject* dpy_DB_query_data(dpy_DB* self, PyObject* args) { dpy_Record* record; if (!PyArg_ParseTuple(args, "O!", &dpy_Record_Type, &record)) return NULL; // TODO: if it is a dict, turn it directly into a Query? //self->db->dump(stderr); try { core::Query query; query.set_from_record(*record->rec); std::unique_ptr res; if (record->station_context) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "DB.query_data after Record.set_station_context is deprecated in favour of using DB.query_station_data", 1)) return NULL; res = self->db->query_station_data(query); } else res = self->db->query_data(query); return (PyObject*)cursor_create(self, move(res)); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyObject* dpy_DB_query_station_data(dpy_DB* self, PyObject* args) { dpy_Record* record; if (!PyArg_ParseTuple(args, "O!", &dpy_Record_Type, &record)) return NULL; // TODO: if it is a dict, turn it directly into a Query? try { core::Query query; query.set_from_record(*record->rec); std::unique_ptr res = self->db->query_station_data(query); return (PyObject*)cursor_create(self, move(res)); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyObject* dpy_DB_query_summary(dpy_DB* self, PyObject* args) { dpy_Record* record; if (!PyArg_ParseTuple(args, "O!", &dpy_Record_Type, &record)) return NULL; // TODO: if it is a dict, turn it directly into a Query? try { core::Query query; query.set_from_record(*record->rec); std::unique_ptr res = self->db->query_summary(query); return (PyObject*)cursor_create(self, move(res)); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyObject* dpy_DB_query_attrs(dpy_DB* self, PyObject* args, PyObject* kw) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "please use DB.attr_query_station or DB.attr_query_data instead of DB.query_attrs", 1)) return NULL; static const char* kwlist[] = { "varcode", "reference_id", "attrs", NULL }; int reference_id; const char* varname; PyObject* attrs = 0; if (!PyArg_ParseTupleAndKeywords(args, kw, "si|O", const_cast(kwlist), &varname, &reference_id, &attrs)) return NULL; // Read the attribute list, if provided db::AttrList codes; if (db_read_attrlist(attrs, codes)) return NULL; self->attr_rec->rec->clear(); try { wreport::Varcode varcode = resolve_varcode(varname); if (self->db->is_station_variable(reference_id, varcode)) self->db->attr_query_station(reference_id, [&](unique_ptr&& var) { if (!codes.empty() && find(codes.begin(), codes.end(), var->code()) == codes.end()) return; self->attr_rec->rec->set(move(var)); }); else self->db->attr_query_data(reference_id, [&](unique_ptr&& var) { if (!codes.empty() && find(codes.begin(), codes.end(), var->code()) == codes.end()) return; self->attr_rec->rec->set(move(var)); }); Py_INCREF(self->attr_rec); return (PyObject*)self->attr_rec; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_attr_query_station(dpy_DB* self, PyObject* args) { int reference_id; if (!PyArg_ParseTuple(args, "i", &reference_id)) return NULL; self->attr_rec->rec->clear(); try { self->db->attr_query_station(reference_id, [&](unique_ptr var) { self->attr_rec->rec->set(move(var)); }); Py_INCREF(self->attr_rec); return (PyObject*)self->attr_rec; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_attr_query_data(dpy_DB* self, PyObject* args) { int reference_id; if (!PyArg_ParseTuple(args, "i", &reference_id)) return NULL; self->attr_rec->rec->clear(); try { self->db->attr_query_data(reference_id, [&](unique_ptr&& var) { self->attr_rec->rec->set(move(var)); }); Py_INCREF(self->attr_rec); return (PyObject*)self->attr_rec; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_attr_insert(dpy_DB* self, PyObject* args, PyObject* kw) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "please use DB.attr_insert_station or DB.attr_insert_data instead of DB.attr_insert", 1)) return NULL; static const char* kwlist[] = { "varcode", "attrs", "reference_id", NULL }; int reference_id = -1; const char* varname; dpy_Record* record; if (!PyArg_ParseTupleAndKeywords(args, kw, "sO!|i", const_cast(kwlist), &varname, &dpy_Record_Type, &record, &reference_id)) return NULL; if (reference_id == -1) { PyErr_SetString(PyExc_ValueError, "please provide a reference_id argument: implicitly reusing the one from the last insert is not supported anymore"); return NULL; } try { if (self->db->is_station_variable(reference_id, resolve_varcode(varname))) self->db->attr_insert_data(reference_id, *record->rec); else self->db->attr_insert_data(reference_id, *record->rec); Py_RETURN_NONE; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_attr_insert_station(dpy_DB* self, PyObject* args) { int data_id; dpy_Record* attrs; if (!PyArg_ParseTuple(args, "iO!", &data_id, &dpy_Record_Type, &attrs)) return NULL; try { self->db->attr_insert_station(data_id, *attrs->rec); Py_RETURN_NONE; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_attr_insert_data(dpy_DB* self, PyObject* args) { int data_id; dpy_Record* attrs; if (!PyArg_ParseTuple(args, "iO!", &data_id, &dpy_Record_Type, &attrs)) return NULL; try { self->db->attr_insert_data(data_id, *attrs->rec); Py_RETURN_NONE; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_attr_remove(dpy_DB* self, PyObject* args, PyObject* kw) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "please use DB.attr_remove_station or DB.attr_remove_data instead of DB.attr_remove", 1)) return NULL; static const char* kwlist[] = { "varcode", "reference_id", "attrs", NULL }; int reference_id; const char* varname; PyObject* attrs = 0; if (!PyArg_ParseTupleAndKeywords(args, kw, "si|O", const_cast(kwlist), &varname, &reference_id, &attrs)) return NULL; // Read the attribute list, if provided db::AttrList codes; if (db_read_attrlist(attrs, codes)) return NULL; try { if (self->db->is_station_variable(reference_id, resolve_varcode(varname))) self->db->attr_remove_station(reference_id, codes); else self->db->attr_remove_data(reference_id, codes); Py_RETURN_NONE; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_attr_remove_station(dpy_DB* self, PyObject* args) { int reference_id; PyObject* attrs = 0; if (!PyArg_ParseTuple(args, "i|O", &reference_id, &attrs)) return NULL; // Read the attribute list, if provided db::AttrList codes; if (db_read_attrlist(attrs, codes)) return NULL; try { self->db->attr_remove_station(reference_id, codes); Py_RETURN_NONE; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_attr_remove_data(dpy_DB* self, PyObject* args) { int reference_id; PyObject* attrs = 0; if (!PyArg_ParseTuple(args, "i|O", &reference_id, &attrs)) return NULL; // Read the attribute list, if provided db::AttrList codes; if (db_read_attrlist(attrs, codes)) return NULL; try { self->db->attr_remove_data(reference_id, codes); Py_RETURN_NONE; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_DB_export_to_file(dpy_DB* self, PyObject* args, PyObject* kw) { static const char* kwlist[] = { "query", "format", "filename", "generic", NULL }; dpy_Record* query; const char* format; const char* filename; int as_generic = 0; if (!PyArg_ParseTupleAndKeywords(args, kw, "O!ss|i", const_cast(kwlist), &dpy_Record_Type, &query, &format, &filename, &as_generic)) return NULL; File::Encoding encoding = File::BUFR; if (strcmp(format, "BUFR") == 0) encoding = File::BUFR; else if (strcmp(format, "CREX") == 0) encoding = File::CREX; else { PyErr_SetString(PyExc_ValueError, "encoding must be one of BUFR or CREX"); return NULL; } try { std::unique_ptr out = File::create(encoding, filename, "wb"); msg::Exporter::Options opts; if (as_generic) opts.template_name = "generic"; auto exporter = msg::Exporter::create(out->encoding(), opts); auto q = Query::create(); q->set_from_record(*query->rec); self->db->export_msgs(*q, [&](unique_ptr&& msg) { Messages msgs; msgs.append(move(msg)); out->write(exporter->to_binary(msgs)); return true; }); Py_RETURN_NONE; } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } static PyMethodDef dpy_DB_methods[] = { {"connect_from_file", (PyCFunction)dpy_DB_connect_from_file, METH_VARARGS | METH_CLASS, "Create a DB connecting to a SQLite file" }, {"connect_from_url", (PyCFunction)dpy_DB_connect_from_url, METH_VARARGS | METH_CLASS, "Create a DB as defined in an URL-like string" }, {"connect_test", (PyCFunction)dpy_DB_connect_test, METH_NOARGS | METH_CLASS, "Create a DB for running the test suite, as configured in the test environment" }, {"is_url", (PyCFunction)dpy_DB_is_url, METH_VARARGS | METH_CLASS, "Checks if a string looks like a DB url" }, {"disappear", (PyCFunction)dpy_DB_disappear, METH_NOARGS, "Remove all our traces from the database, if applicable." }, {"reset", (PyCFunction)dpy_DB_reset, METH_VARARGS, "Reset the database, removing all existing Db-All.e tables and re-creating them empty." }, {"insert", (PyCFunction)dpy_DB_insert, METH_VARARGS | METH_KEYWORDS, "(deprecated)Insert a record in the database" }, {"insert_station_data", (PyCFunction)dpy_DB_insert_station_data, METH_VARARGS | METH_KEYWORDS, "Insert station values in the database" }, {"insert_data", (PyCFunction)dpy_DB_insert_data, METH_VARARGS | METH_KEYWORDS, "Insert data values in the database" }, {"load", (PyCFunction)dpy_DB_load, METH_VARARGS, R"( load(fp, encoding=None) Load a file object in the database. An encoding can optionally be provided as a string ("BUFR", "CREX", "AOF"). If encoding is None then load will try to autodetect based on the first byte of the file. )" }, {"remove_station_data", (PyCFunction)dpy_DB_remove_station_data, METH_VARARGS, "Remove station variables from the database" }, {"remove", (PyCFunction)dpy_DB_remove, METH_VARARGS, "Remove variables from the database" }, {"vacuum", (PyCFunction)dpy_DB_vacuum, METH_NOARGS, "Perform database cleanup operations" }, {"query_stations", (PyCFunction)dpy_DB_query_stations, METH_VARARGS, "Query the station archive in the database; returns a Cursor" }, {"query_station_data", (PyCFunction)dpy_DB_query_station_data, METH_VARARGS, "Query the station variables in the database; returns a Cursor" }, {"query_data", (PyCFunction)dpy_DB_query_data, METH_VARARGS, "Query the variables in the database; returns a Cursor" }, {"query_summary", (PyCFunction)dpy_DB_query_summary, METH_VARARGS, "Query the summary of the results of a query; returns a Cursor" }, {"query_attrs", (PyCFunction)dpy_DB_query_attrs, METH_VARARGS | METH_KEYWORDS, "Query attributes" }, {"attr_query_station", (PyCFunction)dpy_DB_attr_query_station, METH_VARARGS, "Query attributes" }, {"attr_query_data", (PyCFunction)dpy_DB_attr_query_data, METH_VARARGS, "Query attributes" }, {"attr_insert", (PyCFunction)dpy_DB_attr_insert, METH_VARARGS | METH_KEYWORDS, "Insert new attributes into the database" }, {"attr_insert_station", (PyCFunction)dpy_DB_attr_insert_station, METH_VARARGS, "Insert new attributes into the database" }, {"attr_insert_data", (PyCFunction)dpy_DB_attr_insert_data, METH_VARARGS, "Insert new attributes into the database" }, {"attr_remove", (PyCFunction)dpy_DB_attr_remove, METH_VARARGS | METH_KEYWORDS, "Remove attributes" }, {"attr_remove_station", (PyCFunction)dpy_DB_attr_remove_station, METH_VARARGS, "Remove attributes" }, {"attr_remove_data", (PyCFunction)dpy_DB_attr_remove_data, METH_VARARGS, "Remove attributes" }, {"export_to_file", (PyCFunction)dpy_DB_export_to_file, METH_VARARGS | METH_KEYWORDS, "Export data matching a query as bulletins to a named file" }, {NULL} }; static int dpy_DB_init(dpy_DB* self, PyObject* args, PyObject* kw) { // People should not invoke DB() as a constructor, but if they do, // this is better than a segfault later on PyErr_SetString(PyExc_NotImplementedError, "DB objects cannot be constructed explicitly"); return -1; } static void dpy_DB_dealloc(dpy_DB* self) { if (self->db) delete self->db; } static PyObject* dpy_DB_str(dpy_DB* self) { /* std::string f = self->var.format("None"); return PyUnicode_FromString(f.c_str()); */ return PyUnicode_FromString("DB"); } static PyObject* dpy_DB_repr(dpy_DB* self) { /* string res = "Var('"; res += varcode_format(self->var.code()); if (self->var.info()->is_string()) { res += "', '"; res += self->var.format(); res += "')"; } else { res += "', "; res += self->var.format("None"); res += ")"; } return PyUnicode_FromString(res.c_str()); */ return PyUnicode_FromString("DB object"); } PyTypeObject dpy_DB_Type = { PyVarObject_HEAD_INIT(NULL, 0) "dballe.DB", // tp_name sizeof(dpy_DB), // tp_basicsize 0, // tp_itemsize (destructor)dpy_DB_dealloc, // tp_dealloc 0, // tp_print 0, // tp_getattr 0, // tp_setattr 0, // tp_compare (reprfunc)dpy_DB_repr, // tp_repr 0, // tp_as_number 0, // tp_as_sequence 0, // tp_as_mapping 0, // tp_hash 0, // tp_call (reprfunc)dpy_DB_str, // tp_str 0, // tp_getattro 0, // tp_setattro 0, // tp_as_buffer Py_TPFLAGS_DEFAULT, // tp_flags "DB-All.e DB", // tp_doc 0, // tp_traverse 0, // tp_clear 0, // tp_richcompare 0, // tp_weaklistoffset 0, // tp_iter 0, // tp_iternext dpy_DB_methods, // tp_methods 0, // tp_members dpy_DB_getsetters, // tp_getset 0, // tp_base 0, // tp_dict 0, // tp_descr_get 0, // tp_descr_set 0, // tp_dictoffset (initproc)dpy_DB_init, // tp_init 0, // tp_alloc 0, // tp_new }; } namespace dballe { namespace python { int db_read_attrlist(PyObject* attrs, db::AttrList& codes) { if (!attrs) return 0; pyo_unique_ptr iter(PyObject_GetIter(attrs)); if (!iter) return -1; try { while (PyObject* iter_item = PyIter_Next(iter)) { pyo_unique_ptr item(iter_item); string name; if (string_from_python(item, name)) return -1; codes.push_back(resolve_varcode(name)); } return 0; } DBALLE_CATCH_RETURN_INT } dpy_DB* db_create(std::unique_ptr db) { dpy_Record* attr_rec = record_create(); if (!attr_rec) return NULL; dpy_DB* result = PyObject_New(dpy_DB, &dpy_DB_Type); if (!result) { Py_DECREF(attr_rec); return NULL; } result->db = db.release(); result->attr_rec = attr_rec; return result; } void register_db(PyObject* m) { common_init(); dpy_DB_Type.tp_new = PyType_GenericNew; if (PyType_Ready(&dpy_DB_Type) < 0) return; Py_INCREF(&dpy_DB_Type); PyModule_AddObject(m, "DB", (PyObject*)&dpy_DB_Type); } } } dballe-7.21/python/test-db.py0000755000175000017500000001754313022043102013044 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import dballe import os import io import datetime import unittest import warnings class DballeTest(unittest.TestCase): def setUp(self): if not hasattr(self, "assertCountEqual"): self.assertCountEqual = self.assertItemsEqual self.db = dballe.DB.connect_test() self.db.connect_test(); self.db.reset() data = dballe.Record( lat=12.34560, lon=76.54320, mobile=0, datetime=datetime.datetime(1945, 4, 25, 8, 0, 0), level=(10, 11, 15, 22), trange=(20,111,222), rep_memo="synop", B01011="Hey Hey!!", B01012=500) ids = self.db.insert_data(data, False, True) data.clear() data["B33007"] = 50 data["B33036"] = 75 self.db.attr_insert_data(ids["B01011"], data) for rec in self.db.query_data(dballe.Record(var="B01011")): self.attr_ref = rec["context_id"] def tearDown(self): self.db = None def testQueryAna(self): query = dballe.Record() cur = self.db.query_stations(query) self.assertEqual(cur.remaining, 1) count = 0 for result in cur: self.assertEqual(result["lat"], 12.34560) self.assertEqual(result["lon"], 76.54320) self.assertNotIn("B01011", result) count = count + 1 self.assertEqual(count, 1) def testQueryData(self): expected = {} expected["B01011"] = "Hey Hey!!"; expected["B01012"] = 500; query = dballe.Record() query["latmin"] = 10.0 cur = self.db.query_data(query) self.assertEqual(cur.remaining, 2) count = 0 for result in cur: self.assertEqual(cur.remaining, 2-count-1) var = result.var(result["var"]) assert var.code in expected self.assertEqual(var.enq(), expected[var.code]) del expected[var.code] count += 1 def testQueryAttrs(self): data = self.db.attr_query_data(self.attr_ref) self.assertCountEqual(data.keys(), ["B33007", "B33036"]) expected = {} expected["B33007"] = 50 expected["B33036"] = 75 count = 0 for code in data: self.assertIn(code, expected) self.assertEqual(data[code], expected[code]) del expected[code] count += 1 self.assertEqual(count, 2) def testQueryCursorAttrs(self): # Query a variable query = dballe.Record(var="B01011") cur = self.db.query_data(query); data = next(cur) self.assertTrue(data) attrs = cur.attr_query() expected = {} expected["B33007"] = 50 expected["B33036"] = 75 count = 0 for code in attrs: var = attrs.var(code) assert var.code in expected self.assertEqual(var.enq(), expected[var.code]) del expected[var.code] count = count + 1 self.assertEqual(count, 2) def testQuerySummary(self): query = dballe.Record() query["query"] = "details" cur = self.db.query_summary(query) res = dict() for result in cur: with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) res[(result["ana_id"], result["rep_memo"], result["level"], result["trange"], result["var"])] = ( result["datemin"], result["datemax"], result["context_id"]) self.assertEqual(res[(1, "synop", (10, 11, 15, 22), (20, 111, 222), 'B01011')], (datetime.datetime(1945, 4, 25, 8, 0), datetime.datetime(1945, 4, 25, 8, 0), 1)) self.assertEqual(res[(1, "synop", (10, 11, 15, 22), (20, 111, 222), 'B01012')], (datetime.datetime(1945, 4, 25, 8, 0), datetime.datetime(1945, 4, 25, 8, 0), 1)) def testQueryExport(self): query = dballe.Record() self.db.export_to_file(query, "BUFR", "/dev/null") self.db.export_to_file(query, "CREX", "/dev/null") self.db.export_to_file(query, "BUFR", "/dev/null", generic=True) self.db.export_to_file(query, "CREX", "/dev/null", generic=True) def testAttrRemove(self): #db.attrRemove(1, "B01011", [ "B33007" ]) self.db.attr_remove_data(self.attr_ref, ("B33007",)) def testLoadFile(self): with io.open(os.getenv("DBA_TESTDATA") + "/bufr/vad.bufr", "rb") as fp: self.db.reset() self.db.load(fp) self.assertTrue(self.db.query_data(dballe.Record()).remaining > 0) def testLoadFileLike(self): with io.open(os.getenv("DBA_TESTDATA") + "/bufr/vad.bufr", "rb") as fp: s = io.BytesIO(fp.read()) self.db.reset() self.db.load(s) self.assertTrue(self.db.query_data(dballe.Record()).remaining > 0) def testLoadFileno(self): import os class F(): def __init__(self, path): self.path = path def read(*args): raise AttributeError() def fileno(self): return self.fp.fileno() def __enter__(self): self.fp = open(self.path, "r") return self def __exit__(self, type, value, traceback): self.fp.close() with F(os.getenv("DBA_TESTDATA") + "/bufr/vad.bufr") as f: self.db.reset() self.db.load(f) self.assertTrue(self.db.query_data(dballe.Record()).remaining > 0) def testLoadAutodetect(self): # BUFR, autodetectable with io.open(os.getenv("DBA_TESTDATA") + "/bufr/vad.bufr", "rb") as fp: self.db.reset() self.assertEqual(self.db.load(fp), 25) # BUFR, not autodetectable with io.open(os.getenv("DBA_TESTDATA") + "/bufr/synop-groundtemp.bufr", "rb") as fp: self.db.reset() with self.assertRaises(KeyError): self.db.load(fp) # CREX, autodetectable with io.open(os.getenv("DBA_TESTDATA") + "/crex/test-synop0.crex", "rb") as fp: self.db.reset() self.assertEqual(self.db.load(fp), 1) # BUFR with io.open(os.getenv("DBA_TESTDATA") + "/bufr/vad.bufr", "rb") as fp: self.db.reset() self.assertEqual(self.db.load(fp, "BUFR"), 25) # BUFR with io.open(os.getenv("DBA_TESTDATA") + "/bufr/synop-groundtemp.bufr", "rb") as fp: self.db.reset() self.assertEqual(self.db.load(fp, "BUFR"), 1) # CREX loaded as BUFR yields no results with io.open(os.getenv("DBA_TESTDATA") + "/crex/test-synop0.crex", "rb") as fp: self.db.reset() self.assertEqual(self.db.load(fp, "BUFR"), 0) # CREX with io.open(os.getenv("DBA_TESTDATA") + "/crex/test-synop0.crex", "rb") as fp: self.db.reset() self.assertEqual(self.db.load(fp, "CREX"), 1) # BUFR loaded as CREX yields no results with io.open(os.getenv("DBA_TESTDATA") + "/bufr/vad.bufr", "rb") as fp: self.db.reset() self.assertEqual(self.db.load(fp, "CREX"), 0) def testQueryVolnd(self): from testlib import fill_volnd self.db.reset() fill_volnd(self.db) query = dballe.Record() query["var"] = "B10004" query["datetime"] = datetime.datetime(2007, 1, 1, 0, 0, 0) reports = [] for cur in self.db.query_data(query): reports.append(cur["rep_memo"]) s = "synop" t = "temp" self.assertEqual(reports, [s, t, s, t, s, t, s, s, t, s, t]) if __name__ == "__main__": from testlib import main main("test_db") dballe-7.21/python/dballe.cc0000644000175000017500000001256713022043102012660 00000000000000#include #include #include "common.h" #include "record.h" #include "db.h" #include "cursor.h" #include "dballe/types.h" #include "dballe/var.h" #include "config.h" #if PY_MAJOR_VERSION >= 3 #define PyInt_FromLong PyLong_FromLong #define PyInt_AsLong PyLong_AsLong #define PyInt_Check PyLong_Check #define Py_TPFLAGS_HAVE_ITER 0 #endif using namespace std; using namespace dballe; using namespace dballe::python; using namespace wreport; extern "C" { static PyObject* dballe_varinfo(PyTypeObject *type, PyObject *args, PyObject *kw) { const char* var_name; if (!PyArg_ParseTuple(args, "s", &var_name)) return NULL; return (PyObject*)wrpy->varinfo_create(dballe::varinfo(varcode_parse(var_name))); } static PyObject* dballe_var_uncaught(PyTypeObject *type, PyObject *args) { const char* var_name; PyObject* val = 0; if (!PyArg_ParseTuple(args, "s|O", &var_name, &val)) return NULL; if (val) { if (PyFloat_Check(val)) { double v = PyFloat_AsDouble(val); if (v == -1.0 && PyErr_Occurred()) return NULL; return (PyObject*)wrpy->var_create_d(dballe::varinfo(resolve_varcode(var_name)), v); } else if (PyInt_Check(val)) { long v = PyInt_AsLong(val); if (v == -1 && PyErr_Occurred()) return NULL; return (PyObject*)wrpy->var_create_i(dballe::varinfo(resolve_varcode(var_name)), (int)v); } else if ( PyUnicode_Check(val) #if PY_MAJOR_VERSION >= 3 || PyBytes_Check(val) #else || PyString_Check(val) #endif ) { string v; if (string_from_python(val, v)) return NULL; return (PyObject*)wrpy->var_create_c(dballe::varinfo(resolve_varcode(var_name)), v.c_str()); } else if (val == Py_None) { return (PyObject*)wrpy->var_create(dballe::varinfo(resolve_varcode(var_name))); } else { PyErr_SetString(PyExc_TypeError, "Expected int, float, str, unicode, or None"); return NULL; } } else return (PyObject*)wrpy->var_create(dballe::varinfo(resolve_varcode(var_name))); } static PyObject* dballe_var(PyTypeObject *type, PyObject *args) { try { return dballe_var_uncaught(type, args); } catch (wreport::error& e) { return raise_wreport_exception(e); } catch (std::exception& se) { return raise_std_exception(se); } } #define get_int_or_missing(intvar, ovar) \ int intvar; \ if (ovar == Py_None) \ intvar = MISSING_INT; \ else { \ intvar = PyInt_AsLong(ovar); \ if (intvar == -1 && PyErr_Occurred()) \ return NULL; \ } static PyObject* dballe_describe_level(PyTypeObject *type, PyObject *args, PyObject* kw) { static char* kwlist[] = { "ltype1", "l1", "ltype2", "l2", NULL }; PyObject* oltype1 = Py_None; PyObject* ol1 = Py_None; PyObject* oltype2 = Py_None; PyObject* ol2 = Py_None; if (!PyArg_ParseTupleAndKeywords(args, kw, "O|OOO", kwlist, &oltype1, &ol1, &oltype2, &ol2)) return NULL; get_int_or_missing(ltype1, oltype1); get_int_or_missing(l1, ol1); get_int_or_missing(ltype2, oltype2); get_int_or_missing(l2, ol2); Level lev(ltype1, l1, ltype2, l2); string desc = lev.describe(); return PyUnicode_FromString(desc.c_str()); } static PyObject* dballe_describe_trange(PyTypeObject *type, PyObject *args, PyObject* kw) { static char* kwlist[] = { "pind", "p1", "p2", NULL }; PyObject* opind = Py_None; PyObject* op1 = Py_None; PyObject* op2 = Py_None; if (!PyArg_ParseTupleAndKeywords(args, kw, "O|OO", kwlist, &opind, &op1, &op2)) return NULL; get_int_or_missing(pind, opind); get_int_or_missing(p1, op1); get_int_or_missing(p2, op2); Trange tr(pind, p1, p2); string desc = tr.describe(); return PyUnicode_FromString(desc.c_str()); } static PyMethodDef dballe_methods[] = { {"varinfo", (PyCFunction)dballe_varinfo, METH_VARARGS, "Query the DB-All.e variable table returning a Varinfo" }, {"var", (PyCFunction)dballe_var, METH_VARARGS, "Query the DB-All.e variable table returning a Var, optionally initialized with a value" }, {"describe_level", (PyCFunction)dballe_describe_level, METH_VARARGS | METH_KEYWORDS, "Return a string description for a level" }, {"describe_trange", (PyCFunction)dballe_describe_trange, METH_VARARGS | METH_KEYWORDS, "Return a string description for a time range" }, { NULL } }; #if PY_MAJOR_VERSION >= 3 static PyModuleDef dballe_module = { PyModuleDef_HEAD_INIT, "_dballe", /* m_name */ "DB-All.e Python interface.", /* m_doc */ -1, /* m_size */ dballe_methods, /* m_methods */ NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL, /* m_free */ }; #endif #if PY_MAJOR_VERSION >= 3 PyMODINIT_FUNC PyInit__dballe(void) #else PyMODINIT_FUNC init_dballe(void) #endif { using namespace dballe::python; PyObject* m; #if PY_MAJOR_VERSION >= 3 m = PyModule_Create(&dballe_module); #else m = Py_InitModule3("_dballe", dballe_methods, "DB-All.e Python interface."); #endif register_record(m); register_db(m); register_cursor(m); #if PY_MAJOR_VERSION >= 3 return m; #endif } } dballe-7.21/python/Makefile.am0000644000175000017500000000271713022043102013156 00000000000000## Process this file with automake to produce Makefile.in TESTS_ENVIRONMENT = $(top_srcdir)/extra/runtest export PYTHONPATH=. dballe_python_tests = test-core.py test-record.py test-db.py test-volnd.py test-rconvert.py test-csv.py # TESTS = $(dballe_python_tests) pkgpython_PYTHON = dballe/dbacsv.py dballe/rconvert.py dballe/__init__.py dballe/volnd.py pyexec_LTLIBRARIES = _dballe.la _dballe_la_SOURCES = \ common.cc \ record.cc \ dballe.cc \ db.cc \ cursor.cc _dballe_la_CPPFLAGS = $(PYTHON_CFLAGS) _dballe_la_LDFLAGS = -module -avoid-version -export-symbols-regex init_dballe _dballe_la_LIBADD = ../dballe/libdballe.la doc_DATA = python-dballe.rst if HAVE_RST2HTML doc_DATA += python-dballe.html endif _dballe.so: _dballe.la ln -fs .libs/_dballe.so $@ python-dballe.rst: doc-dballe $(pkgpython_PYTHON) _dballe.so $(PYTHON) $(srcdir)/doc-dballe > $@ || (rm -f $@; false) python-dballe.html: python-dballe.rst rst2html $< > $@ || (rm -f $@; false) clean-local: rm -f *.pyc dballe/*.pyc _dballe.so rm -rf __pycache__ dballe/__pycache__ EXTRA_DIST = \ doc-dballe \ common.h \ record.h \ db.h \ cursor.h \ testlib.py \ MANIFEST.in \ setup.py \ $(dballe_python_tests) AM_CPPFLAGS = -I/usr/include/python$(PYTHON_VERSION) -I$(top_srcdir) check-local: _dballe.so for test in $(dballe_python_tests); do \ PYTHON="$(PYTHON)" $(TESTS_ENVIRONMENT) $$test ; \ done CLEANFILES = python-dballe.rst python-dballe.html dballe-7.21/python/test-record.py0000755000175000017500000003652713022043102013740 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import dballe import datetime import unittest import warnings class RecordTest(unittest.TestCase): def setUp(self): if not hasattr(self, "assertCountEqual"): self.assertCountEqual = self.assertItemsEqual self.r = dballe.Record( block=1, station=123, lat=45.12345, lon=11.54321, datetime=datetime.datetime(2007, 2, 1, 1, 2, 3), level=(105, 2), trange=(2, 3, 4), var="B12101", B12101=285.0) self.knownkeys = ["lat", "lon", "year", "month", "day", "hour", "min", "sec", "leveltype1", "l1", "leveltype2", "l2", "pindicator", "p1", "p2"] self.knownvars = ["B12101", "B01002", "B01001"] self.knownkeyvals = [45.12345, 11.54321, 2007, 2, 1, 1, 2, 3, 105, 2, 0, 0, 2, 3, 4] self.knownvarvals = [285.0, 123, 1] def testGet(self): self.assertEqual(self.r.get("block"), 1) self.assertEqual(self.r.get(key="block"), 1) self.assertEqual(self.r.get(key="ana_id", default="ciao"), "ciao") self.assertEqual(self.r.get("ana_id", default="ciao"), "ciao") with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) # date, datemin, datemax, now, when queried, are treated like a single # range. Querying them will likely be deprecated soon. self.assertEqual(self.r.get("datemin", None), datetime.datetime(2007, 2, 1, 1, 2, 3)) self.assertEqual(self.r.get("datemax", None), datetime.datetime(2007, 2, 1, 1, 2, 3)) def testVar(self): with self.assertRaises(TypeError): self.r.var() self.assertEqual(self.r.var("B12101").code, "B12101") def testKey(self): self.assertEqual(self.r.key("lon").code, "B00000") self.assertEqual(self.r.key("lon").enqd(), 11.54321) self.assertEqual(self.r.key("lon").enqi(), 1154321) self.assertEqual(self.r.key("lon").enqc(), "1154321") self.assertEqual(self.r.key("lon").enq(), 11.54321) self.assertEqual(self.r.get("lon"), self.r.key("lon").enqd()) def testMulti(self): with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(self.r["date"], datetime.datetime(2007, 2, 1, 1, 2, 3)) self.assertEqual(self.r["level"], (105, 2, None, None)) self.assertEqual(self.r["timerange"], (2, 3, 4)) self.assertEqual(self.r["trange"], (2, 3, 4)) def testAlias(self): r = self.r.copy() r["t"] = 283.2 self.assertEqual(r["B12101"], 283.2) self.assertEqual(r["t"], 283.2) def testReadDictOperators(self): r = self.r self.assertEqual(r["block"], 1) self.assertEqual(r["station"], 123) self.assertEqual(r["lat"], 45.12345) self.assertEqual(r["lon"], 11.54321) self.assertEqual(r["B12101"], 285.0) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(r["date"], datetime.datetime(2007, 2, 1, 1, 2, 3)) self.assertEqual(r["level"], (105, 2, None, None)) self.assertEqual(r["timerange"], (2, 3, 4)) def testWriteDictOperators(self): r = self.r.copy() r["block"] = 2 r["station"] = 321 r["lat"] = 45.54321 r["lon"] = 11.12345 r["datetime"] = datetime.datetime(2006, 1, 2, 0, 1, 2) r["level"] = (104, 1, 105, 2) r["trange"] = (1, 2, 3) r["B12101"] = 294.5 self.assertEqual(r["block"], 2) self.assertEqual(r["station"], 321) self.assertEqual(r["lat"], 45.54321) self.assertEqual(r["lon"], 11.12345) self.assertEqual(r["B12101"], 294.5) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(r["date"], datetime.datetime(2006, 1, 2, 0, 1, 2)) self.assertEqual(r["level"], (104, 1, 105, 2)) self.assertEqual(r["timerange"], (1, 2, 3)) def testSpecials(self): r = self.r.copy() r["datetime"] = (datetime.datetime(2005, 3, 4, 5, 6, 7), datetime.datetime(2004, 4, 5, 6, 7, 8)) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) with self.assertRaises(KeyError): r["datetime"] self.assertEqual(r["datemin"], datetime.datetime(2005, 3, 4, 5, 6, 7)) self.assertEqual(r["datemax"], datetime.datetime(2004, 4, 5, 6, 7, 8)) self.assertEqual(r["level"], (105, 2, None, None)) self.assertEqual(r["timerange"], (2, 3, 4)) self.assertNotIn("date", r) self.assertIn("datemin", r) self.assertIn("datemax", r) self.assertIn("level", r) self.assertIn("timerange", r) del(r["datetime"]) del(r["level"]) del(r["trange"]) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(r.get("date", None), None) self.assertEqual(r.get("datemin", None), None) self.assertEqual(r.get("datemax", None), None) self.assertEqual(r.get("level", None), None) self.assertEqual(r.get("timerange", None), None) self.assertEqual("date" not in r, True) self.assertEqual("datemin" not in r, True) self.assertEqual("datemax" not in r, True) self.assertEqual("level" not in r, True) self.assertEqual("timerange" not in r, True) def testKeys(self): res = self.r.keys(); self.assertCountEqual(res, [ "lat", "lon", "year", "month", "day", "hour", "min", "sec", "leveltype1", "l1", "pindicator", "p1", "p2", "var", "B12101", "B01002", "B01001"]) def testVars(self): with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) r = dballe.Record() self.assertEqual(r.vars(), ()) r["B33036"] = 75 self.assertEqual(r.vars(), (dballe.var("B33036", 75),)) res = self.r.vars() self.assertEqual(len(res), len(self.knownvars)) self.assertEqual(sorted(x.enq() for x in res), sorted(self.knownvarvals)) def testIter(self): r = dballe.Record() r["B33036"] = 75 r["B12101"] = 273.15 res = [] ri = iter(r) res.append(next(ri)) res.append(next(ri)) self.assertEqual(res, ["B12101", "B33036"]) def testSetDict(self): r = dballe.Record() r.update(ana_id=1, lat=12.34567, ident="ciao") self.assertEqual(r["ana_id"], 1) self.assertEqual(r["ident"], "ciao") self.assertEqual(r["lat"], 12.34567) self.assertEqual(len(r.keys()), 3) r.update(t=290.0) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(r.vars(), (dballe.var("B12101", 290.0),)) def testSetFromString(self): with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) r = dballe.Record() r.set_from_string("ana_id=1") r.set_from_string("lat=12.34567") r.set_from_string("ident=ciao") r.set_from_string("B12101=32.5") r.set_from_string("l1=-") self.assertEqual(r["ana_id"], 1) self.assertEqual(r["ident"], "ciao") self.assertEqual(r["lat"], 12.34567) self.assertEqual(r["B12101"], 32.5) self.assertEqual(r["l1"], None) def testRecord(self): # Check basic set/get and variable iteration rec = dballe.Record() self.assertEqual("ana_id" in rec, False) rec["ana_id"] = 3 self.assertEqual("ana_id" in rec, True) self.assertEqual(rec["ana_id"], 3) self.assertEqual("B04001" in rec, False) rec["B04001"] = 2001 self.assertEqual("B04001" in rec, True) self.assertEqual(rec["B04001"], 2001) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) count = 0 for var in rec.vars(): self.assertEqual(var.code, "B04001") count += 1 self.assertEqual(count, 1) del rec["block"] self.assertEqual("block" in rec, False) del rec["B04001"] self.assertEqual("B04001" in rec, False) d = datetime.datetime(2001, 2, 3, 4, 5, 6) rec["datetime"] = d self.assertEqual(rec["year"], 2001) self.assertEqual(rec["month"], 2) self.assertEqual(rec["day"], 3) self.assertEqual(rec["hour"], 4) self.assertEqual(rec["min"], 5) self.assertEqual(rec["sec"], 6) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(rec["date"], d) self.assertEqual(rec["datetime"], d) l = (1, 2, 1, 3) rec["level"] = l self.assertEqual(rec["leveltype1"], 1) self.assertEqual(rec["l1"], 2) self.assertEqual(rec["leveltype2"], 1) self.assertEqual(rec["l2"], 3) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(rec["level"], l) t = (4, 5, 6) rec["trange"] = t self.assertEqual(rec["pindicator"], 4) self.assertEqual(rec["p1"], 5) self.assertEqual(rec["p2"], 6) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(rec["timerange"], t) self.assertEqual(rec["trange"], t) # Test that KeyError is raised for several different types of lookup rec = dballe.Record() self.assertRaises(KeyError, rec.__getitem__, "nonexistent") #self.assertRaises(KeyError, rec.__getitem__, "B01001") with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertRaises(KeyError, rec.__getitem__, "date") self.assertRaises(KeyError, rec.__getitem__, "level") self.assertRaises(KeyError, rec.__getitem__, "trange") self.assertRaises(KeyError, rec.__getitem__, "timerange") rec["datetime"] = None with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(rec.get("date", None), None) def testRecordClear(self): rec = dballe.Record(ana_id=1, B12101=21.5) self.assertIn("ana_id", rec); self.assertIn("B12101", rec); rec.clear() self.assertNotIn("ana_id", rec); self.assertNotIn("B12101", rec); rec.update(ana_id=1, B12101=21.5) self.assertIn("ana_id", rec); self.assertIn("B12101", rec); rec.clear_vars() self.assertIn("ana_id", rec); self.assertNotIn("B12101", rec); def testRecordConstructor(self): rec = dballe.Record( ana_id=1, datetime=datetime.datetime(2001, 2, 3, 4, 5, 6) ) self.assertEqual(rec["ana_id"], 1) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.assertEqual(rec["date"], datetime.datetime(2001, 2, 3, 4, 5, 6)) def testRecordCopying(self): # Try out all copying functions master = dballe.Record() master["block"] = 4 master["latmin"] = 4.1234 master["B01001"] = 4 if True: r1 = master; self.assertEqual(r1["block"], 4) self.assertEqual(r1["latmin"], 4.1234) self.assertEqual(r1["B01001"], 4) r2 = master.copy() self.assertEqual(r2["block"], 4) self.assertEqual(r2["latmin"], 4.1234) self.assertEqual(r2["B01001"], 4) r3 = r2.copy() self.assertEqual(r3["block"], 4) self.assertEqual(r3["latmin"], 4.1234) self.assertEqual(r3["B01001"], 4) del r2["latmin"] self.assertEqual(r3["latmin"], 4.1234) r3["latmin"] = 4.3214 self.assertEqual(r3["latmin"], 4.3214) r3 = r3 self.assertEqual(r3["block"], 4) self.assertEqual(r3["latmin"], 4.3214) self.assertEqual(r3["B01001"], 4) master = r3 self.assertEqual(master["block"], 4) self.assertEqual(master["latmin"], 4.3214) self.assertEqual(master["B01001"], 4) def testRecordCopying1(self): # This caused a repeatable segfault rec = dballe.Record() rec["query"] = "nosort" rec1 = rec.copy() rec1["query"] = "nosort" def testParseDateExtremes(self): # Test the parse_date_extremes implementation with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) rec = dballe.Record() a, b = rec.date_extremes() self.assertEqual(a, None) self.assertEqual(b, None) rec["yearmin"] = 2000 a, b = rec.date_extremes() self.assertEqual(a, datetime.datetime(2000, 1, 1, 0, 0, 0)) self.assertEqual(b, None) rec["yearmin"] = None rec["yearmax"] = 1900 rec["monthmax"] = 2 a, b = rec.date_extremes() self.assertEqual(a, None) self.assertEqual(b, datetime.datetime(1900, 2, 28, 23, 59, 59)) rec["yearmax"] = 2000 rec["monthmax"] = 2 a, b = rec.date_extremes() self.assertEqual(a, None) self.assertEqual(b, datetime.datetime(2000, 2, 29, 23, 59, 59)) rec["yearmax"] = 2001 rec["monthmax"] = 2 a, b = rec.date_extremes() self.assertEqual(a, None) self.assertEqual(b, datetime.datetime(2001, 2, 28, 23, 59, 59)) rec["yearmax"] = 2004 rec["monthmax"] = 2 a, b = rec.date_extremes() self.assertEqual(a, None) self.assertEqual(b, datetime.datetime(2004, 2, 29, 23, 59, 59)) def testCompare(self): a = dballe.Record(ana_id=1, ident="ciao", B12101=23.1) b = dballe.Record(ana_id=1, ident="ciao", B12101=23.1) self.assertTrue(a == b) self.assertFalse(a != b) a["ana_id"] = 2 self.assertTrue(a != b) self.assertFalse(a == b) def testSetTuplesToNone(self): with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) a = dballe.Record(level=(1, 2, 3, 4), trange=(1, 2, 3)) self.assertEqual(a["level"], (1, 2, 3, 4)) self.assertEqual(a["trange"], (1, 2, 3)) a["level"] = None with self.assertRaises(KeyError): a["level"] self.assertEqual(a["trange"], (1, 2, 3)) a["trange"] = None with self.assertRaises(KeyError): a["level"] with self.assertRaises(KeyError): a["trange"] if __name__ == "__main__": from testlib import main main("test_record") dballe-7.21/python/common.cc0000644000175000017500000002730213022043102012716 00000000000000#include "common.h" #include #include #include "config.h" #if PY_MAJOR_VERSION >= 3 #define PyInt_FromLong PyLong_FromLong #define PyInt_AsLong PyLong_AsLong #define PyInt_Type PyLong_Type #endif using namespace wreport; namespace dballe { namespace python { wrpy_c_api* wrpy = 0; PyObject* format_varcode(wreport::Varcode code) { char buf[7]; snprintf(buf, 7, "%c%02d%03d", WR_VAR_F(code) == 0 ? 'B' : WR_VAR_F(code) == 1 ? 'R' : WR_VAR_F(code) == 2 ? 'C' : WR_VAR_F(code) == 3 ? 'D' : '?', WR_VAR_X(code), WR_VAR_Y(code)); return PyUnicode_FromString(buf); } void set_wreport_exception(const wreport::error& e) { switch (e.code()) { case WR_ERR_NONE: PyErr_SetString(PyExc_SystemError, e.what()); break; case WR_ERR_NOTFOUND: // Item not found PyErr_SetString(PyExc_KeyError, e.what()); break; case WR_ERR_TYPE: // Wrong variable type PyErr_SetString(PyExc_TypeError, e.what()); break; case WR_ERR_ALLOC: // Cannot allocate memory PyErr_SetString(PyExc_MemoryError, e.what()); break; case WR_ERR_ODBC: // Database error PyErr_SetString(PyExc_OSError, e.what()); break; case WR_ERR_HANDLES: // Handle management error PyErr_SetString(PyExc_SystemError, e.what()); break; case WR_ERR_TOOLONG: // Buffer is too short to fit data PyErr_SetString(PyExc_ValueError, e.what()); break; case WR_ERR_SYSTEM: // Error reported by the system PyErr_SetString(PyExc_OSError, e.what()); break; case WR_ERR_CONSISTENCY: // Consistency check failed PyErr_SetString(PyExc_RuntimeError, e.what()); break; case WR_ERR_PARSE: // Parse error PyErr_SetString(PyExc_ValueError, e.what()); break; case WR_ERR_WRITE: // Write error PyErr_SetString(PyExc_RuntimeError, e.what()); break; case WR_ERR_REGEX: // Regular expression error PyErr_SetString(PyExc_ValueError, e.what()); break; case WR_ERR_UNIMPLEMENTED: // Feature not implemented PyErr_SetString(PyExc_NotImplementedError, e.what()); break; case WR_ERR_DOMAIN: // Value outside acceptable domain PyErr_SetString(PyExc_OverflowError, e.what()); break; default: PyErr_Format(PyExc_SystemError, "unhandled exception with code %d: %s", e.code(), e.what()); break; } } PyObject* raise_wreport_exception(const wreport::error& e) { set_wreport_exception(e); return nullptr; } void set_std_exception(const std::exception& e) { PyErr_SetString(PyExc_RuntimeError, e.what()); } PyObject* raise_std_exception(const std::exception& e) { set_std_exception(e); return NULL; } PyObject* datetime_to_python(const Datetime& dt) { if (dt.is_missing()) { Py_INCREF(Py_None); return Py_None; } return PyDateTime_FromDateAndTime( dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, 0); } int datetime_from_python(PyObject* dt, Datetime& out) { if (dt == NULL || dt == Py_None) { out = Datetime(); return 0; } if (!PyDateTime_Check(dt)) { PyErr_SetString(PyExc_TypeError, "value must be an instance of datetime.datetime"); return -1; } out = Datetime( PyDateTime_GET_YEAR((PyDateTime_DateTime*)dt), PyDateTime_GET_MONTH((PyDateTime_DateTime*)dt), PyDateTime_GET_DAY((PyDateTime_DateTime*)dt), PyDateTime_DATE_GET_HOUR((PyDateTime_DateTime*)dt), PyDateTime_DATE_GET_MINUTE((PyDateTime_DateTime*)dt), PyDateTime_DATE_GET_SECOND((PyDateTime_DateTime*)dt)); return 0; } int datetimerange_from_python(PyObject* val, DatetimeRange& out) { if (PySequence_Size(val) != 2) { PyErr_SetString(PyExc_TypeError, "Expected a 2-tuple of datetime() objects"); return -1; } pyo_unique_ptr dtmin(PySequence_GetItem(val, 0)); pyo_unique_ptr dtmax(PySequence_GetItem(val, 1)); if (datetime_from_python(dtmin, out.min)) return -1; if (datetime_from_python(dtmax, out.max)) return -1; return 0; } namespace { /// Convert an integer to Python, returning None if it is MISSING_INT PyObject* dballe_int_to_python(int val) { if (val == MISSING_INT) { Py_INCREF(Py_None); return Py_None; } else return PyInt_FromLong(val); } /// Convert a Python object to an integer, returning MISSING_INT if it is None int dballe_int_from_python(PyObject* o, int& out) { if (o == NULL || o == Py_None) { out = MISSING_INT; return 0; } int res = PyInt_AsLong(o); if (res == -1 && PyErr_Occurred()) return -1; out = res; return 0; } } PyObject* level_to_python(const Level& lev) { if (lev.is_missing()) { Py_INCREF(Py_None); return Py_None; } PyObject* res = PyTuple_New(4); if (!res) return NULL; if (PyObject* v = dballe_int_to_python(lev.ltype1)) PyTuple_SET_ITEM(res, 0, v); else { Py_DECREF(res); return NULL; } if (PyObject* v = dballe_int_to_python(lev.l1)) PyTuple_SET_ITEM(res, 1, v); else { Py_DECREF(res); return NULL; } if (PyObject* v = dballe_int_to_python(lev.ltype2)) PyTuple_SET_ITEM(res, 2, v); else { Py_DECREF(res); return NULL; } if (PyObject* v = dballe_int_to_python(lev.l2)) PyTuple_SET_ITEM(res, 3, v); else { Py_DECREF(res); return NULL; } return res; } int level_from_python(PyObject* o, Level& out) { if (o == NULL || o == Py_None) { out = Level(); return 0; } if (!PyTuple_Check(o)) { PyErr_SetString(PyExc_TypeError, "level must be a tuple"); return -1; } unsigned size = PyTuple_Size(o); if (size > 4) { PyErr_SetString(PyExc_TypeError, "level tuple must have at most 4 elements"); return -1; } Level res; if (size < 1) { out = res; return 0; } if (int err = dballe_int_from_python(PyTuple_GET_ITEM(o, 0), res.ltype1)) return err; if (size < 2) { out = res; return 0; } if (int err = dballe_int_from_python(PyTuple_GET_ITEM(o, 1), res.l1)) return err; if (size < 3) { out = res; return 0; } if (int err = dballe_int_from_python(PyTuple_GET_ITEM(o, 2), res.ltype2)) return err; if (size < 4) { out = res; return 0; } if (int err = dballe_int_from_python(PyTuple_GET_ITEM(o, 3), res.l2)) return err; out = res; return 0; } PyObject* trange_to_python(const Trange& tr) { if (tr.is_missing()) { Py_INCREF(Py_None); return Py_None; } PyObject* res = PyTuple_New(3); if (!res) return NULL; if (PyObject* v = dballe_int_to_python(tr.pind)) PyTuple_SET_ITEM(res, 0, v); else { Py_DECREF(res); return NULL; } if (PyObject* v = dballe_int_to_python(tr.p1)) PyTuple_SET_ITEM(res, 1, v); else { Py_DECREF(res); return NULL; } if (PyObject* v = dballe_int_to_python(tr.p2)) PyTuple_SET_ITEM(res, 2, v); else { Py_DECREF(res); return NULL; } return res; } int trange_from_python(PyObject* o, Trange& out) { if (o == NULL || o == Py_None) { out = Trange(); return 0; } if (!PyTuple_Check(o)) { PyErr_SetString(PyExc_TypeError, "time range must be a tuple"); return -1; } unsigned size = PyTuple_Size(o); if (size > 3) { PyErr_SetString(PyExc_TypeError, "time range tuple must have at most 3 elements"); return -1; } Trange res; if (size < 1) { out = res; return 0; } if (int err = dballe_int_from_python(PyTuple_GET_ITEM(o, 0), res.pind)) return err; if (size < 2) { out = res; return 0; } if (int err = dballe_int_from_python(PyTuple_GET_ITEM(o, 1), res.p1)) return err; if (size < 3) { out = res; return 0; } if (int err = dballe_int_from_python(PyTuple_GET_ITEM(o, 2), res.p2)) return err; out = res; return 0; } int string_from_python(PyObject* o, std::string& out) { #if PY_MAJOR_VERSION >= 3 if (PyBytes_Check(o)) { const char* v = PyBytes_AsString(o); if (v == NULL) return -1; out = v; return 0; } #else if (PyString_Check(o)) { const char* v = PyString_AsString(o); if (v == NULL) return -1; out = v; return 0; } #endif if (PyUnicode_Check(o)) { #if PY_MAJOR_VERSION >= 3 const char* v = PyUnicode_AsUTF8(o); if (v == NULL) return -1; out = v; return 0; #else PyObject *utf8 = PyUnicode_AsUTF8String(o); const char* v = PyString_AsString(utf8); if (v == NULL) { Py_DECREF(utf8); return -1; } out = v; Py_DECREF(utf8); return 0; #endif } PyErr_SetString(PyExc_TypeError, "value must be an instance of str, bytes or unicode"); return -1; } int file_get_fileno(PyObject* o) { // fileno_value = obj.fileno() pyo_unique_ptr fileno_meth(PyObject_GetAttrString(o, "fileno")); if (!fileno_meth) return -1; pyo_unique_ptr fileno_args(Py_BuildValue("()")); if (!fileno_args) return -1; PyObject* fileno_value = PyObject_Call(fileno_meth, fileno_args, NULL); if (!fileno_value) { if (PyErr_ExceptionMatches(PyExc_AttributeError) || PyErr_ExceptionMatches(PyExc_IOError)) PyErr_Clear(); return -1; } // fileno = int(fileno_value) if (!PyObject_TypeCheck(fileno_value, &PyInt_Type)) { PyErr_SetString(PyExc_ValueError, "fileno() function must return an integer"); return -1; } return PyInt_AsLong(fileno_value); } PyObject* file_get_data(PyObject* o, char*&buf, Py_ssize_t& len) { // Use read() instead pyo_unique_ptr read_meth(PyObject_GetAttrString(o, "read")); pyo_unique_ptr read_args(Py_BuildValue("()")); pyo_unique_ptr data(PyObject_Call(read_meth, read_args, NULL)); if (!data) return nullptr; #if PY_MAJOR_VERSION >= 3 if (!PyObject_TypeCheck(data, &PyBytes_Type)) { PyErr_SetString(PyExc_ValueError, "read() function must return a bytes object"); return nullptr; } if (PyBytes_AsStringAndSize(data, &buf, &len)) return nullptr; #else if (!PyObject_TypeCheck(data, &PyString_Type)) { Py_DECREF(data); PyErr_SetString(PyExc_ValueError, "read() function must return a string object"); return nullptr; } if (PyString_AsStringAndSize(data, &buf, &len)) return nullptr; #endif return data.release(); } int object_repr(PyObject* o, std::string& out) { pyo_unique_ptr fileno_repr(PyObject_Repr(o)); if (!fileno_repr) return -1; std::string name; if (string_from_python(fileno_repr, name)) return -1; return 0; } int common_init() { /* * PyDateTimeAPI, that is used by all the PyDate* and PyTime* macros, is * defined as a static variable defaulting to NULL, and it needs to be * initialized on each and every C file where it is used. * * Therefore, we need to have a common_init() to call from all * initialization functions. *sigh* */ if (!PyDateTimeAPI) PyDateTime_IMPORT; if (!wrpy) { wrpy = (wrpy_c_api*)PyCapsule_Import("_wreport._C_API", 0); if (!wrpy) return -1; } return 0; } } } dballe-7.21/python/testlib.py0000644000175000017500000000713413022043102013140 00000000000000# coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import shlex import os import sys import unittest def main(testname): args = os.environ.get("ARGS", None) if args is None: return unittest.main() args = shlex.split(args); if args[0] != testname: return 0 argv = [sys.argv[0]] + args[1:] unittest.main(argv=argv) def not_so_random(seed): """ Predictable random number generator, independent from python versions """ # see https://en.wikipedia.org/wiki/Linear_congruential_generator m = 2**31 a = 1103515245 c = 12345 while True: seed = (a * seed + c) % m yield float(seed) / float(m) def fill_volnd(db): import dballe import datetime # We want a predictable dataset rdata = not_so_random(1) rattr = not_so_random(2) # Wipe the test database db.reset() attrs = dballe.Record() rec = dballe.Record(mobile=0) def contexts(): # 2 networks for net in ('synop', 'temp'): # 6 stations for lat in (10., 20., 30.): for lon in (15., 25.): yield net, lat, lon def dtrange(start, stop, delta): while (start < stop): yield start start += delta def everyxhours(x): return dtrange( datetime.datetime(2007, 1, 1, 0, 0, 0), datetime.datetime(2007, 1, 7, 0, 0, 0), datetime.timedelta(0, x * 3600, 0)) def maybe_insert(rec, aname): if next(rdata) > 0.9: return ids = db.insert_data(rec, False, True) attrs.clear() attrs[aname] = next(rattr) * 100. for code in rec: if not code.startswith("B"): continue db.attr_insert_data(ids[code], attrs) # Enter some sample data for net, lat, lon in contexts(): rec["rep_memo"] = net if net == 'synop': aname = 'B33007' else: aname = 'B33040' rec["lat"] = lat rec["lon"] = lon # 6 hours precipitations rec["level"] = (1,) rec["trange"] = (4, -21600, 0) for dt in everyxhours(6): rec["datetime"] = dt rec["B13011"] = next(rdata) * 10. maybe_insert(rec, aname) # 12 hours precipitations at different times rec["level"] = (1,) rec["trange"] = (4, -43200, 0) for dt in everyxhours(12): rec["datetime"] = dt rec["B13011"] = next(rdata) * 10. maybe_insert(rec, aname) # Randomly measured # precipitations on a different # (meaningless) level # At slightly off times rec["level"] = (3, 2) rec["trange"] = (4, -21600, 0) for dt in everyxhours(6): rec["datetime"] = (dt + datetime.timedelta(0, - 600 + int(next(rdata) * 1200))) rec["B13011"] = next(rdata) * 10. maybe_insert(rec, aname) del rec["B13011"] # Pressures every 12 hours rec["level"] = (1,) rec["trange"] = (0,) for dt in everyxhours(12): rec["datetime"] = dt rec["B10004"] = float(70000 + next(rdata) * 35000) maybe_insert(rec, aname) del rec["B10004"] # Insert some pseudoana data for the station 1, to test # pseudoana export and mixed data types rec.clear() rec.update(ana_id=1, B01001=12, B01002=123, B01019="Test of long station name", rep_memo="synop") db.insert_station_data(rec, False, True) dballe-7.21/python/record.h0000644000175000017500000000101513022043102012537 00000000000000#ifndef DBALLE_PYTHON_RECORD_H #define DBALLE_PYTHON_RECORD_H #include namespace dballe { struct Record; } extern "C" { typedef struct { PyObject_HEAD dballe::Record* rec; bool station_context; } dpy_Record; PyAPI_DATA(PyTypeObject) dpy_Record_Type; #define dpy_Record_Check(ob) \ (Py_TYPE(ob) == &dpy_Record_Type || \ PyType_IsSubtype(Py_TYPE(ob), &dpy_Record_Type)) } namespace dballe { namespace python { dpy_Record* record_create(); void register_record(PyObject* m); } } #endif dballe-7.21/python/cursor.cc0000644000175000017500000001660113022043102012743 00000000000000#include #include #include "cursor.h" #include "record.h" #include "db.h" #include "common.h" #include #include "config.h" #if PY_MAJOR_VERSION >= 3 #define PyInt_FromLong PyLong_FromLong #define PyInt_AsLong PyLong_AsLong #define PyInt_Check PyLong_Check #define PyInt_Type PyLong_Type #define Py_TPFLAGS_HAVE_ITER 0 #endif using namespace std; using namespace dballe; using namespace dballe::python; using namespace wreport; extern "C" { static PyObject* dpy_Cursor_remaining(dpy_Cursor* self, void* closure) { return PyInt_FromLong(self->cur->remaining()); } static PyGetSetDef dpy_Cursor_getsetters[] = { {"remaining", (getter)dpy_Cursor_remaining, NULL, "number of results still to be returned", NULL }, {NULL} }; static PyObject* dpy_Cursor_query_attrs(dpy_Cursor* self, PyObject* args, PyObject* kw) { if (PyErr_WarnEx(PyExc_DeprecationWarning, "please use Cursor.attr_query, DB.attr_query_station or DB.attr_query_data instead of Cursor.query_attrs", 1)) return NULL; static char* kwlist[] = { "attrs", NULL }; PyObject* attrs = 0; if (!PyArg_ParseTupleAndKeywords(args, kw, "|O", kwlist, &attrs)) return NULL; // Read the attribute list, if provided db::AttrList codes; if (db_read_attrlist(attrs, codes)) return NULL; self->db->attr_rec->rec->clear(); try { if (auto c = dynamic_cast(self->cur)) c->get_db().attr_query_station(c->attr_reference_id(), [&](unique_ptr&& var) { if (!codes.empty() && find(codes.begin(), codes.end(), var->code()) == codes.end()) return; self->db->attr_rec->rec->set(move(var)); }); else if (auto c = dynamic_cast(self->cur)) c->get_db().attr_query_data(c->attr_reference_id(), [&](unique_ptr&& var) { if (!codes.empty() && find(codes.begin(), codes.end(), var->code()) == codes.end()) return; self->db->attr_rec->rec->set(move(var)); }); else { PyErr_SetString(PyExc_ValueError, "the cursor does ont come from DB.query_station_data or DB.query_data"); return NULL; } Py_INCREF(self->db->attr_rec); return (PyObject*)self->db->attr_rec; } DBALLE_CATCH_RETURN_PYO } static PyObject* dpy_Cursor_attr_query(dpy_Cursor* self) { self->db->attr_rec->rec->clear(); try { if (auto c = dynamic_cast(self->cur)) c->get_db().attr_query_station(c->attr_reference_id(), [&](unique_ptr&& var) { self->db->attr_rec->rec->set(move(var)); }); else if (auto c = dynamic_cast(self->cur)) c->get_db().attr_query_data(c->attr_reference_id(), [&](unique_ptr&& var) { self->db->attr_rec->rec->set(move(var)); }); else { PyErr_SetString(PyExc_ValueError, "the cursor does ont come from DB.query_station_data or DB.query_data"); return NULL; } Py_INCREF(self->db->attr_rec); return (PyObject*)self->db->attr_rec; } DBALLE_CATCH_RETURN_PYO } static PyMethodDef dpy_Cursor_methods[] = { {"query_attrs", (PyCFunction)dpy_Cursor_query_attrs, METH_VARARGS | METH_KEYWORDS, "Query attributes for the current variable" }, {"attr_query", (PyCFunction)dpy_Cursor_attr_query, METH_NOARGS, "Query attributes for the current variable" }, {NULL} }; static int dpy_Cursor_init(dpy_Cursor* self, PyObject* args, PyObject* kw) { // People should not invoke Cursor() as a constructor, but if they do, // this is better than a segfault later on PyErr_SetString(PyExc_NotImplementedError, "Cursor objects cannot be constructed explicitly"); return -1; } static void dpy_Cursor_dealloc(dpy_Cursor* self) { delete self->cur; Py_DECREF(self->rec); Py_DECREF(self->db); } static PyObject* dpy_Cursor_iter(dpy_Cursor* self) { Py_INCREF(self); return (PyObject*)self; } static PyObject* dpy_Cursor_iternext(dpy_Cursor* self) { if (self->cur->next()) { self->cur->to_record(*self->rec->rec); Py_INCREF(self->rec); return (PyObject*)self->rec; } else { PyErr_SetNone(PyExc_StopIteration); return NULL; } } static PyObject* dpy_Cursor_str(dpy_Cursor* self) { /* std::string f = self->var.format("None"); return PyUnicode_FromString(f.c_str()); */ return PyUnicode_FromString("Cursor"); } static PyObject* dpy_Cursor_repr(dpy_Cursor* self) { /* string res = "Var('"; res += varcode_format(self->var.code()); if (self->var.info()->is_string()) { res += "', '"; res += self->var.format(); res += "')"; } else { res += "', "; res += self->var.format("None"); res += ")"; } return PyUnicode_FromString(res.c_str()); */ return PyUnicode_FromString("Cursor object"); } PyTypeObject dpy_Cursor_Type = { PyVarObject_HEAD_INIT(NULL, 0) "dballe.Cursor", // tp_name sizeof(dpy_Cursor), // tp_basicsize 0, // tp_itemsize (destructor)dpy_Cursor_dealloc, // tp_dealloc 0, // tp_print 0, // tp_getattr 0, // tp_setattr 0, // tp_compare (reprfunc)dpy_Cursor_repr, // tp_repr 0, // tp_as_number 0, // tp_as_sequence 0, // tp_as_mapping 0, // tp_hash 0, // tp_call (reprfunc)dpy_Cursor_str, // tp_str 0, // tp_getattro 0, // tp_setattro 0, // tp_as_buffer Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER, // tp_flags "DB-All.e Cursor", // tp_doc 0, // tp_traverse 0, // tp_clear 0, // tp_richcompare 0, // tp_weaklistoffset (getiterfunc)dpy_Cursor_iter, // tp_iter (iternextfunc)dpy_Cursor_iternext, // tp_iternext dpy_Cursor_methods, // tp_methods 0, // tp_members dpy_Cursor_getsetters, // tp_getset 0, // tp_base 0, // tp_dict 0, // tp_descr_get 0, // tp_descr_set 0, // tp_dictoffset (initproc)dpy_Cursor_init, // tp_init 0, // tp_alloc 0, // tp_new }; } namespace dballe { namespace python { dpy_Cursor* cursor_create(dpy_DB* db, std::unique_ptr cur) { dpy_Cursor* result = PyObject_New(dpy_Cursor, &dpy_Cursor_Type); if (!result) return NULL; Py_INCREF(db); result->db = db; result->cur = cur.release(); result->rec = record_create(); return result; } void register_cursor(PyObject* m) { common_init(); dpy_Cursor_Type.tp_new = PyType_GenericNew; if (PyType_Ready(&dpy_Cursor_Type) < 0) return; Py_INCREF(&dpy_Cursor_Type); PyModule_AddObject(m, "Cursor", (PyObject*)&dpy_Cursor_Type); } } } dballe-7.21/python/test-csv.py0000755000175000017500000000457713022043102013255 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import dballe from dballe import dbacsv import datetime import unittest import io class TestCSV(unittest.TestCase): def setUp(self): from testlib import fill_volnd self.db = dballe.DB.connect_test() fill_volnd(self.db) def testExport(self): query = dballe.Record() #query["rep_memo"] = "synop" out = io.StringIO() dbacsv.export(self.db, query, out) lines = out.getvalue().splitlines() self.assertEqual(lines[0], "Station B01001: 12; Station B01002: 123; Station B01019: Test of long station name,,,,,,,,,,,,,,,") self.assertEqual(lines[1], "Station,Latitude,Longitude,Network,Datetime,Level1,L1,Level2,L2,Time range,P1,P2,Variable,Value,Attr B33007,Attr B33040") self.assertEqual(lines[2], "1,10.0,15.0,temp,2006-12-31 23:53:12,3,2,-,-,4,-21600,0,B13011,3.0,,17") def testAttrs(self): self.db.reset() data = dballe.Record() data.update( rep_memo="synop", lat=0.0, lon=0.0, ident="#000000", level=(103, 2000), trange=(254, 0, 0), datetime=datetime.datetime(1005, 1, 1, 1, 1, 0), B12101=270.96) ids = self.db.insert_data(data, False, True) attrs = dballe.Record() attrs["B33209"] = 98 self.db.attr_insert_data(ids["B12101"], attrs) data.update( rep_memo="synop", lat=0.0, lon=0.0, ident="#000000", level=(103, 2000), trange=(254, 0, 0), datetime=datetime.datetime(1005, 1, 1, 1, 1, 1), B12101=271.96) ids = self.db.insert_data(data, False, True) attrs = dballe.Record() attrs["B33209"] = 100 self.db.attr_insert_data(ids["B12101"], attrs) query = dballe.Record() out = io.StringIO() dbacsv.export(self.db, query, out) lines = out.getvalue().splitlines() self.assertEqual(lines[2], "1005-01-01 01:01:00,270.96,98") self.assertEqual(lines[3], "1005-01-01 01:01:01,271.96,100") if __name__ == "__main__": from testlib import main main("test_csv") dballe-7.21/python/dballe/0000755000175000017500000000000013022523411012424 500000000000000dballe-7.21/python/dballe/dbacsv.py0000644000175000017500000002665213022043102014165 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import dballe import csv import sys import warnings """ Export data from DB-All.e into CSV format """ def intormiss(x): """ Format an integer to a string, returning '-' if the integer is None. """ if x is None: return "-" else: return "%d" % x class UnicodeCSVWriter(object): """ Hack to work around the csv module being unable to handle unicode rows in input, and unicode files in output """ class UnicodeFdWrapper(object): """ Wrap an output file descriptor into something that accepts utf8 byte strings and forwards unicode """ def __init__(self, outfd): self.outfd = outfd def write(self, bytestr): self.outfd.write(bytestr.decode("utf-8")) def __init__(self, outfd, *writer_args, **writer_kw): self.writer = csv.writer(self.UnicodeFdWrapper(outfd), *writer_args, **writer_kw) def encode_field(self, val): encode = getattr(val, "encode", None) if encode is not None: return encode("utf-8") else: return val def writerow(self, row): enc = self.encode_field self.writer.writerow([enc(s) for s in row]) class Column(object): def __init__(self): self.values = set() def is_single_val(self): return len(self.values) == 1 def column_labels(self): return [self.LABEL] def title(self): return "{} {}".format(self.LABEL, next(iter(self.values))) class ColumnStation(Column): def __init__(self, stations): super(ColumnStation, self).__init__() self.stations = stations self.idents = set() def add(self, row): self.values.add(row["ana_id"]) ident = row.get("ident", None) if ident is not None: self.idents.add(ident) def title(self): id = next(iter(self.values)) lat, lon, ident = self.stations[id] if ident is None: return "Fixed station, lat {}, lon {}".format(lat, lon) else: return "Mobile station {}, lat {}, lon {}".format(ident, lat, lon) def column_labels(self): res = ["Station", "Latitude", "Longitude"] if self.idents: res.append("Ident") return res def column_data(self, rec): id = rec["ana_id"] lat, lon, ident = self.stations[id] res = [id, lat, lon] if self.idents: res.append(ident or "") return res class ColumnNetwork(Column): LABEL = "Network" def add(self, row): self.values.add(row["rep_memo"]) def column_data(self, rec): return [rec["rep_memo"]] class ColumnDatetime(Column): LABEL = "Datetime" def add(self, row): # Suppress deprecation warnings until we have something better with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.values.add(row["date"]) def title(self): return str(next(iter(self.values))) def column_data(self, rec): # Suppress deprecation warnings until we have something better with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) return [rec["date"]] class ColumnLevel(Column): def add(self, row): # Suppress deprecation warnings until we have something better with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.values.add(",".join([intormiss(x) for x in row["level"]])) def title(self): return "Level {}".format(next(iter(self.values))) def column_labels(self): return ["Level1", "L1", "Level2", "L2"] def column_data(self, rec): # Suppress deprecation warnings until we have something better with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) lev = rec["level"] return [ intormiss(lev[0]), intormiss(lev[1]), intormiss(lev[2]), intormiss(lev[3]) ] class ColumnTrange(Column): def add(self, row): # Suppress deprecation warnings until we have something better with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.values.add(",".join([intormiss(x) for x in row["trange"]])) def title(self): return "Time range {}".format(next(iter(self.values))) def column_labels(self): return ["Time range", "P1", "P2"] def column_data(self, rec): # Suppress deprecation warnings until we have something better with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) tr = rec["trange"] return [ intormiss(tr[0]), intormiss(tr[1]), intormiss(tr[2]) ] class ColumnVar(Column): LABEL = "Variable" def add(self, row): self.values.add(row["var"]) def column_data(self, rec): return [rec["var"]] class ColumnValue(Column): LABEL = "Value" def add(self, row): self.values.add(row.var(row["var"]).format("")) def column_data(self, rec): return [rec.var(rec["var"]).format("")] class ColumnStationData(Column): def __init__(self, varcode, station_data): super(ColumnStationData, self).__init__() self.varcode = varcode # { Station id: { varcode: value } } self.station_data = station_data def add(self, row): self.values.add(row[self.varcode]) def title(self): data = next(iter(self.station_data.values())) var = data.get(self.varcode, None) if var is None: value = "" else: value = var.format("") return "Station {}: {}".format(self.varcode, value) def column_labels(self): return ["Station {}".format(self.varcode)] def column_data(self, rec): id = rec["ana_id"] data = self.station_data[id] var = data.get(self.varcode, None) if var is None: return [""] else: return [var.format("")] class ColumnAttribute(Column): def __init__(self, varcode, attributes): super(ColumnAttribute, self).__init__() self.varcode = varcode # { "context_id,varcode": { varcode: value } } self.attributes = attributes def add(self, var): self.values.add(var.format("")) def title(self): data = next(iter(self.attributes.itervalues())) var = data.get(self.varcode, None) if var is None: value = "" else: value = var.format("") return "Attr {}: {}".format(self.varcode, value) def column_labels(self): return ["Attr {}".format(self.varcode)] def column_data(self, rec): data = self.attributes["{},{}".format(rec["context_id"], rec["var"])] var = data.get(self.varcode, None) if var is None: return [""] else: return [var.format("")] class Exporter: def __init__(self, db): self.db = db self.title = "" self.cols = [] # { Station id: { varcode: value } } self.station_data = {} # { "context_id,varcode": { varcode: value } } self.attributes = {} def compute_columns(self, filter): """ Compute what columns need to be in the output CSV. It queries DB-All.e once; another query will be needed later to output data. """ # Station data indexed by station id stations = {} # Do one pass over the result set to compute the columns columns = [ ColumnStation(stations), ColumnNetwork(), ColumnDatetime(), ColumnLevel(), ColumnTrange(), ColumnVar(), ColumnValue(), ] station_var_cols = {} attribute_cols = {} rowcount = 0 for row in self.db.query_data(filter): rowcount += 1 # Let the columns examine this row for c in columns: c.add(row) # Index station data by ana_id id = row["ana_id"] stations[id] = [row["lat"], row["lon"], row.get("ident", None)] # Load station variables for this station if id not in self.station_data: query = dballe.Record(ana_id=id) items = {} for record in self.db.query_station_data(query): v = record.var(record["var"]) items[v.code] = v col = station_var_cols.get(v.code, None) if col is None: station_var_cols[v.code] = col = ColumnStationData(v.code, self.station_data) col.add(record) self.station_data[id] = items # Load attributes attributes = {} for key, v in self.db.attr_query_data(row["context_id"]).varitems(): code = v.code attributes[code] = v col = attribute_cols.get(code, None) if col is None: attribute_cols[code] = col = ColumnAttribute(code, self.attributes) col.add(v) self.attributes["{},{}".format(row["context_id"], row["var"])] = attributes self.rowcount = rowcount # Now that we have detailed info, compute the columns # Build a list of all candidate columns all_columns = [] all_columns.extend(columns) for k, v in sorted(station_var_cols.items()): all_columns.append(v) for k, v in sorted(attribute_cols.items()): all_columns.append(v) # Dispatch them between title and csv body self.title_columns = [] self.csv_columns = [] for col in all_columns: if col.is_single_val(): self.title_columns.append(col) else: self.csv_columns.append(col) def output(self, query, fd): """ Perform a DB-All.e query using the given query and output the results in CSV format on the given file object """ if sys.version_info[0] >= 3: writer = csv.writer(fd, dialect="excel") else: writer = UnicodeCSVWriter(fd) self.compute_columns(query) # Don't query an empty result set if self.rowcount == 0: print("Result is empty.", file=sys.stderr) return row_headers = [] for c in self.csv_columns: row_headers.extend(c.column_labels()) # Print the title if we have it if self.title_columns: title = "; ".join(c.title() for c in self.title_columns) row = ["" for x in row_headers] row[0] = title writer.writerow(row) # Print the column headers writer.writerow(row_headers) for rec in self.db.query_data(query): row = [] for c in self.csv_columns: row.extend(c.column_data(rec)) writer.writerow(row) def export(db, query, fd): """ Perform a DB-All.e query using the given db and query query, and output the results in CSV format on the given file object """ e = Exporter(db) e.output(query, fd) dballe-7.21/python/dballe/volnd.py0000644000175000017500000005452213022043102014042 00000000000000#!/usr/bin/python # -*- coding: UTF-8 -*- """ volnd is an easy way of extracting entire matrixes of data out of a DB-All.e database. This module allows to extract multidimensional matrixes of data given a list of dimension definitions. Every dimension definition defines what kind of data goes along that dimension. Dimension definitions can be shared across different extracted matrixes and multiple extractions, allowing to have different matrixes whose indexes have the same meaning. This example code extracts temperatures in a station by datetime matrix:: query = dballe.Record() query["var"] = "B12001" query["rep_memo"] = "synop" query["level"] = (105, 2) query["trange"] = (0,) vars = read(self.db.query(query), (AnaIndex(), DateTimeIndex())) data = vars["B12001"] # Data is now a 2-dimensional Masked Array with the data # # Information about what values correspond to an index in the various # directions can be accessed in data.dims, which contains one list per # dimension with all the information corresponding to every index. print("Ana dimension is", len(data.dims[0]), "items long") print("Datetime dimension is", len(data.dims[1]), "items long") print("First 10 stations along the Ana dimension:", data.dims[0][:10]) print("First 10 datetimes along the DateTime dimension:", data.dims[1][:10]) """ # TODO: aggiungere metodi di query negli indici (eg. qual'è l'indice di questo # ana_id?) # TODO: leggere i dati di anagrafica from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import dballe from collections import namedtuple import datetime import sys import warnings # # * Dati # # Input: # - elenco di dimensioni interessanti # # Output: # - una matrice multidimensionale per variabile, con dentro i dati # - un vettore per dimensione, corrispondente alla lunghezza della matrice in # quella dimensione, con i dati su quella dimensione relativi a quel punto # della matrice. Nel caso dell'anagrafica, per esempio, questo vettore dice # lat,lon,ident,ana_id di ogni dato nella fetta di matrice tagliata in quel # punto. # # Integrando in provami, posso sapere in anticipo il numero di livelli etc # perché lo calcolo comunque per i menu # # Sincronizzate tra le varie matrici: # - ana, data # Vettori diversi per ogni matrice: # - livello, scadenza # import os if os.environ.get("DBALLE_BUILDING_DOCS", "") != 'true': import numpy import numpy.ma as ma # Alternative hack to run without numpy's C code #from . import tinynumpy as numpy #class ma: # @classmethod # def array(cls, a, *args, **kw): # return a class SkipDatum(Exception): pass class Index(object): """ Base class for all volnd indices. An Index describes each entry along one dimension of a volnd volume. There is an entry in the index for each point along that axis, and each entry can be an arbitrary structure with details. Index objects can be shared between homogeneous volumes. """ def __init__(self, shared=True, frozen=False): self._shared = shared self._frozen = frozen def freeze(self): """ Set the index as frozen: indexing elements not already in the index will raise a SkipDatum exception """ self._frozen = True def copy(self): """ Return another version of this index: it can be a reference to the exact same index if shared=True; otherwise it's a new, empty version. """ if self._shared: return self else: return self.__class__() class ListIndex(Index, list): """ Indexes records along an axis. Each index entry is an arbitrary details structure extracted from records. All records at a given index position will have the same details. """ def __init__(self, shared=True, frozen=False, start=None): super(ListIndex, self).__init__(shared, frozen) # Maps indexing keys to list positions # A key is a short, unique version of the details. Details can be # thought as verbose, useful versions of keys. self._map = {} if start: for el in start: id, val = self._splitInit(el) self._map[id] = len(self) self.append(val) def __str__(self): return self.short_name() + ": " + list.__str__(self) def key_from_record(self, rec): "Extract the indexing key from the record" return None def details_from_record(self, rec): "Extract the full data information from the record" return None def _splitInit(self, el): """ Extract the indexing key and full data information from one of the objects passed as the start= value to the constructor to preinit an index """ return el, el def approve(self, rec): """ Return true if the record can be placed along this index """ if not self._frozen: return True return self.key_from_record(rec) in self._map def index_record(self, rec): """ Return an integer index along this axis for the given record """ key = self.key_from_record(rec) pos = self._map.get(key, None) if pos is None: self._map[key] = pos = len(self) self.append(self.details_from_record(rec)) return pos class AnaIndexEntry(namedtuple("AnaIndexEntry", ("id", "lat", "lon", "ident"))): """ AnaIndex entry, with various data about a single station. It is a named tuple of 4 values: * id: station id * lat: latitude * lon: longitude * ident: mobile station identifier, or None """ @classmethod def from_record(cls, rec): """ Create an index entry from the contents of a dballe.Record """ return cls(rec["ana_id"], rec["lat"], rec["lon"], rec.get("ident", None)) def __str__(self): if self[3] == None: return "Station at lat %.5f lon %.5f" % (self.lat, self.lon) else: return "%s at lat %.5f lon %.5f" % (self.ident, self.lat, self.lon) def __repr__(self): return "AnaIndexEntry" + tuple.__repr__(self) class AnaIndex(ListIndex): """ Index for stations, as they come out of the database. The constructor syntax is: ``AnaIndex(shared=True, frozen=False, start=None)``. The index saves all stations as AnaIndexEntry tuples, in the same order as they come out of the database. """ def key_from_record(self, rec): return rec["ana_id"] def details_from_record(self, rec): return AnaIndexEntry.from_record(rec) def _splitInit(self, el): return el[0], el def short_name(self): return "AnaIndex["+str(len(self))+"]" class NetworkIndex(ListIndex): """ Index for networks, as they come out of the database. The constructor syntax is: ``NetworkIndex(shared=True, frozen=False, start=None)``. The index saves all networks as NetworkIndexEntry tuples, in the same order as they come out of the database. """ def key_from_record(self, rec): return rec["rep_memo"] def details_from_record(self, rec): return rec["rep_memo"] def _splitInit(self, el): return el[0], el def short_name(self): return "NetworkIndex["+str(len(self))+"]" class LevelIndex(ListIndex): """ Index for levels, as they come out of the database The constructor syntax is: ``LevelIndex(shared=True, frozen=False), start=None``. The index saves all levels as dballe.Level tuples, in the same order as they come out of the database. """ def key_from_record(self, rec): # Suppress deprecation warnings until we have something better with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) return rec["level"] def details_from_record(self, rec): return self.key_from_record(rec) def short_name(self): return "LevelIndex["+str(len(self))+"]" class TimeRangeIndex(ListIndex): """ Index for time ranges, as they come out of the database. The constructor syntax is: ``TimeRangeIndex(shared=True, frozen=False, start=None)``. The index saves all time ranges as dballe.TimeRange tuples, in the same order as they come out of the database. """ def key_from_record(self, rec): # Suppress deprecation warnings until we have something better with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) return rec["trange"] def details_from_record(self, rec): return self.key_from_record(rec) def short_name(self): return "TimeRangeIndex["+str(len(self))+"]" class DateTimeIndex(ListIndex): """ Index for datetimes, as they come out of the database. The constructor syntax is: ``DateTimeIndex(shared=True, frozen=False, start=None)``. The index saves all datetime values as datetime.datetime objects, in the same order as they come out of the database. """ def key_from_record(self, rec): # Suppress deprecation warnings until we have something better with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) return rec["date"] def details_from_record(self, rec): return self.key_from_record(rec) def short_name(self): return "DateTimeIndex["+str(len(self))+"]" def tddivmod1(td1, td2): "Division and quotient between time deltas" if td2 > td1: return 0, td1 if td2 == 0: raise ZeroDivisionError("Dividing by a 0 time delta") mults = (86400, 1000000, 1) n1 = (td1.days, td1.seconds, td1.microseconds) n2 = (td2.days, td2.seconds, td2.microseconds) d = 0 q = 0 for i in range(3): d += n1[i] if d != 0: if n2[i] == 0: d *= mults[i] else: q = d // n2[i] break else: if n2[i] == 0: pass else: break t = td2 * q if t > td1: q = q - 1 return q, td1 - td2 * q else: return q, td1 - t def tddivmod2(td1, td2): """ Division and quotient between time deltas (alternate implementation using longs) """ std1 = td1.days*(3600*24*1000000) + td1.seconds*1000000 + td1.microseconds std2 = td2.days*(3600*24*1000000) + td2.seconds*1000000 + td2.microseconds q = std1 // std2 return q, td1 - (td2 * q) # Choose which implementation to use if sys.version_info[0] >= 3: def tddivmod3(td1, td2): return td1 // td2, td1 % td2 tddivmod = tddivmod3 else: tddivmod3 = None tddivmod = tddivmod2 class IntervalIndex(Index): """ Index into equally spaced points in time, starting at ``start``, with a point every ``step`` time. Index points are at fixed time intervals, and data is acquired in one point only if it is within a given tolerance from the interval. The constructor syntax is: ``IntervalIndex(start, step, tolerance=0, end=None, shared=True, frozen=False)``. ``start`` is a datetime.datetime object giving the starting time of the time interval of this index. ``step`` is a datetime.timedelta object with the interval between sampling points. ``tolerance`` is a datetime.timedelta object specifying the maximum allowed interval between a datum datetime and the sampling step. If the interval is bigger than the tolerance, the data is discarded. ``end`` is an optional datetime.datetime object giving the ending time of the time interval of the index. If omitted, the index will end at the latest accepted datum coming out of the database. """ def __init__(self, start, step, tolerance=0, end=None, *args, **kwargs): """ start is a datetime with the starting moment step is a timedelta with the interval between times tolerance is a timedelta specifying how much skew a datum is allowed to have from a sampling moment """ super(IntervalIndex, self).__init__(*args, **kwargs) self._start = start self._step = step self._end = end if end != None: self._size = (end-start)/step else: self._size = 0 self._tolerance = datetime.timedelta(0) def approve(self, rec): t = rec["date"] # Skip all entries before the start if t < self._start: return False if self._end and t > self._end: return False # With integer division we get both the position and the skew pos, skew = tddivmod(t - self._start, self._step) if skew > self._step / 2: pos += 1 skew = skew - self._step if skew > self._tolerance: return False if self._frozen and pos >= self._size: return False return True def index_record(self, rec): t = rec["date"] # With integer division we get both the position and the skew pos, skew = tddivmod(t - self._start, self._step) if skew > self._step / 2: pos += 1 if pos >= self._size: self._size = pos + 1 return pos def __len__(self): return self._size def __iter__(self): for i in range(self._size): yield self._start + self._step * i def __str__(self): return self.short_name() + ": " + ", ".join(self) def short_name(self): return "IntervalIndex["+str(self._size)+"]" def copy(self): if self._shared: return self else: return IntervalIndex(self._start, self._step, self._tolerance, self._end) class Data: """ Container for collecting variable data. It contains the variable data array and the dimension indexes. If v is a Data object, you can access the tuple with the dimensions as v.dims, and the masked array with the values as v.vals. """ def __init__(self, name, dims, checkConflicts=True): """ name = name of the variable (eg. "B12001") dims = list of Index objects one for every dimension if checkConflicts is True, then an exception is raised if two output values would end up filling the same matrix element """ # Variable name, as a B table entry (e.g. "B12001") self.name = name # Tuple with all the dimension Index objects self.dims = dims # After finalise() has been called, it is the masked array with # all the values. Before calling finalise(), it is the list of # collected data. self.vals = [] # Maps attribute names to Data objects with the attribute # values. The dimensions of the Data objects are fully # synchronised with this one. self.attrs = {} # Information about the variable self.info = dballe.varinfo(name) self._checkConflicts = checkConflicts self._lastPos = None def append(self, rec): """ Collect a new value from the given dballe record. You need to call finalise() before the values can be used. """ accepted = all(dim.approve(rec) for dim in self.dims) if accepted: # Obtain the index for every dimension pos = tuple(dim.index_record(rec) for dim in self.dims) # Save the value with its indexes self.vals.append( (pos, rec[self.name]) ) # Save the last position for appendAttrs self._lastPos = pos return True else: # If the value cannot be mapped along this dimension, # skip it self._lastPos = None return False def appendAttrs(self, rec, codes=None): """ Collect attributes to append to the record. You need to call finalise() before the values can be used. """ if not self._lastPos: return for code in rec: if codes is not None and code not in codes: continue #print "Attr", var.code(), "for", self.name, "at", self._lastPos if code in self.attrs: data = self.attrs[code] else: data = Data(self.name, self.dims, False) self.attrs[code] = data # Append at the same position as the last variable # collected data.vals.append((self._lastPos, rec[code])) def _instantiateIntMatrix(self): shape = tuple(len(d) for d in self.dims) if self.info.bit_ref == 0: # bit_ref is 0, so we are handling unsigned # numbers and we know the exact number of bits # used for encoding bits = self.info.bit_len if bits <= 8: #print 'uint8' a = numpy.empty(shape, dtype='uint8') elif bits <= 16: #print 'uint16' a = numpy.empty(shape, dtype='uint16') elif bits <= 32: #print 'uint32' a = numpy.empty(shape, dtype='uint32') else: #print 'uint64' a = numpy.empty(shape, dtype='uint64') else: # We have a bit_ref, so we can have negative # values or we can have positive values bigger # than usual (for example, for negative bit_ref # values). Therefore, choose the size of the # int in the matrix according to the value # range instead of bit_len() range = self.info.imax - self.info.imin #print self.info, range if range < 256: #print 'int8' a = numpy.empty(shape, dtype='int8') elif range < 65536: #print 'int16' a = numpy.empty(shape, dtype='int16') elif range <= 4294967296: #print 'int32' a = numpy.empty(shape, dtype='int32') else: a = numpy.empty(shape, dtype=int) return a def finalise(self): """ Stop collecting values and create a masked array with all the values collected so far. """ # If one of the dimensions is empty, we don't have any valid data if any(len(d) == 0 for d in self.dims): return False shape = tuple(len(x) for x in self.dims) # Create the data array, with all values set as missing #print "volnd finalise instantiate" if self.info.type == "string": #print self.info, "string" a = numpy.empty(shape, dtype=object) # Fill the array with all the values, at the given indexes for pos, val in self.vals: if self._checkConflicts and a[pos] is not None: raise IndexError("Got more than one value for " + self.name + " at position " + str(pos)) a[pos] = val else: if self.info.type == "integer": a = self._instantiateIntMatrix() else: a = numpy.empty(shape, dtype=numpy.float64) mask = numpy.ones(shape, dtype=numpy.bool) # Fill the array with all the values, at the given indexes for pos, val in self.vals: if self._checkConflicts and not mask[pos]: raise IndexError("Got more than one value for " + self.name + " at position " + str(pos)) a[pos] = val mask[pos] = False a = ma.array(a, mask=mask) # Replace the intermediate data with the results self.vals = a # Finalise all the attributes as well #print "volnd finalise fill" invalid = [] for key, d in self.attrs.items(): if not d.finalise(): invalid.append(key) # Delete empty attributes for k in invalid: del self.addrs[k] return True def __str__(self): return "Data("+", ".join(x.short_name() for x in self.dims)+"):"+str(self.vals) def __repr__(self): return "Data("+", ".join(x.short_name() for x in self.dims)+"):"+self.vals.__repr__() def read(cursor, dims, filter=None, checkConflicts=True, attributes=None): """ *cursor* is a dballe.Cursor resulting from a dballe query *dims* is the sequence of indexes to use for shaping the data matrixes *filter* is an optional filter function that can be used to discard values from the query: if filter is not None, it will be called for every output record and if it returns False, the record will be discarded *checkConflicts* tells if we should raise an exception if two values from the database would fill in the same position in the matrix *attributes* tells if we should read attributes as well: if it is None, no attributes will be read; if it is True, all attributes will be read; if it is a sequence, then it is the sequence of attributes that should be read. """ ndims = len(dims) vars = {} #print "volnd iterate" # Iterate results for rec in cursor: # Discard the values that filter does not like if filter and not filter(rec): continue varname = rec["var"] # Instantiate the index objects here for every variable # when it appears the first time, sharing those indexes that # need to be shared and creating new indexes for the individual # ones if varname not in vars: var = Data(varname, [x.copy() for x in dims], checkConflicts) vars[varname] = var else: var = vars[varname] # Save every value with its indexes if not var.append(rec): continue # Add the attributes if attributes != None: arec = cursor.attr_query(); if attributes == True: var.appendAttrs(arec) else: var.appendAttrs(arec, attributes) # Now that we have collected all the values, create the arrays #print "volnd finalise" invalid = [] for k, var in vars.items(): if not var.finalise(): invalid.append(k) for k in invalid: del vars[k] return vars dballe-7.21/python/dballe/rconvert.py0000644000175000017500000000522213022043102014553 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import os import itertools if os.environ.get("DBALLE_BUILDING_DOCS", "") != 'true': import numpy import numpy.ma as ma #import Numeric as numeric import rpy2.robjects as robjects import rpy2.rinterface as rinterface # Failed experiment: the __dict__ of MaskedArray is a dictproxy instance that # is read-only #dballe.volnd.Data.__dict__['as_r'] = new.instancemethod(fun, None, dballe.volnd.Data) #def genfloat(a): # for x in a.flat: # if ma.getmask(x) != 1: # yield float(x) # else: # yield robjects.r.NAN def ma_to_rlist(arr): """ Create a list of floats or rinterface.NA_Real from a masked array, raveled in R value order """ ma_data = arr.data.ravel("F") ma_mask = arr.mask.ravel("F") rlist = [] for val, mask in zip(ma_data, ma_mask): if mask: rlist.append(rinterface.NA_Real) else: rlist.append(val) return rlist def ma_to_r(arr, dimnames=None): """ Convert a Masked Array to an R object """ # We copy data around way more than we probably should, but I found no way # to efficiently generate R NA values from a the MaskedArray mask # Convert to floats farray = ma.array(arr, dtype=float) # Convert to an R array, with NAs vec = rinterface.FloatSexpVector(ma_to_rlist(farray)) dim = rinterface.IntSexpVector(farray.shape) if dimnames: # Create with dimension names, too dimnames = robjects.r.array(dimnames) farray = robjects.r.array(vec, dim=dim, dimnames=dimnames) else: farray = robjects.r.array(vec, dim=dim) return farray def volnd_data_to_r(data): """ Convert a volnd data object to an R object """ rinterface.initr() dn = [] for i in data.dims: dn.append([str(x) for x in i]) return ma_to_r(data.vals, dimnames=dn) def volnd_save_to_r(vars, file): """ Convert the result of a volnd read into various R objects, and save them to the given file """ rinterface.initr() tosave = [] for k, d in vars.items(): #print "s2r", k robjects.r.assign(k, volnd_data_to_r(d)) tosave.append(k) for aname, adata in d.attrs.items(): robjects.r.assign(k+"."+aname, volnd_data_to_r(adata)) tosave.append(k+"."+aname) tosave = robjects.vectors.StrVector(tosave) robjects.r.save(list=tosave, file=file) # Cleanup the names from the environment robjects.r.remove(list=tosave) dballe-7.21/python/dballe/__init__.py0000644000175000017500000000020613022043102014445 00000000000000from __future__ import absolute_import import wreport from wreport import Var, Varinfo, Vartable import _dballe from _dballe import * dballe-7.21/python/test-core.py0000755000175000017500000000077113022043102013402 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import dballe import unittest class Describe(unittest.TestCase): def testLevel(self): self.assertIn("surface", dballe.describe_level(1)) def testTrange(self): self.assertIn("Accumulation", dballe.describe_trange(1)) if __name__ == "__main__": from testlib import main main("test_core") dballe-7.21/python/cursor.h0000644000175000017500000000277013022043102012607 00000000000000/* * python/cursor - DB-All.e DB cursor python bindings * * Copyright (C) 2013 ARPA-SIM * * 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. * * 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 St, Fifth Floor, Boston, MA 02110-1301 USA * * Author: Enrico Zini */ #ifndef DBALLE_PYTHON_CURSOR_H #define DBALLE_PYTHON_CURSOR_H #include #include #include "record.h" #include "db.h" extern "C" { typedef struct { PyObject_HEAD dpy_DB* db; dballe::db::Cursor* cur; dpy_Record* rec; } dpy_Cursor; PyAPI_DATA(PyTypeObject) dpy_Cursor_Type; #define dpy_Cursor_Check(ob) \ (Py_TYPE(ob) == &dpy_Cursor_Type || \ PyType_IsSubtype(Py_TYPE(ob), &dpy_Cursor_Type)) } namespace dballe { namespace python { /** * Create a new dpy_Cursor, taking ownership of memory management */ dpy_Cursor* cursor_create(dpy_DB* db, std::unique_ptr cur); void register_cursor(PyObject* m); } } #endif dballe-7.21/python/db.h0000644000175000017500000000321113022043102011646 00000000000000/* * python/db - DB-All.e DB python bindings * * Copyright (C) 2013 ARPA-SIM * * 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. * * 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 St, Fifth Floor, Boston, MA 02110-1301 USA * * Author: Enrico Zini */ #ifndef DBALLE_PYTHON_DB_H #define DBALLE_PYTHON_DB_H #include #include #include "record.h" extern "C" { typedef struct { PyObject_HEAD dballe::DB* db; dpy_Record* attr_rec; } dpy_DB; PyAPI_DATA(PyTypeObject) dpy_DB_Type; #define dpy_DB_Check(ob) \ (Py_TYPE(ob) == &dpy_DB_Type || \ PyType_IsSubtype(Py_TYPE(ob), &dpy_DB_Type)) } namespace dballe { namespace python { /** * Create a new dpy_DB, taking over memory management */ dpy_DB* db_create(std::unique_ptr db); /** * Copy varcodes from a Python sequence to a db::AttrList */ int db_read_attrlist(PyObject* attrs, db::AttrList& codes); void register_db(PyObject* m); bool db_load_fileobj(DB* db, PyObject* obj); bool db_load_filelike(DB* db, PyObject* obj); bool db_load_fileno(DB* db, PyObject* obj); } } #endif dballe-7.21/Makefile.in0000644000175000017500000010126713022512015011652 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @DO_DBALLEF_TRUE@am__append_1 = fortran @DO_DOCS_TRUE@am__append_2 = doc @DO_DBALLE_PYTHON_TRUE@am__append_3 = python subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/m4_ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = libdballe.pc libdballef.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(m4dir)" \ "$(DESTDIR)$(pkgconfigdir)" NROFF = nroff MANS = $(man_MANS) DATA = $(m4_DATA) $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = tables dballe extra src fortran doc python . am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/libdballe.pc.in $(srcdir)/libdballef.pc.in ChangeLog \ TODO compile config.guess config.sub install-sh ltmain.sh \ missing py-compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDBALLEF_VERSION_INFO = @LIBDBALLEF_VERSION_INFO@ LIBDBALLE_VERSION_INFO = @LIBDBALLE_VERSION_INFO@ LIBOBJS = @LIBOBJS@ LIBPQ_CFLAGS = @LIBPQ_CFLAGS@ LIBPQ_LIBS = @LIBPQ_LIBS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MYSQL_CFLAGS = @MYSQL_CFLAGS@ MYSQL_LIBS = @MYSQL_LIBS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ WREPORT_CFLAGS = @WREPORT_CFLAGS@ WREPORT_LIBS = @WREPORT_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_doxygen = @have_doxygen@ have_gperf = @have_gperf@ have_rst2html = @have_rst2html@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mysql_config = @mysql_config@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ tabledir = @tabledir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = tables dballe extra src $(am__append_1) $(am__append_2) \ $(am__append_3) . #examples pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libdballe.pc libdballef.pc m4dir = $(datadir)/aclocal m4_DATA = libdballe.m4 libdballef.m4 man_MANS = dbatbl.1 dbamsg.1 dbadb.1 dbaexport.1 BUILT_SOURCES = dbaexport.1 EXTRA_DIST = README.md LICENSE BENCHMARKS autogen.sh \ libdballe.m4 libdballef.m4 \ libdballe.pc.in libdballef.pc.in \ $(conf_DATA) get_line_no run-check.conf.example \ run-check run-local run-bench bench-plot show_code_notes \ fabfile.py \ $(wildcard bench/*.csv) \ UPGRADE-5.x \ dbaexport.1 \ fedora/SPECS/dballe.spec CLEANFILES = dbatbl.1 dbamsg.1 dbadb.1 fabfile.pyc all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 libdballe.pc: $(top_builddir)/config.status $(srcdir)/libdballe.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ libdballef.pc: $(top_builddir)/config.status $(srcdir)/libdballef.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-m4DATA: $(m4_DATA) @$(NORMAL_INSTALL) @list='$(m4_DATA)'; test -n "$(m4dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(m4dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(m4dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(m4dir)" || exit $$?; \ done uninstall-m4DATA: @$(NORMAL_UNINSTALL) @list='$(m4_DATA)'; test -n "$(m4dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(m4dir)'; $(am__uninstall_files_from_dir) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(MANS) $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(m4dir)" "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-m4DATA install-man install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-m4DATA uninstall-man uninstall-pkgconfigDATA uninstall-man: uninstall-man1 .MAKE: $(am__recursive_targets) all check install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip distcheck distclean distclean-generic \ distclean-hdr distclean-libtool distclean-tags distcleancheck \ distdir distuninstallcheck dvi dvi-am html html-am info \ info-am install install-am install-data install-data-am \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-m4DATA install-man install-man1 install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am uninstall-m4DATA \ uninstall-man uninstall-man1 uninstall-pkgconfigDATA .PRECIOUS: Makefile dbadb.1: src/dbadb doc/add_templates_to_manpage ( cd src && ./`basename $<` help manpage ) | ( cd $(srcdir) && $(srcdir)/doc/add_templates_to_manpage ) > $@ dbamsg.1: src/dbamsg doc/add_templates_to_manpage ( cd src && ./`basename $<` help manpage ) | ( cd $(srcdir) && $(srcdir)/doc/add_templates_to_manpage ) > $@ dbaexport.1: src/dbaexport COLUMNS=200 help2man --name='export data from DB-All.e' --section=1 --no-info --version-string="$(PACKAGE_VERSION)" $< > $@ %.1: src/% ( cd src && ./`basename $<` help manpage ) > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dballe-7.21/src/0000755000175000017500000000000013022523411010447 500000000000000dballe-7.21/src/dbatbl.cc0000644000175000017500000003413013022043102012121 00000000000000#include #include #include #include #include #include #include #include #include #include "config.h" using namespace dballe; using namespace dballe::cmdline; using namespace wreport; using namespace std; int op_verbose = 0; /// Write CSV output to the given output stream struct FileCSV : CSVWriter { FILE* out; FileCSV(FILE* out) : out(out) {} void flush_row() override { fputs(row.c_str(), out); putc('\n', out); row.clear(); } }; struct VarinfoPrinter : public cmdline::Subcommand { int op_csv = 0; int op_crex = 0; CSVWriter* csv_out = nullptr; ~VarinfoPrinter() { delete csv_out; } void init() override { if (op_csv) csv_out = new FileCSV(stdout); } void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back(poptOption{ "csv", 'c', POPT_ARG_NONE, (void*)&op_csv, 0, "output variables in CSV format" }); opts.push_back(poptOption{ "crex", 0, POPT_ARG_NONE, (void*)&op_crex, 0, "read CREX entries instead of BUFR" }); } const Vartable* load_vartable(const char* id) { if (op_crex) return Vartable::load_crex(id); else return Vartable::load_bufr(id); } void print_varinfo(Varinfo info) const { if (csv_out) print_varinfo_csv(*csv_out, info); else print_varinfo_desc(info); } static std::string format_decimal(Varinfo info) { string res; if (info->scale > 0) { if (info->len > (unsigned)info->scale) for (unsigned i = 0; i < info->len - info->scale; ++i) res += '#'; res += '.'; for (unsigned i = 0; i < (unsigned)info->scale; ++i) res += '#'; } else if (info->scale < 0) { for (unsigned i = 0; i < info->len; ++i) res += '#'; for (unsigned i = 0; i < (unsigned)-info->scale; ++i) res += '0'; } return res; } static void print_varinfo_desc(Varinfo info) { switch (info->type) { case Vartype::String: printf("%d%02d%03d %s [%s, %u characters]\n", WR_VAR_FXY(info->code), info->desc, info->unit, info->len); break; case Vartype::Binary: printf("%d%02d%03d %s [%s, %u bits]\n", WR_VAR_FXY(info->code), info->desc, info->unit, info->bit_len); break; case Vartype::Integer: printf("%d%02d%03d %s [%s, %u digits] range (%d -- %d)\n", WR_VAR_FXY(info->code), info->desc, info->unit, info->len, info->imin, info->imax); break; case Vartype::Decimal: printf("%d%02d%03d %s [%s, %s] range (%g -- %g)\n", WR_VAR_FXY(info->code), info->desc, info->unit, format_decimal(info).c_str(), info->dmin, info->dmax); break; } } static void print_varinfo_csv(CSVWriter& out, const Varinfo& info) { out.add_value(varcode_format(info->code)); out.add_value(info->desc); out.add_value(info->unit); out.add_value(vartype_format(info->type)); switch (info->type) { case Vartype::String: out.add_value(info->len); out.add_value_empty(); out.add_value_empty(); break; case Vartype::Binary: out.add_value(info->bit_len); out.add_value_empty(); out.add_value_empty(); break; case Vartype::Integer: out.add_value(info->len); out.add_value(info->imin); out.add_value(info->imax); break; case Vartype::Decimal: out.add_value(format_decimal(info)); out.add_value(to_string(info->dmin)); out.add_value(to_string(info->dmax)); break; } out.flush_row(); } }; struct Cat : public VarinfoPrinter { Cat() { names.push_back("cat"); usage = "cat tableid [tableid [...]]"; desc = "Output all the contents of a WMO B table."; } int main(poptContext optCon) override { const char* item; /* Throw away the command name */ poptGetArg(optCon); if (poptPeekArg(optCon) == NULL) item = "dballe"; else item = poptGetArg(optCon); while (item != NULL) { const Vartable* table = load_vartable(item); table->iterate([&](Varinfo info) { print_varinfo(info); return true; }); item = poptGetArg(optCon); } return 0; } }; struct Grep : public VarinfoPrinter { Grep() { names.push_back("grep"); usage = "grep string"; desc = "Output all the contents of the local B table whose description contains the given string."; } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); if (poptPeekArg(optCon) == NULL) dba_cmdline_error(optCon, "there should be at least one B or D item to expand. Examples are: B01002 or D03001"); const char* pattern = poptGetArg(optCon); const Vartable* table = load_vartable("dballe"); table->iterate([&](Varinfo info) { #if HAVE_STRCASESTR if (strcasestr(info->desc, pattern) != NULL) #else #warning dbatbl grep is case sensite on this sytstem, since strcasestr is not available if (strstr(info->desc, pattern) != NULL) #endif print_varinfo(info); return true; }); return 0; } }; #if 0 struct Expand : public cmdline::Subcommand { const Vartable* btable = NULL; const DTable* dtable = NULL; Expand() { names.push_back("expand"); usage = "expand table-entry [table-entry [...]]"; desc = "Describe a WMO B table entry or expand a WMO D table entry in its components."; } int main(poptContext optCon) override { const char* item; /* Throw away the command name */ poptGetArg(optCon); btable = Vartable::get("dballe"); dtable = DTable::get("D000203"); if (poptPeekArg(optCon) == NULL) dba_cmdline_error(optCon, "there should be at least one B or D item to expand. Examples are: B01002 or D03001"); while ((item = poptGetArg(optCon)) != NULL) expand_table_entry(descriptor_code(item), 0); return 0; } void expand_table_entry(Varcode val, int level) { int i; for (i = 0; i < level; i++) printf("\t"); switch (WR_VAR_F(val)) { case 0: { Varinfo info = btable->query(val); VarinfoPrinter::print_varinfo_desc(info); break; } case 3: { Opcodes ops = dtable->query(val); printf("%d%02d%03d\n", WR_VAR_F(val), WR_VAR_X(val), WR_VAR_Y(val)); for (size_t i = 0; i < ops.size(); ++i) expand_table_entry(ops[i], level+1); break; } default: printf("%d%02d%03d\n", WR_VAR_F(val), WR_VAR_X(val), WR_VAR_Y(val)); } } }; #endif struct ExpandCode : public cmdline::Subcommand { ExpandCode() { names.push_back("expandcode"); usage = "expandcode varcode [varcode [...]]"; desc = "Expand the value of a packed variable code"; } int main(poptContext optCon) override { const char* item; /* Throw away the command name */ poptGetArg(optCon); while ((item = poptGetArg(optCon)) != NULL) { int code = strtol(item, NULL, 10); char c = 'B'; switch (WR_VAR_F(code)) { case 0: c = 'B'; break; case 1: c = 'R'; break; case 2: c = 'C'; break; case 3: c = 'D'; break; } printf("%s: %c%02d%03d\n", item, c, WR_VAR_X(code), WR_VAR_Y(code)); } return 0; } }; #if 0 static const char* table_type = "b"; struct Index : public cmdline::Subcommand { Index() { names.push_back("index"); usage = "index [options] filename index-id"; desc = "Index the contents of a table file"; } void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back({ "type", 't', POPT_ARG_STRING, &table_type, 0, "format of the table to index ('b', 'd', 'conv')", "type" }); } /** * Check that all unit conversions are allowed by dba_uniconv * * @returns true if all conversions worked, false if some exceptions were thrown */ static bool check_unit_conversions(const char* id) { const Vartable* othertable = Vartable::get(id); bool res = true; for (Vartable::const_iterator info = othertable->begin(); info != othertable->end(); ++info) { Varcode varcode = info->var; /* if (var % 1000 == 0) fprintf(stderr, "Testing %s %d\n", ids[i], var); */ if (varcode != 0 && !info->is_string()) { try { Varinfo local = varinfo(varcode); convert_units(info->unit, local->unit, 1.0); } catch (std::exception& e) { fprintf(stderr, "Checking conversion for var B%02d%03d: %s", WR_VAR_X(varcode), WR_VAR_Y(varcode), e.what()); res = false; } } } return res; } int main(poptContext optCon) override { const char* file; const char* id; /* Throw away the command name */ poptGetArg(optCon); file = poptGetArg(optCon); id = poptGetArg(optCon); if (file == NULL) dba_cmdline_error(optCon, "input file has not been specified"); if (id == NULL) dba_cmdline_error(optCon, "indexed table ID has not been specified"); if (strcmp(table_type, "b") == 0) { if (strcmp(id, "dballe") != 0) { /* If it's an external table, check unit conversions to DBALLE * correspondents */ if (!check_unit_conversions(id)) fprintf(stderr, "Warning: some variables cannot be converted from %s to dballe\n", id); } } else if (strcmp(table_type, "d") == 0) ; /* DBA_RUN_OR_RETURN(bufrex_dtable_index(file, id)); */ /* else if (strcmp(type, "conv") == 0) DBA_RUN_OR_RETURN(bufrex_convtable_index_csv(file, id)); */ else dba_cmdline_error(optCon, "'%s' is not a valid table type", table_type); return 0; } }; #endif struct Describe : public cmdline::Subcommand { Describe() { names.push_back("describe"); usage = "describe [options] what [values]"; desc = "Invoke the formatter to describe the given values"; longdesc = "Supported so far are: \"level ltype l1 l2\", \"trange pind p1 p2\""; } int main(poptContext optCon) override { const char* what; /* Throw away the command name */ poptGetArg(optCon); if ((what = poptGetArg(optCon)) == NULL) dba_cmdline_error(optCon, "you need to specify what you want to describe. Available options are: 'level' and 'trange'"); if (strcmp(what, "level") == 0) { const char* sltype1 = poptGetArg(optCon); const char* sl1 = poptGetArg(optCon); const char* sltype2 = poptGetArg(optCon); const char* sl2 = poptGetArg(optCon); if (sltype1 == NULL) dba_cmdline_error(optCon, "you need provide 1, 2, 3 or 4 numbers that identify the level or layer"); string formatted = Level( strtoul(sltype1, NULL, 10), sl1 == NULL ? 0 : strtoul(sl1, NULL, 10), sltype2 == NULL ? 0 : strtoul(sltype2, NULL, 10), sl2 == NULL ? 0 : strtoul(sl2, NULL, 10)).describe(); puts(formatted.c_str()); } else if (strcmp(what, "trange") == 0) { const char* sptype = poptGetArg(optCon); const char* sp1 = poptGetArg(optCon); const char* sp2 = poptGetArg(optCon); if (sptype == NULL) dba_cmdline_error(optCon, "you need provide 1, 2 or 3 numbers that identify the time range"); string formatted = Trange( strtoul(sptype, NULL, 10), sp1 == NULL ? 0 : strtoul(sp1, NULL, 10), sp2 == NULL ? 0 : strtoul(sp2, NULL, 10)).describe(); puts(formatted.c_str()); } else dba_cmdline_error(optCon, "cannot handle %s. Available options are: 'level' and 'trange'.", what); return 0; } }; int main(int argc, const char* argv[]) { Command dbatbl; dbatbl.name = "dbatbl"; dbatbl.desc = "Manage on-disk reference tables for DB-ALLe"; dbatbl.longdesc = "This tool allows to index and query the tables that are " "needed for normal functioning of DB-ALLe"; dbatbl.add_subcommand(new Cat); dbatbl.add_subcommand(new Grep); //dbatbl.add_subcommand(new Expand); dbatbl.add_subcommand(new ExpandCode); //dbatbl.add_subcommand(new Index); dbatbl.add_subcommand(new Describe); return dbatbl.main(argc, argv); } dballe-7.21/src/dbatbl_makeb0000755000175000017500000002231213022043102012676 00000000000000#!/usr/bin/python import struct import sys # Documentation for Entry fields ENTRYDOC = { "var": "The variable code (BXXYYY)", "desc": "The variable description (max 64 chars)", "unit": "The measurement unit of the variable (max 64 chars)", "scale": "The scale of the variable. When the variable is represented as an integer, it is multiplied by 10**scale", "ref": "The reference value for the variable. When the variable is represented as an integer, and after scaling, it is added this value", "len": "The length in digits of the integer representation of this variable (after scaling and changing reference value)", "bit_ref": "The reference value for bit-encoding. When the variable is encoded in a bit string, it is added this value", "bit_len": "The length in bits of the variable when encoded in a bit string (after scaling and changing reference value)", "bufr_unit": "The measurement unit of the variable when encoded in BUFR. (max 24 chars)", "bufr_scale": "The scale of the variable when encoded in BUFR.", } def unit_is_string(unit): # if unit.startswith("CODE TABLE"): return True return unit in ["CCITTIA5", "CHARACTER"] class Entry(object): "A B table entry" FIELDS=["var", "desc", "unit", "scale", "ref", "len", "bit_ref", "bit_len", "bufr_unit", "bufr_scale"] NUMFIELDS=["scale", "ref", "len", "bit_ref", "bit_len", "bufr_scale"] def __init__(self): self.var = "B00000" self.desc = "" self.unit = "" self.scale = 0 self.ref = -10 self.len = 0 self.bit_ref = -10 self.bit_len = 0 self.bufr_unit = "" self.bufr_scale = 0 ## Minimum unscaled value the field can have #self.imin ## Maximum unscaled value the field can have #int imax; ## Minimum scaled value the field can have #double dmin; ## Maximum scaled value the field can have #double dmax; BUFRFMT='x6sx64sx24sx3sx12sx3s' def read_bufr(self, s): "Read from the bufr part of the B table" self.var, self.desc, self.unit, self.scale, self.bit_ref, self.bit_len = struct.unpack(self.BUFRFMT, s[:118]) if self.var[0] == '0': self.var = 'B' + self.var[1:] self.scale = int(self.scale) self.bit_ref = int(self.bit_ref) self.bit_len = int(self.bit_len) self.desc = self.desc.strip() self.unit = self.unit.strip() self.bufr_unit = self.unit self.bufr_scale = self.scale # Compute character length from bit lenght if unit_is_string(self.unit): self.len = self.bit_len / 8 else: tlen = 1 << self.bit_len self.len = 0 while tlen != 0: tlen = tlen / 10 self.len += 1 CREXFMT='24sx2sx10s' def read_crex(self, s): self.unit, self.scale, self.len = struct.unpack(self.CREXFMT, s[:38]) self.unit = self.unit.strip() self.scale = int(self.scale) self.len = int(self.len) FMT=" %-6.6s %-64.64s %-24.24s %3.3s %12.12s %3.3s %-24.24s %2.2s %10.10s" def encode(self): var = self.var if var[0] == 'B': var = '0' + var[1:] args = map(str, (var, self.desc, self.unit, self.scale, self.bit_ref, self.bit_len, self.unit, self.scale, self.len)) return self.FMT % tuple(args) def dump(self): print "Var:", self.var print "Desc:", self.desc if self.unit == self.bufr_unit: print "Unit:", self.unit else: print "BUFR unit:", self.bufr_unit print "CREX unit:", self.unit if self.is_string(): print "Format: %d chars:" % self.len elif self.scale == 0: print "Format: %d digits" % self.len elif self.scale > 0: fmtdesc = "#" * min(self.len - self.scale, 99) fmtdesc += '.' fmtdesc += "#" * min(self.scale, 99) print "Format:", fmtdesc elif self.scale < 0: fmtdesc = "#" * min(self.len, 99) fmtdesc += "0" * min(-self.scale, 99) print "Format:", fmtdesc def is_string(self): "True if the variable is a string; false if it is a numeric value" return unit_is_string(self.unit) def check(self): "Consistency checks" if unit_is_string(self.bufr_unit) != unit_is_string(self.unit): return "CREX is_string (%s - %s) is different than BUFR is_string (%s - %s)" % ( self.unit, str(unit_is_string(self.unit)), self.bufr_unit, str(unit_is_string(self.bufr_unit))) return None # def irange(self): # "Range of int-converted values" # if self.is_string: # return 0, 0 # if self.len >= 10: # return -2**31, 2**31 # # def drange(self): # "Range of float, unconverted values" # if self.is_string: # return 0.0, 0.0 # # if (i->len >= 10) # { # i->imin = INT_MIN; # i->imax = INT_MAX; # } else { # /* # // We subtract 2 because 2^bit_len-1 is the # // BUFR missing value # int bufr_min = i->bit_ref; # int bufr_max = exp2(i->bit_len) + i->bit_ref - 2; # // We subtract 2 because 10^len-1 is the # // CREX missing value # int crex_min = -(int)(exp10(i->len) - 1.0); # int crex_max = (int)(exp10(i->len) - 2.0); # // Actually, we cannot subtract 2 because RADAR BUFR # // messages have 255 subsets, and the delayed # // replication field is 8 bits, so 255 is the missing # // value, and if we disallow it here we cannot import # // radars anymore. # */ # /* # * If the unit is the same between BUFR and CREX, take # * the most restrictive extremes. # * # * If the unit is different, take the most permissive # * extremes, to make sure to fit values in both units # */ # /* # if (strcmp(i->unit, i->bufr_unit) == 0) # { # i->imin = bufr_min > crex_min ? bufr_min : crex_min; # i->imax = bufr_max < crex_max ? bufr_max : crex_max; # } else { # i->imin = bufr_min < crex_min ? bufr_min : crex_min; # i->imax = bufr_max > crex_max ? bufr_max : crex_max; # } # */ # /* # i->imin = i->bit_ref; # i->imax = exp2(i->bit_len) + i->bit_ref - 2; # */ # i->imin = -(int)(exp10(i->len) - 1.0); # i->imax = (int)(exp10(i->len) - 1.0); # } # i->dmin = dba_var_decode_int(i->imin, i); # i->dmax = dba_var_decode_int(i->imax, i); def read_btable(fd): for idx, line in enumerate(fd): entry = Entry() entry.read_bufr(line) if len(line) >= 157: entry.read_crex(line[119:]) msg = entry.check() if msg is not None: print >>sys.stderr, "Line %d: %s" % (idx+1, msg) yield entry import readline class Completer(object): def __init__(self, func): self.func = func self.opts = [] def __call__(self, text, state): if state == 0: self.opts = list(self.func(text)) if state >= len(self.opts): return None return self.opts[state] class App(object): def __init__(self, tablefname): self.entries = list(read_btable(open(tablefname))) self.entry = None def get_entry(self, b): for e in self.entries: if e.var == b: return e return None def comp_field(self, text): for field in self.entry.FIELDS: if field.startswith(text): yield field def comp_val(self, text): res = set() for e in self.entries: val = str(getattr(e, self.field, "")) if val.startswith(text): res.add(val) return sorted(res) def main(self, var): readline.parse_and_bind("tab: complete") self.entry = self.get_entry(var) if self.entry is None: self.entry = Entry() self.entry.var = var while True: print "Current entry value:" self.entry.dump() readline.set_completer(Completer(self.comp_field)) self.field = raw_input("field to set (? for help, q to quit): ") if self.field == '?': print for f in self.entry.FIELDS: print "%s: %s" % (f, ENTRYDOC[f]) print continue elif self.field == 'q': break elif self.field == "": print continue elif self.field not in self.entry.FIELDS: print "Invalid field (try ? for help)." print continue else: readline.set_completer(Completer(self.comp_val)) print "%s: %s" % (self.field, ENTRYDOC[self.field]) print "current value:", getattr(self.entry, self.field) val = raw_input("value to set: ").strip() try: if self.field in self.entry.NUMFIELDS: val = int(val) setattr(self.entry, self.field, val) except Exception, e: print e print print self.entry.encode() app = App(sys.argv[1]) app.main(sys.argv[2]) dballe-7.21/src/Makefile.in0000644000175000017500000006153613022512016012446 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @FILE_OFFSET_BITS_64_TRUE@am__append_1 = -D_FILE_OFFSET_BITS=64 bin_PROGRAMS = dbatbl$(EXEEXT) dbamsg$(EXEEXT) dbadb$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/m4_ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_bin_SCRIPTS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_dbadb_OBJECTS = dbadb.$(OBJEXT) dbadb_OBJECTS = $(am_dbadb_OBJECTS) dbadb_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = dbadb_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(dbadb_LDFLAGS) $(LDFLAGS) -o $@ am_dbamsg_OBJECTS = dbamsg.$(OBJEXT) dbamsg_OBJECTS = $(am_dbamsg_OBJECTS) dbamsg_LDADD = $(LDADD) dbamsg_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(dbamsg_LDFLAGS) $(LDFLAGS) -o $@ am_dbatbl_OBJECTS = dbatbl.$(OBJEXT) dbatbl_OBJECTS = $(am_dbatbl_OBJECTS) dbatbl_LDADD = $(LDADD) dbatbl_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(dbatbl_LDFLAGS) $(LDFLAGS) -o $@ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(dist_bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(dbadb_SOURCES) $(dbamsg_SOURCES) $(dbatbl_SOURCES) DIST_SOURCES = $(dbadb_SOURCES) $(dbamsg_SOURCES) $(dbatbl_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDBALLEF_VERSION_INFO = @LIBDBALLEF_VERSION_INFO@ LIBDBALLE_VERSION_INFO = @LIBDBALLE_VERSION_INFO@ LIBOBJS = @LIBOBJS@ LIBPQ_CFLAGS = @LIBPQ_CFLAGS@ LIBPQ_LIBS = @LIBPQ_LIBS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MYSQL_CFLAGS = @MYSQL_CFLAGS@ MYSQL_LIBS = @MYSQL_LIBS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ WREPORT_CFLAGS = @WREPORT_CFLAGS@ WREPORT_LIBS = @WREPORT_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_doxygen = @have_doxygen@ have_gperf = @have_gperf@ have_rst2html = @have_rst2html@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mysql_config = @mysql_config@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ tabledir = @tabledir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ DBALLELIBS = ../dballe/libdballe.la AM_CPPFLAGS = -I$(top_srcdir) $(WREPORT_CFLAGS) $(LUA_CFLAGS) -Werror \ $(am__append_1) dist_bin_SCRIPTS = dbatbl_makeb dbaexport dbatbl_SOURCES = dbatbl.cc dbatbl_LDFLAGS = $(DBALLELIBS) $(WREPORT_LIBS) -lpopt dbatbl_DEPENDENCIES = $(DBALLELIBS) dbamsg_SOURCES = dbamsg.cc dbamsg_LDFLAGS = $(DBALLELIBS) $(WREPORT_LIBS) -lpopt dbamsg_DEPENDENCIES = $(DBALLELIBS) dbadb_SOURCES = dbadb.cc dbadb_LDFLAGS = $(DBALLELIBS) $(WREPORT_LIBS) -lpopt dbadb_DEPENDENCIES = $(DBALLELIBS) all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list dbadb$(EXEEXT): $(dbadb_OBJECTS) $(dbadb_DEPENDENCIES) $(EXTRA_dbadb_DEPENDENCIES) @rm -f dbadb$(EXEEXT) $(AM_V_CXXLD)$(dbadb_LINK) $(dbadb_OBJECTS) $(dbadb_LDADD) $(LIBS) dbamsg$(EXEEXT): $(dbamsg_OBJECTS) $(dbamsg_DEPENDENCIES) $(EXTRA_dbamsg_DEPENDENCIES) @rm -f dbamsg$(EXEEXT) $(AM_V_CXXLD)$(dbamsg_LINK) $(dbamsg_OBJECTS) $(dbamsg_LDADD) $(LIBS) dbatbl$(EXEEXT): $(dbatbl_OBJECTS) $(dbatbl_DEPENDENCIES) $(EXTRA_dbatbl_DEPENDENCIES) @rm -f dbatbl$(EXEEXT) $(AM_V_CXXLD)$(dbatbl_LINK) $(dbatbl_OBJECTS) $(dbatbl_LDADD) $(LIBS) install-dist_binSCRIPTS: $(dist_bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbadb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbamsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbatbl.Po@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-dist_binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_binSCRIPTS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dist_binSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-dist_binSCRIPTS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dballe-7.21/src/dbadb.cc0000644000175000017500000003502613022043102011732 00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace dballe; using namespace dballe::cmdline; using namespace wreport; using namespace std; // Command line parser variables struct cmdline::ReaderOptions readeropts; static const char* op_output_template = ""; const char* op_output_type = "bufr"; const char* op_report = ""; const char* op_url = ""; const char* op_user = ""; const char* op_pass = ""; int op_wipe_first = 0; int op_dump = 0; int op_overwrite = 0; int op_fast = 0; int op_no_attrs = 0; int op_full_pseudoana = 0; int op_verbose = 0; int op_precise_import = 0; int op_wipe_disappear = 0; struct poptOption grepTable[] = { { "category", 0, POPT_ARG_INT, &readeropts.category, 0, "match messages with the given data category", "num" }, { "subcategory", 0, POPT_ARG_INT, &readeropts.subcategory, 0, "match BUFR messages with the given data subcategory", "num" }, { "check-digit", 0, POPT_ARG_INT, &readeropts.checkdigit, 0, "match CREX messages with check digit (if 1) or without check digit (if 0)", "num" }, { "parsable", 0, 0, &readeropts.parsable, 0, "match only messages that can be parsed", 0 }, { "index", 0, POPT_ARG_STRING, &readeropts.index_filter, 0, "match messages with the index in the given range (ex.: 1-5,9,22-30)", "expr" }, POPT_TABLEEND }; struct poptOption dbTable[] = { { "dsn", 0, POPT_ARG_STRING, &op_url, 0, "alias of --url, used for historical compatibility", "url" }, { "url", 0, POPT_ARG_STRING, &op_url, 0, "DSN, or URL-like database definition, to use for connecting to the DB-All.e database (can also be specified in the environment as DBA_DB)", "url" }, { "wipe-first", 0, POPT_ARG_NONE, &op_wipe_first, 0, "wipe database before any other action" }, POPT_TABLEEND }; static unique_ptr connect() { const char* chosen_url; /* If url is missing, look in the environment */ if (op_url[0] == 0) { chosen_url = getenv("DBA_DB"); if (chosen_url == NULL) throw error_consistency("no database specified"); } else chosen_url = op_url; /* If url looks like a url, treat it accordingly */ unique_ptr db = DB::connect_from_url(chosen_url); // Wipe database if requested if (op_wipe_first) db->reset(); return db; } // Command line parsing wrappers for Dbadb methods struct DatabaseCmd : public cmdline::Subcommand { void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back({ NULL, 0, POPT_ARG_INCLUDE_TABLE, &dbTable, 0, "Options used to connect to the database", 0 }); } }; struct DumpCmd : public DatabaseCmd { DumpCmd() { names.push_back("dump"); usage = "dump [options] [queryparm1=val1 [queryparm2=val2 [...]]]"; desc = "Dump data from the database"; longdesc = "Query parameters are the same of the Fortran API. " "Please see the section \"Input and output parameters -- For data " "related action routines\" of the Fortran API documentation for a " "complete list."; } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); /* Create the query */ core::Query query; dba_cmdline_get_query(optCon, query); unique_ptr db = connect(); Dbadb dbadb(*db); return dbadb.do_dump(query, stdout); } }; struct StationsCmd : public DatabaseCmd { StationsCmd() { names.push_back("stations"); usage = "stations [options] [queryparm1=val1 [queryparm2=val2 [...]]]"; desc = "List the stations present in the database"; longdesc = "Query parameters are the same of the Fortran API. " "Please see the section \"Input and output parameters -- For data " "related action routines\" of the Fortran API documentation for a " "complete list."; } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); /* Create the query */ core::Query query; dba_cmdline_get_query(optCon, query); unique_ptr db = connect(); Dbadb dbadb(*db); return dbadb.do_stations(query, stdout); } }; /// Create / empty the database struct WipeCmd : public DatabaseCmd { WipeCmd() { names.push_back("wipe"); usage = "wipe [options] [optional rep_memo description file]"; desc = "Reinitialise the database, removing all data"; longdesc = "Reinitialisation is done using the given report code description file. " "If no file is provided, a default version is used"; } void add_to_optable(std::vector& opts) const override { DatabaseCmd::add_to_optable(opts); opts.push_back({ "disappear", 0, POPT_ARG_NONE, &op_wipe_disappear, 0, "just remove the DB-All.e data and tables", 0 }); } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); /* Get the optional name of the repinfo file */ const char* fname = poptGetArg(optCon); { // Connect first using the current format, and remove all tables. unique_ptr db = connect(); db->disappear(); } if (!op_wipe_disappear) { // Recreate tables unique_ptr db = connect(); db->reset(fname); } return 0; } }; /// Perform database cleanup maintenance struct CleanupCmd : public DatabaseCmd { CleanupCmd() { names.push_back("cleanup"); usage = "cleanup [options]"; desc = "Perform database cleanup operations"; longdesc = "The only operation currently performed by this command is " "deleting stations that have no values. If more will be added in " "the future, they will be documented here."; } int main(poptContext optCon) { unique_ptr db = connect(); db->vacuum(); return 0; } }; /// Update repinfo information in the database struct RepinfoCmd : public DatabaseCmd { RepinfoCmd() { names.push_back("repinfo"); usage = "repinfo [options] [filename]"; desc = "Update the report information table"; longdesc = "Update the report information table with the data from the given " "report code description file. " "If no file is provided, a default version is used"; } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); unique_ptr db = connect(); /* Get the optional name of the repinfo file. If missing, the default will be used */ const char* fname = poptGetArg(optCon); int added, deleted, updated; db->update_repinfo(fname, &added, &deleted, &updated); printf("Update completed: %d added, %d deleted, %d updated.\n", added, deleted, updated); return 0; } }; struct ImportCmd : public DatabaseCmd { ImportCmd() { names.push_back("import"); usage = "import [options] [filter] filename [filename [ ... ] ]"; desc = "Import data into the database"; } void add_to_optable(std::vector& opts) const override { DatabaseCmd::add_to_optable(opts); opts.push_back({ "type", 't', POPT_ARG_STRING, &readeropts.input_type, 0, "format of the input data ('bufr', 'crex', 'aof', 'csv', 'json')", "type" }); opts.push_back({ "rejected", 0, POPT_ARG_STRING, &readeropts.fail_file_name, 0, "write unprocessed data to this file", "fname" }); opts.push_back({ "overwrite", 'f', POPT_ARG_NONE, &op_overwrite, 0, "overwrite existing data", 0 }); opts.push_back({ "report", 'r', POPT_ARG_STRING, &op_report, 0, "force data to be of this type of report", "rep" }); opts.push_back({ "fast", 0, POPT_ARG_NONE, &op_fast, 0, "Prefer speed to transactional integrity: if the import is interrupted," " the database needs to be wiped and recreated.", 0 }); opts.push_back({ "no-attrs", 0, POPT_ARG_NONE, &op_no_attrs, 0, "do not import data attributes", 0 }); opts.push_back({ "full-pseudoana", 0, POPT_ARG_NONE, &op_full_pseudoana, 0, "merge pseudoana extra values with the ones already existing in the database", 0 }); opts.push_back({ "precise", 0, 0, &op_precise_import, 0, "import messages using precise contexts instead of standard ones", 0 }); opts.push_back({ NULL, 0, POPT_ARG_INCLUDE_TABLE, &grepTable, 0, "Options used to filter messages", 0 }); } int main(poptContext optCon) override { // Throw away the command name poptGetArg(optCon); cmdline::Reader reader(readeropts); // Configure the reader core::Query query; if (dba_cmdline_get_query(optCon, query) > 0) reader.filter.matcher_from_record(query); reader.import_opts.simplified = !op_precise_import; // Configure the importer int import_flags = 0; if (op_overwrite) import_flags |= DBA_IMPORT_OVERWRITE; if (op_fast) setenv("DBA_INSECURE_SQLITE", "true", true); if (!op_no_attrs) import_flags |= DBA_IMPORT_ATTRS; if (op_full_pseudoana) import_flags |= DBA_IMPORT_FULL_PSEUDOANA; unique_ptr db = connect(); const char* forced_repmemo = NULL; if (strcmp(op_report, "") != 0) forced_repmemo = op_report; Dbadb dbadb(*db); return dbadb.do_import(get_filenames(optCon), reader, import_flags, forced_repmemo); } }; struct ExportCmd : public DatabaseCmd { ExportCmd() { names.push_back("export"); usage = "export [options] rep_memo [queryparm1=val1 [queryparm2=val2 [...]]]"; desc = "Export data from the database"; longdesc = "Query parameters are the same of the Fortran API. " "Please see the section \"Input and output parameters -- For data " "related action routines\" of the Fortran API documentation for a " "complete list."; } void add_to_optable(std::vector& opts) const override { DatabaseCmd::add_to_optable(opts); opts.push_back({ "report", 'r', POPT_ARG_STRING, &op_report, 0, "force exported data to be of this type of report", "rep" }); opts.push_back({ "dest", 'd', POPT_ARG_STRING, &op_output_type, 0, "format of the data in output ('bufr', 'crex', 'aof')", "type" }); opts.push_back({ "template", 't', POPT_ARG_STRING, &op_output_template, 0, "template of the data in output (autoselect if not specified, 'list' gives a list)", "name" }); opts.push_back({ "dump", 0, POPT_ARG_NONE, &op_dump, 0, "dump data to be encoded instead of encoding it", 0 }); } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); if (strcmp(op_output_template, "list") == 0) { list_templates(); return 0; } // Reat the query from command line core::Query query; dba_cmdline_get_query(optCon, query); unique_ptr db = connect(); Dbadb dbadb(*db); const char* forced_repmemo = NULL; if (strcmp(op_report, "") != 0) forced_repmemo = op_report; if (op_dump) { return dbadb.do_export_dump(query, stdout); } else { File::Encoding type = File::parse_encoding(op_output_type); unique_ptr file = File::create(type, stdout, false, "w"); return dbadb.do_export(query, *file, op_output_template, forced_repmemo); } } }; struct DeleteCmd : public DatabaseCmd { DeleteCmd() { names.push_back("delete"); usage = "delete [options] [queryparm1=val1 [queryparm2=val2 [...]]]"; desc = "Delete all the data matching the given query parameters"; longdesc = "Query parameters are the same of the Fortran API. " "Please see the section \"Input and output parameters -- For data " "related action routines\" of the Fortran API documentation for a " "complete list."; } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); if (poptPeekArg(optCon) == NULL) dba_cmdline_error(optCon, "you need to specify some query parameters"); /* Add the query data from commandline */ core::Query query; dba_cmdline_get_query(optCon, query); unique_ptr db = connect(); // TODO: check that there is something db->remove(query); return 0; } }; struct InfoCmd : public DatabaseCmd { InfoCmd() { names.push_back("info"); usage = "info"; desc = "Print information about the database"; } int main(poptContext optCon) override { // Throw away the command name poptGetArg(optCon); unique_ptr db = connect(); string default_format = db::format_format(DB::get_default_format()); fprintf(stdout, "Default format for new DBs: %s\n", default_format.c_str()); db->print_info(stdout); return 0; } }; int main (int argc, const char* argv[]) { Command dbadb; dbadb.name = "dbadb"; dbadb.desc = "Manage the DB-ALLe database"; dbadb.longdesc = "It allows to initialise the database, dump its contents and import and export data " "using BUFR, CREX or AOF encoding"; dbadb.add_subcommand(new DumpCmd); dbadb.add_subcommand(new StationsCmd); dbadb.add_subcommand(new WipeCmd); dbadb.add_subcommand(new CleanupCmd); dbadb.add_subcommand(new RepinfoCmd); dbadb.add_subcommand(new ImportCmd); dbadb.add_subcommand(new ExportCmd); dbadb.add_subcommand(new DeleteCmd); dbadb.add_subcommand(new InfoCmd); return dbadb.main(argc, argv); } /* vim:set ts=4 sw=4: */ dballe-7.21/src/Makefile.am0000644000175000017500000000125013022043102012413 00000000000000## Process this file with automake to produce Makefile.in DBALLELIBS = ../dballe/libdballe.la AM_CPPFLAGS = -I$(top_srcdir) $(WREPORT_CFLAGS) $(LUA_CFLAGS) -Werror if FILE_OFFSET_BITS_64 AM_CPPFLAGS += -D_FILE_OFFSET_BITS=64 endif bin_PROGRAMS = dbatbl dbamsg dist_bin_SCRIPTS = dbatbl_makeb dbaexport dbatbl_SOURCES = dbatbl.cc dbatbl_LDFLAGS = $(DBALLELIBS) $(WREPORT_LIBS) -lpopt dbatbl_DEPENDENCIES = $(DBALLELIBS) dbamsg_SOURCES = dbamsg.cc dbamsg_LDFLAGS = $(DBALLELIBS) $(WREPORT_LIBS) -lpopt dbamsg_DEPENDENCIES = $(DBALLELIBS) bin_PROGRAMS += dbadb dbadb_SOURCES = dbadb.cc dbadb_LDFLAGS = $(DBALLELIBS) $(WREPORT_LIBS) -lpopt dbadb_DEPENDENCIES = $(DBALLELIBS) dballe-7.21/src/dbaexport0000755000175000017500000001257013022043102012304 00000000000000#!/usr/bin/python # coding: utf-8 from __future__ import absolute_import from __future__ import print_function from __future__ import division from __future__ import unicode_literals import argparse import logging import os import sys import io try: import dballe HAS_DBALLE = True except ImportError: HAS_DBALLE = False log = logging.getLogger("main") class CommandError(Exception): pass def setup_logging(args): FORMAT = "%(levelname)s: %(message)s" if args.verbose: logging.basicConfig(level=logging.INFO, stream=sys.stderr, format=FORMAT) else: logging.basicConfig(level=logging.WARNING, stream=sys.stderr, format=FORMAT) def get_db(args): if not args.dsn: dsn = os.environ.get("DBA_DB", "") else: dsn = args.dsn if not dsn: raise CommandError("Cannot find a database to connect to: --dsn is not specified and $DBA_DB is not set") elif dballe.DB.is_url(dsn): return dballe.DB.connect_from_url(dsn) else: return dballe.DB.connect(dsn, args.user, args.password) def get_query(args): query = dballe.Record() for q in args.query: query.set_from_string(q) return query def get_outfd(args, text=False): """ Get the output file descriptor """ if args.outfile: if text: return io.open(args.outfile, "wt", encoding="utf-8") else: return io.open(args.outfile, "wb") else: if text: return io.open(sys.stdout.fileno(), "wt", encoding="utf-8", closefd=False) else: return io.open(sys.stdout.fileno(), "wb", closefd=False) if __name__ == "__main__": parser = argparse.ArgumentParser(description='Export data from a DB-All.e database.') parser.add_argument("--verbose", action="store_true", help="verbose output") parser.add_argument("--dsn", type=str, metavar="dsn", help="DSN, or URL-like database definition, to use for connecting to the DB-All.e database (can also be specified in the environment as DBA_DB)") parser.add_argument("--user", type=str, metavar="name", help="username to use for connecting to the DB-All.e database") parser.add_argument("--pass", type=str, metavar="password", dest="password", help="password to use for connecting to the DB-All.e database") parser.add_argument("--outfile", "-o", type=str, metavar="file", help="output file. Default is standard output, if supported") subparsers = parser.add_subparsers(dest="format", help="output formats") # Use a byte-string for subparser name to avoid seeing u'csv' in output. # Remove in python3 parser_csv = subparsers.add_parser(b"csv", help="export data as CSV") parser_csv.add_argument("query", nargs="*", metavar="key=val", help="DB-All.e query to select data to export") parser_gnur = subparsers.add_parser(b"gnur", help="export data as GNU R workspace") parser_gnur.add_argument("query", nargs="*", metavar="key=val", help="DB-All.e query to select data to export") parser_bufr = subparsers.add_parser(b"bufr", help="export data as BUFR") parser_bufr.add_argument("query", nargs="*", metavar="key=val", help="DB-All.e query to select data to export") parser_bufr.add_argument("--generic", action="store_true", help="export generic BUFR messages") parser_crex = subparsers.add_parser(b"crex", help="export data as CREX") parser_crex.add_argument("query", nargs="*", metavar="key=val", help="DB-All.e query to select data to export") parser_crex.add_argument("--generic", action="store_true", help="export generic BUFR messages") args = parser.parse_args() try: setup_logging(args) if not HAS_DBALLE: raise CommandError("This command requires the dballe python module to run") db = get_db(args) query = get_query(args) if args.format == "csv": import dballe.dbacsv with get_outfd(args, text=True) as fd: dballe.dbacsv.export(db, query, fd) elif args.format == "gnur": if not args.outfile: raise CommandError("cannot export R data to standard output: please use --outfile") import dballe.rconvert import dballe.volnd idx = (dballe.volnd.AnaIndex(), \ dballe.volnd.DateTimeIndex(), \ dballe.volnd.LevelIndex(), \ dballe.volnd.TimeRangeIndex(), \ dballe.volnd.NetworkIndex()) res = dballe.volnd.read(db.query_data(query), idx) dballe.rconvert.volnd_save_to_r(res, args.outfile) elif args.format == "bufr": if not args.outfile: raise CommandError("BUFR output requires --outfile") db.export_to_file(query, "BUFR", args.outfile, generic=args.generic) elif args.format == "crex": if not args.outfile: raise CommandError("CREX output requires --outfile") db.export_to_file(query, "CREX", args.outfile, generic=args.generic) else: raise CommandError("Exporter for {} is not available.".format(args.format)) except CommandError as e: log.error("%s", e) sys.exit(1) dballe-7.21/src/dbamsg.cc0000644000175000017500000012717213022043102012137 00000000000000/* For %zd */ #define _ISOC99_SOURCE #include "dballe/message.h" #include "dballe/msg/msg.h" #include "dballe/msg/context.h" #include "dballe/msg/aof_codec.h" #include "dballe/msg/bulletin.h" #include "dballe/record.h" #include "dballe/file.h" #include "dballe/core/query.h" #include "dballe/core/aoffile.h" #include "dballe/core/matcher.h" #include "dballe/core/csv.h" #include "dballe/core/json.h" #include "dballe/core/var.h" #include "dballe/cmdline/cmdline.h" #include "dballe/cmdline/processor.h" #include "dballe/cmdline/conversion.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace wreport; using namespace dballe; using namespace dballe::cmdline; using namespace std; static int op_dump_interpreted = 0; static int op_dump_text = 0; static int op_dump_csv = 0; static int op_dump_json = 0; static int op_dump_dds = 0; static int op_dump_structured = 0; static int op_precise_import = 0; static int op_bufr2netcdf_categories = 0; static const char* op_output_type = "bufr"; static const char* op_output_template = ""; static const char* op_output_file = nullptr; static const char* op_report = ""; static const char* op_bisect_cmd = nullptr; int op_verbose = 0; struct cmdline::ReaderOptions readeropts; struct poptOption grepTable[] = { { "category", 0, POPT_ARG_INT, &readeropts.category, 0, "match messages with the given data category", "num" }, { "subcategory", 0, POPT_ARG_INT, &readeropts.subcategory, 0, "match BUFR messages with the given data subcategory", "num" }, { "check-digit", 0, POPT_ARG_INT, &readeropts.checkdigit, 0, "match CREX messages with check digit (if 1) or without check digit (if 0)", "num" }, { "unparsable", 0, 0, &readeropts.unparsable, 0, "match only messages that cannot be parsed", 0 }, { "parsable", 0, 0, &readeropts.parsable, 0, "match only messages that can be parsed", 0 }, { "index", 0, POPT_ARG_STRING, &readeropts.index_filter, 0, "match messages with the index in the given range (ex.: 1-5,9,22-30)", "expr" }, POPT_TABLEEND }; /// Write CSV output to the given output stream struct FileCSV : CSVWriter { FILE* out; FileCSV(FILE* out) : out(out) {} void flush_row() override { fputs(row.c_str(), out); putc('\n', out); row.clear(); } }; volatile int flag_bisect_stop = 0; void stop_bisect(int sig) { /* The signal handler just clears the flag and re-enables itself. */ flag_bisect_stop = 1; signal(sig, stop_bisect); } static int count_nonnulls(const Subset& raw) { unsigned i, count = 0; for (i = 0; i < raw.size(); i++) if (raw[i].isset()) count++; return count; } static void dump_common_header(const BinaryMessage& rmsg, const Bulletin& braw) { printf("Message %d\n", rmsg.index); printf("Size: %zd\n", rmsg.data.size()); printf("Master table number: %hhu\n", braw.master_table_number); printf("Origin: %hu:%hu\n", braw.originating_centre, braw.originating_subcentre); printf("Category: %hhu:%hhu:%hhu\n", braw.data_category, braw.data_subcategory, braw.data_subcategory_local); printf("Update sequence number: %hhu\n", braw.update_sequence_number); printf("Datetime: %04hu-%02hhu-%02hhu %02hhu:%02hhu:%02hhu\n", braw.rep_year, braw.rep_month, braw.rep_day, braw.rep_hour, braw.rep_minute, braw.rep_second); printf("B Table: %s\n", braw.tables.btable ? braw.tables.btable->pathname().c_str() : "(none)"); printf("D Table: %s\n", braw.tables.dtable ? braw.tables.dtable->pathname().c_str() : "(none)"); } static void dump_bufr_header(const BinaryMessage& rmsg, const BufrBulletin& braw) { dump_common_header(rmsg, braw); printf("BUFR edition: %hhu\n", braw.edition_number); printf("Table version: %hhu:%hhu\n", braw.master_table_version_number, braw.master_table_version_number_local); printf("Compression: %s\n", braw.compression ? "yes" : "no"); printf("Optional section length: %zd\n", braw.optional_section.size()); printf("Subsets: %zd\n\n", braw.subsets.size()); } static void dump_crex_header(const BinaryMessage& rmsg, const CrexBulletin& braw) { dump_common_header(rmsg, braw); printf("CREX edition: %hhu\n", braw.edition_number); printf("Table version: %hhu/%hhu:%hhu\n", braw.master_table_version_number, braw.master_table_version_number_bufr, braw.master_table_version_number_local); printf("Check digit: %s\n\n", braw.has_check_digit ? "yes" : "no"); } static void dump_aof_header(const BinaryMessage& rmsg) { int category, subcategory; msg::AOFImporter::get_category(rmsg, &category, &subcategory); printf("Message %d\n", rmsg.index); printf("Size: %zd\n", rmsg.data.size()); printf("Category: %d:%d\n\n", category, subcategory); } static void print_bulletin_header(const Bulletin& braw) { printf(", origin %hu:%hu, category %hhu %hhu:%hhu:%hhu", braw.originating_centre, braw.originating_subcentre, braw.master_table_number, braw.data_category, braw.data_subcategory, braw.data_subcategory_local); } static void print_bufr_header(const BufrBulletin& braw) { print_bulletin_header(braw); printf(", bufr edition %hhu, tables %hhu:%hhu", braw.edition_number, braw.master_table_version_number, braw.master_table_version_number_local); printf(", subsets %zd, values:", braw.subsets.size()); for (size_t i = 0; i < braw.subsets.size(); ++i) printf(" %d/%zd", count_nonnulls(braw.subsets[i]), braw.subsets[i].size()); } static void print_crex_header(const CrexBulletin& braw) { print_bulletin_header(braw); printf(", crex edition %hhu, tables %hhu/%hhu:%hhu", braw.edition_number, braw.master_table_version_number, braw.master_table_version_number_bufr, braw.master_table_version_number_local); printf(", subsets %zd, values:", braw.subsets.size()); for (size_t i = 0; i < braw.subsets.size(); ++i) printf(" %d/%zd", count_nonnulls(braw.subsets[i]), braw.subsets[i].size()); } static void print_aof_header(const BinaryMessage& rmsg) { int category, subcategory; msg::AOFImporter::get_category(rmsg, &category, &subcategory); printf(", category %d, subcategory %d", category, subcategory); } static void print_item_header(const Item& item) { printf("#%d", item.idx); if (item.rmsg) { printf(" %s message: %zd bytes", File::encoding_name(item.rmsg->encoding), item.rmsg->data.size()); switch (item.rmsg->encoding) { case File::BUFR: if (item.bulletin != NULL) print_bufr_header(*dynamic_cast(item.bulletin)); break; case File::CREX: if (item.bulletin != NULL) print_crex_header(*dynamic_cast(item.bulletin)); break; case File::AOF: print_aof_header(*item.rmsg); break; } } else if (item.msgs) { printf(" message: %zd subsets:", item.msgs->size()); string old_type; unsigned count = 0; for (const auto& i: *item.msgs) { const Msg& m = Msg::downcast(i); string new_type = msg_type_name(m.type); if (old_type.empty()) { old_type = new_type; count = 1; } else if (old_type != new_type) { printf(" %u %s", count, old_type.c_str()); old_type = new_type; count = 1; } else ++count; } printf(" %u %s", count, old_type.c_str()); } } struct Summarise : public cmdline::Action { virtual bool operator()(const cmdline::Item& item) { print_item_header(item); puts("."); return true; } }; struct Head : public cmdline::Action { virtual bool operator()(const cmdline::Item& item) { if (!item.rmsg) return false; switch (item.rmsg->encoding) { case File::BUFR: if (item.bulletin == NULL) return true; dump_bufr_header(*item.rmsg, *dynamic_cast(item.bulletin)); puts("."); break; case File::CREX: if (item.bulletin == NULL) return true; dump_crex_header(*item.rmsg, *dynamic_cast(item.bulletin)); puts("."); break; case File::AOF: dump_aof_header(*item.rmsg); break; } return true; } }; static void dump_dba_vars(const Subset& msg) { for (size_t i = 0; i < msg.size(); ++i) msg[i].print(stdout); } /** * Print a bulletin in CSV format */ struct CSVBulletin : public cmdline::Action { msg::BulletinCSVWriter writer; CSVBulletin() : writer(stdout) {} virtual bool operator()(const cmdline::Item& item) { if (!item.rmsg) return false; if (!item.bulletin) return false; writer.output_bulletin(*item.bulletin); return true; } }; /** * Print a Msgs in CSV format */ struct CSVMsgs : public cmdline::Action { bool first; FileCSV writer; CSVMsgs() : first(true), writer(stdout) {} virtual bool operator()(const cmdline::Item& item) { if (!item.msgs) return false; if (first) { Msg::csv_header(writer); first = false; } for (const auto& mi: *item.msgs) Msg::downcast(mi).to_csv(writer); return true; } }; /** * Print a Msgs in JSON format */ struct JSONMsgs : public cmdline::Action { core::JSONWriter json; JSONMsgs() : json(cout) {} ~JSONMsgs() { cout << flush; } virtual bool operator()(const cmdline::Item& item) { if (!item.msgs) return false; for (const auto& mi: *item.msgs) { const Msg& msg = Msg::downcast(mi); json.start_mapping(); json.add("version"); json.add(DBALLE_JSON_VERSION); json.add("network"); json.add(msg.get_rep_memo_var() ? msg.get_rep_memo_var()->enqc() : dballe::Msg::repmemo_from_type(msg.type)); json.add("ident"); if (msg.get_ident_var() != NULL) json.add(msg.get_ident_var()->enqc()); else json.add_null(); json.add("lon"); json.add_int(msg.get_longitude_var()->enqi()); json.add("lat"); json.add_int(msg.get_latitude_var()->enqi()); json.add("date"); std::stringstream ss; msg.get_datetime().to_stream_iso8601(ss, 'T', "Z"); json.add(ss.str().c_str()); json.add("data"); json.start_list(); for (const auto& ctx: msg.data) { json.start_mapping(); if (not ctx->is_station()) { json.add("timerange"); json.add(ctx->trange); json.add("level"); json.add(ctx->level); } json.add("vars"); json.start_mapping(); for (const auto& var: ctx->data) { json.add(wreport::varcode_format(var->code())); json.start_mapping(); json.add("v"); json.add(*var); json.add("a"); json.start_mapping(); for (const Var* attr = var->next_attr(); attr; attr = attr->next_attr()) { json.add(wreport::varcode_format(attr->code())); json.add(*attr); } json.end_mapping(); json.end_mapping(); } json.end_mapping(); json.end_mapping(); } json.end_list(); json.end_mapping(); json.add_break(); } return true; } }; struct DumpMessage : public cmdline::Action { void print_subsets(const Bulletin& braw) { for (size_t i = 0; i < braw.subsets.size(); ++i) { printf("Subset %zd:\n", i); dump_dba_vars(braw.subsets[i]); } } virtual bool operator()(const cmdline::Item& item) { print_item_header(item); if (!item.rmsg) { puts(": no low-level information available"); return true; } puts(":"); switch (item.rmsg->encoding) { case File::BUFR: { if (item.bulletin == NULL) return true; print_subsets(*item.bulletin); break; } case File::CREX: { if (item.bulletin == NULL) return true; print_subsets(*item.bulletin); break; } case File::AOF: msg::AOFImporter::dump(*item.rmsg, stdout); break; } return true; } }; struct DumpCooked : public cmdline::Action { virtual bool operator()(const cmdline::Item& item) { if (item.msgs == NULL) return false; for (size_t i = 0; i < item.msgs->size(); ++i) { printf("#%d[%zd] ", item.idx, i); (*item.msgs)[i].print(stdout); } return true; } }; static void print_var(const Var& var) { string formatted = var.format(""); printf("%01d%02d%03d %s\n", WR_VAR_FXY(var.code()), formatted.c_str()); } struct DumpText : public cmdline::Action { void add_keyval(const char* key, unsigned val) { printf("%s: %u\n", key, val); } void add_keyval(const char* key, const std::string& val) { printf("%s: %s\n", key, val.c_str()); } virtual bool operator()(const cmdline::Item& item) { if (item.bulletin == NULL) throw error_consistency("source is not a BUFR or CREX message"); const Bulletin& bul = *item.bulletin; add_keyval("master_table_number", bul.master_table_number); add_keyval("data_category", bul.data_category); add_keyval("data_subcategory", bul.data_subcategory); add_keyval("data_subcategory_local", bul.data_subcategory_local); add_keyval("originating_centre", bul.originating_centre); add_keyval("originating_subcentre", bul.originating_subcentre); add_keyval("update_sequence_number", bul.update_sequence_number); char buf[30]; snprintf(buf, 29, "%hu-%hhu-%hhu %hhu:%hhu:%hhu", bul.rep_year, bul.rep_month, bul.rep_day, bul.rep_hour, bul.rep_minute, bul.rep_second); add_keyval("representative_time", buf); if (const BufrBulletin* b = dynamic_cast(item.bulletin)) { add_keyval("encoding", "bufr"); add_keyval("edition_number", b->edition_number); add_keyval("master_table_version_number", b->master_table_version_number); add_keyval("master_table_version_number_local", b->master_table_version_number_local); add_keyval("compression", b->compression ? "true" : "false"); add_keyval("optional_section", b->optional_section); } else if (const CrexBulletin* b = dynamic_cast(item.bulletin)) { add_keyval("encoding", "crex"); add_keyval("edition_number", b->edition_number); add_keyval("master_table_version_number", b->master_table_version_number); add_keyval("master_table_version_number_bufr", b->master_table_version_number_bufr); add_keyval("master_table_version_number_local", b->master_table_version_number_local); add_keyval("has_check_digit", b->has_check_digit ? "true" : "false"); } else throw error_consistency("encoding not supported for CSV dump"); printf("descriptors:"); for (const auto& desc: bul.datadesc) printf(" %01d%02d%03d", WR_VAR_FXY(desc)); printf("\n"); for (size_t i = 0; i < bul.subsets.size(); ++i) { const Subset& subset = bul.subsets[i]; printf("subset %zd:\n", i + 1); for (size_t j = 0; j < subset.size(); ++j) { const Var& var = subset[j]; printf(" "); print_var(var); for (const Var* attr = var.next_attr(); attr; attr = attr->next_attr()) { printf(" *"); print_var(*attr); } } } return true; } }; struct DumpStructured : public cmdline::Action { virtual bool operator()(const cmdline::Item& item) { print_item_header(item); if (!item.rmsg) { puts(": no low-level information available"); return true; } if (!item.bulletin) { puts(": no bulletin information available"); return true; } puts(":"); item.bulletin->print_structured(stdout); return true; } }; struct DumpDDS : public cmdline::Action { virtual bool operator()(const cmdline::Item& item) { print_item_header(item); if (!item.rmsg) { puts(": no low-level information available"); return true; } if (!item.bulletin) { puts(": no bulletin information available"); return true; } puts(":"); item.bulletin->print_datadesc(stdout); return false; } }; struct WriteRaw : public cmdline::Action { File* file; WriteRaw() : file(0) {} ~WriteRaw() { if (file) delete file; } virtual bool operator()(const cmdline::Item& item) { if (!item.rmsg) return false; if (!file) file = File::create(item.rmsg->encoding, stdout, false, "(stdout)").release(); file->write(item.rmsg->data); return true; } }; struct Scan : public cmdline::Subcommand { Scan() { names.push_back("scan"); usage = "scan [options] [filter] filename [filename [...]]"; desc = "Summarise the contents of a file with meteorological data"; } void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back({ "type", 't', POPT_ARG_STRING, &readeropts.input_type, 0, "format of the input data ('bufr', 'crex', 'aof')", "type" }); opts.push_back({ "rejected", 0, POPT_ARG_STRING, &readeropts.fail_file_name, 0, "write unprocessed data to this file", "fname" }); opts.push_back({ NULL, 0, POPT_ARG_INCLUDE_TABLE, &grepTable, 0, "Options used to filter messages", 0 }); } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); core::Query query; cmdline::Reader reader(readeropts); if (dba_cmdline_get_query(optCon, query) > 0) reader.filter.matcher_from_record(query); Summarise s; reader.read(get_filenames(optCon), s); return 0; } }; struct HeadCmd : public cmdline::Subcommand { HeadCmd() { names.push_back("head"); usage = "head [options] [filter] filename [filename [...]]"; desc = "Dump the contents of the header of a file with meteorological data"; } void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back({ "type", 't', POPT_ARG_STRING, &readeropts.input_type, 0, "format of the input data ('bufr', 'crex', 'aof')", "type" }); opts.push_back({ "rejected", 0, POPT_ARG_STRING, &readeropts.fail_file_name, 0, "write unprocessed data to this file", "fname" }); opts.push_back({ NULL, 0, POPT_ARG_INCLUDE_TABLE, &grepTable, 0, "Options used to filter messages", 0 }); } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); cmdline::Reader reader(readeropts); core::Query query; if (dba_cmdline_get_query(optCon, query) > 0) reader.filter.matcher_from_record(query); Head head; reader.read(get_filenames(optCon), head); return 0; } }; struct Dump : public cmdline::Subcommand { Dump() { names.push_back("dump"); usage = "dump [options] [filter] filename [filename [...]]"; desc = "Dump the contents of a file with meteorological data"; } void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back({ "type", 't', POPT_ARG_STRING, &readeropts.input_type, 0, "format of the input data ('bufr', 'crex', 'aof')", "type" }); opts.push_back({ "rejected", 0, POPT_ARG_STRING, &readeropts.fail_file_name, 0, "write unprocessed data to this file", "fname" }); opts.push_back({ "interpreted", 0, 0, &op_dump_interpreted, 0, "dump the message as understood by the importer", 0 }); opts.push_back({ "precise", 0, 0, &op_precise_import, 0, "import messages using precise contexts instead of standard ones", 0 }); opts.push_back({ "text", 0, 0, &op_dump_text, 0, "dump as text that can be processed by dbamsg makebufr", 0 }); opts.push_back({ "csv", 0, 0, &op_dump_csv, 0, "dump in machine readable CSV format", 0 }); opts.push_back({ "json", 0, 0, &op_dump_json, 0, "dump in machine readable JSON format", 0 }); opts.push_back({ "dds", 0, 0, &op_dump_dds, 0, "dump structure of data description section", 0 }); opts.push_back({ "structured", 0, 0, &op_dump_structured, 0, "structured dump of the message contents", 0 }); opts.push_back({ NULL, 0, POPT_ARG_INCLUDE_TABLE, &grepTable, 0, "Options used to filter messages", 0 }); } int main(poptContext optCon) override { unique_ptr action; if (op_dump_csv) { if (op_dump_interpreted) action.reset(new CSVMsgs); else action.reset(new CSVBulletin); } else if (op_dump_json) action.reset(new JSONMsgs); else if (op_dump_interpreted) action.reset(new DumpCooked); else if (op_dump_text) action.reset(new DumpText); else if (op_dump_structured) action.reset(new DumpStructured); else if (op_dump_dds) action.reset(new DumpDDS); else action.reset(new DumpMessage); /* Throw away the command name */ poptGetArg(optCon); cmdline::Reader reader(readeropts); if (op_precise_import) reader.import_opts.simplified = false; core::Query query; if (dba_cmdline_get_query(optCon, query) > 0) reader.filter.matcher_from_record(query); reader.read(get_filenames(optCon), *action); return 0; } }; struct Cat : public cmdline::Subcommand { Cat() { names.push_back("cat"); usage = "cat [options] [filter] filename [filename [...]]"; desc = "Dump the raw data of a file with meteorological data"; } void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back({ "type", 't', POPT_ARG_STRING, &readeropts.input_type, 0, "format of the input data ('bufr', 'crex', 'aof')", "type" }); opts.push_back({ "rejected", 0, POPT_ARG_STRING, &readeropts.fail_file_name, 0, "write unprocessed data to this file", "fname" }); opts.push_back({ NULL, 0, POPT_ARG_INCLUDE_TABLE, &grepTable, 0, "Options used to filter messages", 0 }); } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); cmdline::Reader reader(readeropts); core::Query query; if (dba_cmdline_get_query(optCon, query) > 0) reader.filter.matcher_from_record(query); /*DBA_RUN_OR_RETURN(aof_file_write_header(file, 0, 0)); */ WriteRaw wraw; reader.read(get_filenames(optCon), wraw); return 0; } }; struct StoreMessages : public cmdline::Action, public vector { virtual void operator()(const BinaryMessage& rmsg, const wreport::Bulletin*, const Messages*) { push_back(rmsg); } }; #if 0 static dba_err bisect_test(struct message_vector* vec, size_t first, size_t last, int* fails) { FILE* out = popen(op_bisect_cmd, "w"); int res; for (; first < last; ++first) { dba_rawmsg msg = vec->messages[first]; if (fwrite(msg->buf, msg->len, 1, out) == 0) return dba_error_system("writing message %d to test script", msg->index); } res = pclose(out); if (res == -1) return dba_error_system("running test script", first); *fails = (res != 0); return dba_error_ok(); } struct bisect_candidate { size_t first; size_t last; }; static dba_err bisect( struct bisect_candidate* cand, struct message_vector* vec, size_t first, size_t last) { int fails = 0; /* If we already narrowed it down to 1 messages, there is no need to test * further */ if (flag_bisect_stop || cand->last == cand->first + 1) return dba_error_ok(); if (op_verbose) fprintf(stderr, "Trying messages %zd-%zd (%zd selected, kill -HUP %d to stop)... ", first, last, cand->last - cand->first, getpid()); DBA_RUN_OR_RETURN(bisect_test(vec, first, last, &fails)); if (op_verbose) fprintf(stderr, fails ? "fail.\n" : "ok.\n"); if (fails) { size_t mid = (first + last) / 2; if (last-first < cand->last - cand->first) { cand->last = last; cand->first = first; } if (first < mid && mid != last) DBA_RUN_OR_RETURN(bisect(cand, vec, first, mid)); if (mid < last && mid != first) DBA_RUN_OR_RETURN(bisect(cand, vec, mid, last)); } return dba_error_ok(); } #endif struct Bisect : public cmdline::Subcommand { Bisect() { names.push_back("bisect"); usage = "bisect [options] --test=testscript filename"; desc = "Bisect filename and output the minimum subsequence found for which testscript fails."; longdesc = "Run testscript passing parts of filename on its stdin and checking the return code. Then divide the input in half and try on each half. Keep going until testscript does not fail in any portion of the file. Output to stdout the smallest portion for which testscript fails. This is useful to isolate the few messages in a file that cause problems"; } void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back({ "test", 0, POPT_ARG_STRING, &op_bisect_cmd, 0, "command to run to test a message group", "cmd" }); opts.push_back({ "type", 't', POPT_ARG_STRING, &readeropts.input_type, 0, "format of the input data ('bufr', 'crex', 'aof')", "type" }); opts.push_back({ "rejected", 0, POPT_ARG_STRING, &readeropts.fail_file_name, 0, "write unprocessed data to this file", "fname" }); opts.push_back({ NULL, 0, POPT_ARG_INCLUDE_TABLE, &grepTable, 0, "Options used to filter messages", 0 }); } int main(poptContext optCon) override { #if 0 struct message_vector vec = { 0, 0, 0 }; struct bisect_candidate candidate; int old_op_verbose = op_verbose; size_t i; /* Throw away the command name */ poptGetArg(optCon); if (op_bisect_cmd == NULL) return dba_error_consistency("you need to use --test=command"); /* Read all input messages a vector of dba_rawmsg */ op_verbose = 0; DBA_RUN_OR_RETURN(process_all(optCon, dba_cmdline_stringToMsgType(reader.input_type, optCon), &reader.filter, store_messages, &vec)); op_verbose = old_op_verbose; /* Establish a handler for SIGHUP signals. */ signal(SIGHUP, stop_bisect); /* Bisect working on the vector */ candidate.first = 0; candidate.last = vec.len; DBA_RUN_OR_RETURN(bisect(&candidate, &vec, candidate.first, candidate.last)); if (op_verbose) { if (flag_bisect_stop) fprintf(stderr, "Stopped by SIGHUP.\n"); fprintf(stderr, "Selected messages %zd-%zd.\n", candidate.first, candidate.last); } /* Output the candidate messages */ for (; candidate.first < candidate.last; ++candidate.first) { dba_rawmsg msg = vec.messages[candidate.first]; if (fwrite(msg->buf, msg->len, 1, stdout) == 0) return dba_error_system("writing message %d to standard output", msg->index); } for (i = 0; i < vec.len; ++i) dba_rawmsg_delete(vec.messages[i]); free(vec.messages); return dba_error_ok(); #endif throw error_unimplemented("bisect is currently not implemented"); } }; struct Convert : public cmdline::Subcommand { Convert() { names.push_back("convert"); names.push_back("conv"); usage = "convert [options] [filter] filename [filename [...]]"; desc = "Convert meteorological data between different formats"; } void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back({ "type", 't', POPT_ARG_STRING, &readeropts.input_type, 0, "format of the input data ('bufr', 'crex', 'aof', 'csv')", "type" }); opts.push_back({ "dest", 'd', POPT_ARG_STRING, &op_output_type, 0, "format of the data in output ('bufr', 'crex', 'aof')", "type" }); opts.push_back({ "rejected", 0, POPT_ARG_STRING, &readeropts.fail_file_name, 0, "write unprocessed data to this file", "fname" }); opts.push_back({ "template", 0, POPT_ARG_STRING, &op_output_template, 0, "template of the data in output (autoselect if not specified, 'list' gives a list)", "name" }); opts.push_back({ "report", 'r', POPT_ARG_STRING, &op_report, 0, "force output data to be of this type of report", "rep_memo" }); opts.push_back({ "precise", 0, 0, &op_precise_import, 0, "import messages using precise contexts instead of standard ones", 0 }); opts.push_back({ "bufr2netcdf-categories", 0, 0, &op_bufr2netcdf_categories, 0, "recompute data categories and subcategories according to message contents, for use as input to bufr2netcdf", 0 }); opts.push_back({ NULL, 0, POPT_ARG_INCLUDE_TABLE, &grepTable, 0, "Options used to filter messages", 0 }); opts.push_back({ "output", 'o', POPT_ARG_STRING, &op_output_file, 0, "destination file. Default: stdandard output", "fname" }); } int main(poptContext optCon) override { msg::Exporter::Options opts; cmdline::Converter conv; cmdline::Reader reader(readeropts); reader.verbose = op_verbose; /* Throw away the command name */ poptGetArg(optCon); if (strcmp(op_output_template, "list") == 0) { list_templates(); return 0; } core::Query query; if (dba_cmdline_get_query(optCon, query) > 0) reader.filter.matcher_from_record(query); if (op_precise_import) reader.import_opts.simplified = false; if (op_report[0] != 0) conv.dest_rep_memo = op_report; else conv.dest_rep_memo = NULL; if (op_output_template[0] != 0) { conv.dest_template = op_output_template; opts.template_name = op_output_template; } conv.bufr2netcdf_categories = op_bufr2netcdf_categories != 0; if (strcmp(op_output_type, "auto") == 0) { if (op_output_file == NULL) conv.file = File::create(stdout, false, "stdout").release(); else conv.file = File::create(op_output_file, "w").release(); } else { if (op_output_file == NULL) conv.file = File::create(string_to_encoding(op_output_type), stdout, false, "stdout").release(); else conv.file = File::create(string_to_encoding(op_output_type), op_output_file, "w").release(); } conv.exporter = msg::Exporter::create(conv.file->encoding(), opts).release(); reader.read(get_filenames(optCon), conv); return 0; } }; struct Compare : public cmdline::Subcommand { Compare() { names.push_back("compare"); names.push_back("cmp"); usage = "compare [options] filename1 [filename2]"; desc = "Compare two files with meteorological data"; } void add_to_optable(std::vector& opts) const override { Subcommand::add_to_optable(opts); opts.push_back({ "type1", 't', POPT_ARG_STRING, &readeropts.input_type, 0, "format of the first file to compare ('bufr', 'crex', 'aof')", "type" }); opts.push_back({ "type2", 'd', POPT_ARG_STRING, &op_output_type, 0, "format of the second file to compare ('bufr', 'crex', 'aof')", "type" }); opts.push_back({ "rejected", 0, POPT_ARG_STRING, &readeropts.fail_file_name, 0, "write unprocessed data to this file", "fname" }); opts.push_back({ NULL, 0, POPT_ARG_INCLUDE_TABLE, &grepTable, 0, "Options used to filter messages", 0 }); } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); cmdline::Reader reader(readeropts); /* Read the file names */ const char* file1_name = poptGetArg(optCon); if (file1_name == NULL) dba_cmdline_error(optCon, "input file needs to be specified"); const char* file2_name = poptGetArg(optCon); if (file2_name == NULL) file2_name = "(stdin)"; unique_ptr file1; unique_ptr file2; if (strcmp(readeropts.input_type, "auto") == 0) file1 = File::create(file1_name, "r"); else file1 = File::create(string_to_encoding(readeropts.input_type), file1_name, "r"); if (strcmp(op_output_type, "auto") == 0) file2 = File::create(file2_name, "r"); else file2 = File::create(string_to_encoding(op_output_type), file2_name, "r"); std::unique_ptr importer1 = msg::Importer::create(file1->encoding()); std::unique_ptr importer2 = msg::Importer::create(file2->encoding()); size_t idx = 0; for ( ; ; ++idx) { ++idx; BinaryMessage msg1 = file1->read(); BinaryMessage msg2 = file2->read(); bool found1 = msg1; bool found2 = msg2; if (found1 != found2) throw error_consistency("The files contain a different number of messages"); if (!found1 && !found2) break; Messages msgs1 = importer1->from_binary(msg1); Messages msgs2 = importer2->from_binary(msg2); notes::Collect c(cerr); int diffs = msgs1.diff(msgs2); if (diffs > 0) error_consistency::throwf("Messages #%zd contain %d differences", idx, diffs); } if (idx == 0) throw error_consistency("The files do not contain messages"); return 0; } }; struct FixAOF : public cmdline::Subcommand { FixAOF() { names.push_back("fixaof"); usage = "fixaof [options] filename [filename1 [...]]]"; desc = "Recomputes the start and end of observation period in the headers of the given AOF files"; } int main(poptContext optCon) override { /* Throw away the command name */ poptGetArg(optCon); int count = 0; while (const char* filename = poptGetArg(optCon)) { unique_ptr file = File::create(File::AOF, filename, "rb+"); core::AofFile* aoffile = dynamic_cast(file.get()); aoffile->fix_header(); ++count; } if (count == 0) dba_cmdline_error(optCon, "at least one input file needs to be specified"); return 0; } }; #if 0 static dba_err readfield(FILE* in, char** name, char** value) { static char line[1000]; char* s; if (fgets(line, 1000, in) == NULL) { *name = *value = NULL; return dba_error_ok(); } s = strchr(line, ':'); if (s == NULL) { *name = NULL; *value = line; } else { *s = 0; *name = line; *value = s + 1; } if (*value) { int len; /* Trim value */ while (**value && isspace(**value)) ++*value; len = strlen(*value); while (len > 0 && isspace((*value)[len-1])) { --len; (*value)[len] = 0; } } return dba_error_ok(); } #endif #if 0 static dba_err parsetextgrib(FILE* in, bufrex_msg msg, int* found) { dba_err err = DBA_OK; bufrex_subset subset = NULL; char* name; char* value; dba_var var = NULL; *found = 0; bufrex_msg_reset(msg); while (1) { DBA_RUN_OR_GOTO(cleanup, readfield(in, &name, &value)); /* fprintf(stderr, "GOT NAME %s VALUE \"%s\"\n", name, value); */ if (name != NULL) { if (strcasecmp(name, "edition") == 0) { msg->edition = strtoul(value, 0, 10); } else if (strcasecmp(name, "type") == 0) { msg->type = strtoul(value, 0, 10); } else if (strcasecmp(name, "subtype") == 0) { msg->subtype = strtoul(value, 0, 10); } else if (strcasecmp(name, "localsubtype") == 0) { msg->localsubtype = strtoul(value, 0, 10); } else if (strcasecmp(name, "centre") == 0) { msg->opt.bufr.centre = strtoul(value, 0, 10); } else if (strcasecmp(name, "subcentre") == 0) { msg->opt.bufr.subcentre = strtoul(value, 0, 10); } else if (strcasecmp(name, "mastertable") == 0) { msg->opt.bufr.master_table = strtoul(value, 0, 10); } else if (strcasecmp(name, "localtable") == 0) { msg->opt.bufr.local_table = strtoul(value, 0, 10); } else if (strcasecmp(name, "compression") == 0) { msg->opt.bufr.compression = strtoul(value, 0, 10); } else if (strcasecmp(name, "reftime") == 0) { if (sscanf(value, "%04d-%02d-%02d %02d:%02d:%02d", &msg->rep_year, &msg->rep_month, &msg->rep_day, &msg->rep_hour, &msg->rep_minute, &msg->rep_second) != 6) return dba_error_consistency("Reference time \"%s\" cannot be parsed", value); } else if (strcasecmp(name, "descriptors") == 0) { const char* s = value; DBA_RUN_OR_GOTO(cleanup, bufrex_msg_load_tables(msg)); while (1) { size_t size = strcspn(s, " \t"); s += size; size = strspn(s, "BCDR0123456789"); if (size == 0) break; else DBA_RUN_OR_GOTO(cleanup, bufrex_msg_append_datadesc(msg, dba_descriptor_code(s))); } } else if (strcasecmp(name, "data") == 0) { /* Start a new subset */ DBA_RUN_OR_GOTO(cleanup, bufrex_msg_get_subset(msg, msg->subsets_count, &subset)); *found = 1; } } else if (value != NULL) { dba_varinfo info; int isattr = 0; dba_varcode code; if (value[0] == 0) /* End of one message */ break; /* Read a Bsomething (value or attribute) and append it to the subset */ if (value[0] == '*') { isattr = 1; ++value; } code = dba_descriptor_code(value); DBA_RUN_OR_GOTO(cleanup, bufrex_msg_query_btable(msg, code, &info)); while (*value && !isspace(*value)) ++value; while (*value && isspace(*value)) ++value; if (*value == 0) { /* Undef */ DBA_RUN_OR_GOTO(cleanup, dba_var_create(info, &var)); } else { if (VARINFO_IS_STRING(info)) { DBA_RUN_OR_GOTO(cleanup, dba_var_createc(info, value, &var)); } else { DBA_RUN_OR_GOTO(cleanup, dba_var_created(info, strtod(value, NULL), &var)); } } if (isattr) { DBA_RUN_OR_GOTO(cleanup, bufrex_subset_add_attr(subset, var)); dba_var_delete(var); } else { DBA_RUN_OR_GOTO(cleanup, bufrex_subset_store_variable(subset, var)); } var = NULL; } else { /* End of input */ break; } } cleanup: if (var) dba_var_delete(var); return err == DBA_OK ? dba_error_ok() : err; } #endif struct MakeBUFR : public cmdline::Subcommand { MakeBUFR() { names.push_back("makebufr"); names.push_back("mkbufr"); usage = "makebufr [options] filename [filename1 [...]]]"; desc = "Read a simple description of a BUFR file and output the BUFR file."; longdesc = "Read a simple description of a BUFR file and output the BUFR file. This only works for simple BUFR messages without attributes encoded with data present bitmaps"; } int main(poptContext optCon) override { throw error_unimplemented("makebufr not implemented"); #if 0 dba_err err = DBA_OK; bufrex_msg msg = NULL; dba_rawmsg rmsg = NULL; dba_file outfile = NULL; const char* filename; FILE* in = NULL; int count = 0; DBA_RUN_OR_RETURN(bufrex_msg_create(BUFREX_BUFR, &msg)); DBA_RUN_OR_GOTO(cleanup, dba_file_create(BUFR, "(stdout)", "w", &outfile)); /* Throw away the command name */ poptGetArg(optCon); while ((filename = poptGetArg(optCon)) != NULL) { int found; in = fopen(filename, "r"); if (in == NULL) { err = dba_error_system("opening file %s", filename); goto cleanup; } while (1) { DBA_RUN_OR_GOTO(cleanup, parsetextgrib(in, msg, &found)); if (found) { DBA_RUN_OR_GOTO(cleanup, bufrex_msg_encode(msg, &rmsg)); DBA_RUN_OR_GOTO(cleanup, dba_file_write(outfile, rmsg)); dba_rawmsg_delete(rmsg); rmsg = NULL; } else break; } fclose(in); in = NULL; ++count; } if (count == 0) dba_cmdline_error(optCon, "at least one input file needs to be specified"); cleanup: if (in != NULL) fclose(in); if (msg) bufrex_msg_delete(msg); if (rmsg) dba_rawmsg_delete(rmsg); if (outfile) dba_file_delete(outfile); return err == DBA_OK ? dba_error_ok() : err; #endif return 0; } }; int main (int argc, const char* argv[]) { Command dbamsg; dbamsg.name = "dbamsg"; dbamsg.desc = "Work with encoded meteorological data"; dbamsg.longdesc = "Examine, dump and convert files containing meteorological data. " "It supports observations encoded in BUFR, CREX and AOF formats"; dbamsg.manpage_examples_section = R"( Here are some example invocations of \\fBdbamsg\\fP: .P .nf # Convert an AOF message to BUFR dbamsg convert file.aof > file.bufr # Convert a BUFR message to CREX dbamsg convert file.bufr -d crex > file.crex # Convert BUFR messages to CREX, but skip all those not in january 2010 dbamsg convert year=2010 month=1 file.bufr -d crex > file.crex # Dump the content of a message, as they are in the message dbamsg dump file.bufr # Dump the content of a message, interpreted as physical quantities dbamsg dump --interpreted file.bufr .fi )"; dbamsg.add_subcommand(new Scan); dbamsg.add_subcommand(new HeadCmd); dbamsg.add_subcommand(new Dump); dbamsg.add_subcommand(new Cat); dbamsg.add_subcommand(new Bisect); dbamsg.add_subcommand(new Convert); dbamsg.add_subcommand(new Compare); dbamsg.add_subcommand(new FixAOF); dbamsg.add_subcommand(new MakeBUFR); return dbamsg.main(argc, argv); } dballe-7.21/LICENSE0000644000175000017500000004321413022043102010603 00000000000000Copyright (C) 2005--2015 ARPA-SIM License: GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, 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 Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, 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 Library General Public License instead of this License. dballe-7.21/config.h.in0000644000175000017500000000462713022512014011631 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* define if the compiler supports basic C++11 syntax */ #undef HAVE_CXX11 /* Have Fortran bindings */ #undef HAVE_DBALLEF /* Have Python bindings */ #undef HAVE_DBALLE_PYTHON /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* PostgreSQL is available */ #undef HAVE_LIBPQ /* lua is available */ #undef HAVE_LUA /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* MySQL is available */ #undef HAVE_MYSQL /* popt.h has been found */ #undef HAVE_POPT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* we can use strcasestr */ #undef HAVE_STRCASESTR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* we need to use our own bswap_* functions */ #undef USE_OWN_BSWAP /* we need to use our own vasprintf */ #undef USE_OWN_VASPRINTF /* Version number of package */ #undef VERSION /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES dballe-7.21/compile0000755000175000017500000001624513022512015011164 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: dballe-7.21/m4/0000755000175000017500000000000013022523410010177 500000000000000dballe-7.21/m4/ax_append_flag.m40000644000175000017500000000530413022043102013306 00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_append_flag.html # =========================================================================== # # SYNOPSIS # # AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) # # DESCRIPTION # # FLAG is appended to the FLAGS-VARIABLE shell variable, with a space # added in between. # # If FLAGS-VARIABLE is not specified, the current language's flags (e.g. # CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains # FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly # FLAG. # # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2011 Maarten Bosmans # # 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 3 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, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 2 AC_DEFUN([AX_APPEND_FLAG], [AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl AS_VAR_SET_IF(FLAGS, [case " AS_VAR_GET(FLAGS) " in *" $1 "*) AC_RUN_LOG([: FLAGS already contains $1]) ;; *) AC_RUN_LOG([: FLAGS="$FLAGS $1"]) AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"]) ;; esac], [AS_VAR_SET(FLAGS,["$1"])]) AS_VAR_POPDEF([FLAGS])dnl ])dnl AX_APPEND_FLAG dballe-7.21/m4/m4_ax_cxx_compile_stdcxx_11.m40000644000175000017500000001073313022043102015660 00000000000000# ============================================================================ # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html # ============================================================================ # # SYNOPSIS # # AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) # # DESCRIPTION # # Check for baseline language coverage in the compiler for the C++11 # standard; if necessary, add switches to CXXFLAGS to enable support. # # The first argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. # -std=c++11). If neither is specified, you get whatever works, with # preference for an extended mode. # # The second argument, if specified 'mandatory' or if left unspecified, # indicates that baseline C++11 support is required and that the macro # should error out if no mode with that support is found. If specified # 'optional', then configuration proceeds regardless, after defining # HAVE_CXX11 if and only if a supporting mode is found. # # LICENSE # # Copyright (c) 2008 Benjamin Kosnik # Copyright (c) 2012 Zack Weinberg # Copyright (c) 2013 Roy Stogner # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 3 m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [ template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; typedef check> right_angle_brackets; int a; decltype(a) b; typedef check check_type; check_type c; check_type&& cr = static_cast(c); auto d = a; ]) AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl m4_if([$1], [], [], [$1], [ext], [], [$1], [noext], [], [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl m4_if([$2], [], [ax_cxx_compile_cxx11_required=true], [$2], [mandatory], [ax_cxx_compile_cxx11_required=true], [$2], [optional], [ax_cxx_compile_cxx11_required=false], [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])dnl AC_LANG_PUSH([C++])dnl ac_success=no AC_CACHE_CHECK(whether $CXX supports C++11 features by default, ax_cv_cxx_compile_cxx11, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], [ax_cv_cxx_compile_cxx11=yes], [ax_cv_cxx_compile_cxx11=no])]) if test x$ax_cv_cxx_compile_cxx11 = xyes; then ac_success=yes fi m4_if([$1], [noext], [], [dnl if test x$ac_success = xno; then for switch in -std=gnu++11; do cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, $cachevar, [ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], [eval $cachevar=yes], [eval $cachevar=no]) CXXFLAGS="$ac_save_CXXFLAGS"]) if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" ac_success=yes break fi done fi]) m4_if([$1], [ext], [], [dnl if test x$ac_success = xno; then for switch in -std=c++11; do cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, $cachevar, [ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], [eval $cachevar=yes], [eval $cachevar=no]) CXXFLAGS="$ac_save_CXXFLAGS"]) if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" ac_success=yes break fi done fi]) AC_LANG_POP([C++]) if test x$ax_cxx_compile_cxx11_required = xtrue; then if test x$ac_success = xno; then AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.]) fi else if test x$ac_success = xno; then HAVE_CXX11=0 AC_MSG_NOTICE([No compiler with C++11 support was found]) else HAVE_CXX11=1 AC_DEFINE(HAVE_CXX11,1, [define if the compiler supports basic C++11 syntax]) fi AC_SUBST(HAVE_CXX11) fi ]) dballe-7.21/m4/lt~obsolete.m40000644000175000017500000001377413022512005012745 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) dballe-7.21/m4/pkg.m40000644000175000017500000001214513022043102011140 00000000000000# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # 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. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$PKG_CONFIG"; then if test -n "$$1"; then pkg_cv_[]$1="$$1" else PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) fi else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` else $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES dballe-7.21/m4/ltversion.m40000644000175000017500000000127313022512005012407 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4179 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.6]) m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) dballe-7.21/m4/libtool.m40000644000175000017500000112617113022512005012034 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2014 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. # GNU Libtool 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 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS dballe-7.21/m4/ltoptions.m40000644000175000017500000003426213022512005012421 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) dballe-7.21/m4/python.m40000644000175000017500000002157213022043102011704 00000000000000## ------------------------ -*- Autoconf -*- ## Python file handling ## From Andrew Dalke ## Updated by James Henstridge ## ------------------------ # Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) AC_ARG_VAR([PYTHON], [the Python interpreter]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version is >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_ERROR([Python interpreter is too old])]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) # Just factor out some code duplication. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': can_use_sysconfig = 0 except ImportError: pass" dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) dballe-7.21/m4/ltsugar.m40000644000175000017500000001044013022512005012037 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) dballe-7.21/m4/ax_cflags_warn_all.m40000644000175000017500000001163413022043102014167 00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html # =========================================================================== # # SYNOPSIS # # AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] # AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] # AX_FCFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] # # DESCRIPTION # # Try to find a compiler option that enables most reasonable warnings. # # For the GNU compiler it will be -Wall (and -ansi -pedantic) The result # is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default. # # Currently this macro knows about the GCC, Solaris, Digital Unix, AIX, # HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and # Intel compilers. For a given compiler, the Fortran flags are much more # experimental than their C equivalents. # # - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS # - $2 add-value-if-not-found : nothing # - $3 action-if-found : add value to shellvariable # - $4 action-if-not-found : nothing # # NOTE: These macros depend on AX_APPEND_FLAG. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2010 Rhys Ulerich # # 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 3 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, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 13 AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], VAR,[VAR="no, unknown" ac_save_[]FLAGS="$[]FLAGS" for ac_arg dnl in "-warn all % -warn all" dnl Intel "-pedantic % -Wall" dnl GCC "-xstrconst % -v" dnl Solaris C "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX "-ansi -ansiE % -fullwarn" dnl IRIX "+ESlit % +w1" dnl HP-UX C "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) "-h conform % -h msglevel 2" dnl Cray C (Unicos) # do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) done FLAGS="$ac_save_[]FLAGS" ]) AS_VAR_POPDEF([FLAGS])dnl case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;; *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;; esac AS_VAR_POPDEF([VAR])dnl ])dnl AX_FLAGS_WARN_ALL dnl implementation tactics: dnl the for-argument contains a list of options. The first part of dnl these does only exist to detect the compiler - usually it is dnl a global option to enable -ansi or -extrawarnings. All other dnl compilers will fail about it. That was needed since a lot of dnl compilers will give false positives for some option-syntax dnl like -Woption or -Xoption as they think of it is a pass-through dnl to later compile stages or something. The "%" is used as a dnl delimiter. A non-option comment can be given after "%%" marks dnl which will be shown but not added to the respective C/CXXFLAGS. AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl AC_LANG_PUSH([C]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([C]) ]) AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl AC_LANG_PUSH([C++]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([C++]) ]) AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl AC_LANG_PUSH([Fortran]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([Fortran]) ]) dballe-7.21/extra/0000755000175000017500000000000013022523411011003 500000000000000dballe-7.21/extra/test-crex-d-table.txt0000644000175000017500000052523113022043102014712 00000000000000 D00002 2 B00002 B00003 D00003 3 B00010 B00011 B00012 D00004 9 D00003 B00013 B00014 B00015 B00016 B00017 B00018 B00019 B00020 D00010 3 D00003 R01000 B00030 D01001 2 B01001 B01002 D01002 3 B01003 B01004 B01005 D01003 3 B01011 B01012 B01013 D01004 4 B01001 B01002 B01015 B02001 D01011 3 B04001 B04002 B04003 D01012 2 B04004 B04005 D01013 3 B04004 B04005 B04006 D01021 2 B05001 B06001 D01022 3 B05001 B06001 B07001 D01023 2 B05002 B06002 D01024 3 B05002 B06002 B07001 D01025 3 D01023 B04003 D01012 D01026 7 D01021 B04003 B04003 B04004 B04004 B04005 B04005 D01029 3 B01018 B02001 D01011 D01030 4 B01018 B02001 D01011 D01024 D01031 5 D01001 B02001 D01011 D01012 D01022 D01032 5 D01001 B02001 D01011 D01012 D01024 D01033 5 B01005 B02001 D01011 D01012 D01021 D01034 5 B01005 B02001 D01011 D01012 D01023 D01035 7 B01005 B01012 B01013 B02001 D01011 D01012 D01023 D01036 5 D01003 B02001 D01011 D01012 D01023 D01037 6 D01001 B02011 B02012 D01011 D01012 D01022 D01038 6 D01001 B02011 B02012 D01011 D01012 D01024 D01039 6 D01003 B02011 B02012 D01011 D01012 D01023 D01040 6 D01003 B02011 B02012 D01011 D01012 D01024 D01041 5 B01007 B02021 B02022 D01011 D01012 D01042 2 D01041 D01021 D01043 5 B01007 B02023 D01011 D01013 D01021 D01044 5 B01007 B02024 D01011 D01013 D01021 D01049 5 B02111 B02112 B21062 B21063 B21065 D01051 6 B01006 B02061 D01011 D01012 D01021 B08004 D01055 7 B01005 B02001 D01011 D01012 D01021 B01012 B01014 D01062 2 R01000 D01001 D01065 8 B01006 B01008 B02001 B02002 B02005 B02062 B02070 B02065 D01066 6 D01011 D01013 D01023 B07004 B02064 B08004 D01070 3 B02143 B02142 B02144 D01071 5 B01007 B01031 B02020 B02028 B02029 D01072 4 D01071 D01011 D01013 D01021 D01074 4 B02143 B02142 B02145 B02146 D01075 6 D01001 B01015 D01024 B08021 D01011 D01012 D01076 3 B02011 B02143 B02142 D01090 6 D01004 D01011 D01012 D01021 B07030 B07031 D01091 10 B02180 B02181 B02182 B02183 B02184 B02179 B02186 B02187 B02188 B02189 D01193 5 001007 001031 002196 002221 002222 D01250 4 D01193 D01011 D01013 D01021 D02001 4 B10004 B10051 B10061 B10063 D02002 5 B10004 B07004 B10003 B10061 B10063 D02003 9 B11011 B11012 B12004 B12006 B13003 B20001 B20003 B20004 B20005 D02004 7 B20010 B08002 B20011 B20013 B20012 B20012 B20012 D02005 4 B08002 B20011 B20012 B20013 D02006 4 B10004 B10051 B10062 B10063 D02011 3 D02001 D02003 D02004 D02012 3 D02002 D02003 D02004 D02013 4 D02006 D02003 R01000 D02005 D02021 3 B22001 B22011 B22021 D02022 3 B22002 B22012 B22022 D02023 3 B22003 B22013 B22023 D02024 3 D02022 R01002 D02023 D02051 12 B10004 B10051 B07004 B10003 B12004 B12051 B12016 B12017 B13004 R02004 B08051 B08020 D02069 4 B07032 B07033 B33041 B20001 D02070 8 B07032 B07033 B11001 B11002 B11043 B11041 B11016 B11017 D02071 14 B07032 B07033 B08021 B04025 B11001 B11002 B08021 R03002 B04025 B11043 B11041 B04025 B11016 B11017 D02072 5 B07032 B07033 B12101 B12103 B13003 D02073 7 B20010 R05004 B08002 B20011 B20012 B33041 B20013 D02074 4 B20003 B04025 B20004 B20005 D02075 5 B08021 B04025 B13055 B13058 B08021 D02076 7 B02021 B20022 B26020 B20023 B20024 B20025 B20026 D02077 12 B07032 B07033 B04025 B12111 B12112 B07032 B04025 B12112 B02176 B20062 B02177 B13013 D02078 4 B02176 B20062 B02177 B13013 D02079 5 B07032 B02175 B02178 B04025 B13011 D02080 3 B02185 B04025 B13033 D02081 2 B04025 B14031 D02082 7 B04025 B14002 B14004 B14016 B14028 B14029 B14030 D02083 8 B04025 B08023 B10004 B11001 B11002 B12101 B13003 B08023 D03001 3 B07003 B11001 B11002 D03002 3 B07004 B11001 B11002 D03003 4 B07004 B10003 B12001 B12003 D03004 6 B07004 B10003 B12001 B12003 B11001 B11002 D03011 4 B07003 B08001 B11001 B11002 D03012 4 B07004 B08001 B11001 B11002 D03013 7 B07004 B08001 B10003 B12001 B13003 B11001 B11002 D03014 7 B07004 B08001 B10003 B12001 B12003 B11001 B11002 D03031 6 B07004 B08003 B07021 B07022 B08012 B12061 D03032 2 B20011 B20016 D03033 2 B20010 B20016 D03041 8 B02152 B02023 B07004 B11001 B11002 B02153 B02154 B12071 D03250 8 B02252 B02023 B07004 B11001 B11002 B02197 B02198 B12193 D04001 5 B08003 B10004 B12001 B11001 B11002 D04002 4 B08003 B10004 B11001 B11002 D04003 2 B08003 B12001 D04004 4 B08003 B10004 B20010 B12001 D04005 4 B02024 B07004 B07004 B13003 D04006 3 B14001 B14001 B14003 D04011 27 B02163 B02164 B08012 B07024 B02057 B08021 B04001 B04002 B04003 B04004 B08021 B04024 R10004 B08021 B04004 B04005 B04006 B08021 B04004 B04005 B04006 B11001 B11002 R03010 B02163 B07004 B12001 D04030 3 B27031 B28031 B10031 D04031 3 B01041 B01042 B01043 D04032 5 B02153 B02154 B20081 B20082 B20012 D04033 8 B02152 B02166 B02167 B02153 B02154 B12075 B12076 B12063 D04034 9 R02004 B27001 B28001 B07022 B05043 B20010 B20016 B33003 B10040 D04250 27 B02231 B02232 B08012 B07024 B02057 B08021 B04001 B04002 B04003 B04004 B08021 B04024 R10004 B08021 B04004 B04005 B04006 B08021 B04004 B04005 B04006 B11001 B11002 R03010 B02231 B07004 B12001 D05001 4 B11001 B11002 B13060 B13071 D05002 11 D01012 B12001 B13003 B14051 B13060 B13072 B13080 B13081 B13082 B13083 B13084 D05003 4 D01012 B04065 R01000 D05001 D05004 3 D01030 D05002 D05003 D05006 8 B13072 B13082 B13019 C07005 C01004 B12001 B13073 B13060 D05007 5 D01029 D01012 B04065 R01000 D05006 D05008 4 D05006 C07005 C01004 B12030 D05009 5 D01029 D01012 B04065 R01000 D05008 D05010 3 D05008 B02091 B02091 D05011 5 D01029 D01012 B04065 R01000 D05010 D05016 7 B14021 B07004 B13003 B11002 B11001 B11041 B11043 D05017 5 B13080 B13081 B13083 B13085 B13084 D05018 7 D01029 D01012 B04065 R03000 D05008 D05016 D05017 D06001 4 B02032 R02000 B07062 B22042 D06002 3 B02031 B22004 B22031 D06003 4 B02002 B11011 B11012 B12004 D06004 6 B02032 B02033 R03000 B07062 B22043 B22062 D06005 5 B02031 R03000 B07062 B22004 B22031 D06006 3 D06003 D06002 B22063 D06007 6 B01012 B01014 D06008 B04024 B27003 B28003 D06008 3 B02034 B02035 B02036 D06020 8 B01075 D01011 D01012 B22042 B22120 B22121 B04075 B04065 D06021 7 B01075 D01011 D01012 B22122 B22123 B12001 D03002 D06022 5 B01075 D01011 D01012 B22038 B22039 D06023 8 B01015 D01023 D01011 D01012 B22038 B22039 B22120 B22121 D06024 4 D06020 R02000 B22038 B22039 D07001 2 D01031 D02011 D07002 2 D01032 D02011 D07003 3 D07001 R01000 D02005 D07004 3 D07002 R01000 D02005 D07005 3 D07001 R01004 D02005 D07006 3 D07002 R01004 D02005 D07007 2 D01031 D02012 D07008 2 D01032 D02012 D07009 2 D01031 D02013 D07011 16 B01063 B02001 D01011 D01012 D01024 B07006 B11001 B11016 B11017 B11002 B11041 B07006 B12001 B12003 B10052 B20009 D07012 4 R03000 B08023 B05021 B20001 D07013 7 R06000 B01064 B08014 B20061 B08014 B20061 B20018 D07014 2 R01000 B20019 D07015 3 R01000 D02005 B20002 D07016 2 R01000 B20020 D07017 2 R01000 B11070 D07018 13 B08016 R02000 B08017 D01012 R04000 B07006 B11001 B11002 B11041 B20009 R01000 B20001 D07014 D07020 3 D07011 D07014 D07016 D07021 9 D07011 D07012 D07013 D07014 D07015 D07016 D07017 D07018 D07015 D07030 2 B15001 B15002 D07031 7 B08022 B08023 B15001 B08023 B15001 B08023 B15002 D07041 7 D01001 B01015 D01024 D01011 D01012 D01070 D07030 D07042 9 D01001 B01015 D01024 D01011 D01012 B08021 B04025 D01070 D07031 D07043 7 D01001 B01015 D01024 D01011 D01012 D01074 D07030 D07044 9 D01001 B01015 D01024 D01011 D01012 B08021 B04025 D01074 D07031 D07060 2 B07061 B12030 D07061 3 D01031 R01005 D07060 D07062 3 D01032 R01005 D07060 D07063 2 B07061 B12130 D08001 3 D01033 D02011 B22042 D08002 3 D01034 D02011 B22042 D08003 3 D01035 D02011 B22042 D08004 3 D01036 D02011 B22042 D08005 2 D08004 D02024 D08006 8 B10004 B10061 B10063 B11001 B11002 B12004 B13003 B22042 D08007 4 D01055 D02011 B07062 B22042 D09001 3 D01037 R01000 D03011 D09002 3 D01038 R01000 D03011 D09003 3 D01037 R01000 D03012 D09004 3 D01038 R01000 D03012 D09005 4 D01037 D02004 R01000 D03013 D09006 4 D01038 D02004 R01000 D03013 D09007 4 D01037 D02004 R01000 D03014 D09008 4 D01038 D02004 R01000 D03014 D09011 3 D01039 R01000 D03011 D09012 3 D01039 R01000 D03012 D09013 4 D01039 D02004 R01000 D03013 D09014 4 D01039 D02004 R01000 D03014 D09015 3 D01040 R01000 D03011 D09016 3 D01040 R01000 D03012 D09017 4 D01040 D02004 R01000 D03013 D09018 4 D01040 D02004 R01000 D03014 D09019 4 D01031 B02003 R01000 D03011 D09020 7 D01031 B02003 R04000 B07003 B11003 B11004 B11005 D09030 7 B15004 B15005 R04000 B04015 B08006 B07004 B15003 D09040 3 D01075 D01076 D09030 D09041 4 D07041 D01075 D01076 D09030 D09042 4 D07042 D01075 D01076 D09030 D09044 4 D07044 D01075 D01076 D09030 D10001 5 D01042 D03031 D03032 R01026 D03025 D10002 5 D01042 D03031 D03032 R01009 D03023 D10003 5 D01042 D03031 D03032 R01006 D03023 D10004 5 D01042 D03031 D03032 R01003 D03024 D10005 5 D01042 D03031 D03033 R01000 D03025 D10006 5 D01042 D03031 D03033 R01000 D03023 D10007 5 D01042 D03031 D03033 R01000 D03024 D10008 8 D10011 R01019 D10012 B02150 B25079 B25080 B33032 B14045 D10009 3 D10011 R01015 D10012 D10010 3 D10011 R01005 D10012 D10014 3 D01072 D03041 D04011 D10015 13 D01072 B07024 B10002 D03041 R01003 D04032 B02152 B02024 B07004 B07004 B13003 R01003 D04033 D10016 13 D01072 B07024 B10002 D03041 R01012 D04032 B02152 B02024 B07004 B07004 B13003 R01012 D04033 D10020 6 D10022 D01011 D01013 D01021 D04034 D10021 D10022 4 B01007 B02019 B01033 B02172 D10023 17 D01072 B30021 B30022 B08012 B07024 B07025 B10002 R01012 D04032 R05002 B02152 B02024 B07004 B07004 B13003 R01012 D04033 D10050 13 D10051 D10052 R01000 D10053 R01004 D10054 B20010 D10052 R01015 D10053 D10052 R01004 D10053 D10195 3 D01250 D03250 D04250 D11001 9 D01051 B07002 B12001 B11001 B11002 B11031 B11032 B11033 B20041 D11002 4 D01065 D01066 D11003 D11004 D11003 5 B10070 B11001 B11002 B12001 B13002 D11004 12 R01000 B11034 R01000 B11035 R01000 B11075 R01000 B11076 R01000 B33025 R01000 B33026 D11005 13 B01008 B01023 D01021 D01011 D01013 B07010 B08009 B11001 B11002 B11031 B11036 B12101 B33025 D11006 6 B07010 B11001 B11002 B02064 B12101 B12103 D11193 16 D01197 D01011 D01012 D01023 B08004 B07004 B08021 B11001 B11002 B11031 B11034 B11035 B12001 B12003 B13003 B20041 D12001 2 D01043 D04001 D12002 2 D01043 D04002 D12003 2 D01042 D04003 D12004 2 D01042 D04004 D12005 2 D01042 B20014 D12006 2 D01044 D04005 D12007 2 D01042 D04006 D12010 6 B01007 B05040 B02021 B05041 B04001 B04043 D12014 8 D12010 D12011 R05056 D01023 B05042 B05052 D12012 D12013 D12016 3 D12010 D12011 D12015 D12018 3 D12010 D12011 D12017 D12020 11 D01047 D01048 B15015 B29002 B21076 R04012 B06030 R02012 B05030 B21075 B21066 D12021 6 D01047 R01003 D01049 B11012 B11011 B21067 D12022 15 D01047 B08022 B11012 B11050 B22070 B22026 D12041 B10050 B21068 B21071 B21072 B21073 D12042 B21062 B15011 D12023 7 D01047 R03003 B08022 B12061 B22050 B21069 B21085 D12024 11 D12020 B08060 B08022 B08060 B08022 B25014 B22101 B22097 B22098 B22099 B22100 D12025 11 D12019 B08060 B08022 B08060 B08022 B25014 B22101 B22097 B22098 B22099 B22100 D12026 19 D01046 D01011 D01013 D01023 D12031 R01004 D12030 B21110 D01023 D21027 B21111 D01023 D21027 B21112 D01023 D21027 B21113 D01023 D21027 D12027 9 D01047 R05009 D01023 B07021 B12061 B07021 B12061 B21085 B21070 D12031 8 B05034 B06034 B21109 B11081 B11082 B21101 B21102 B21103 D12032 4 B21120 B21121 B13055 B21122 D12033 4 B02104 B08022 B12063 B12065 D12042 6 B21077 B21078 B21079 B21080 B21081 B21082 D12045 21 B01007 B02019 B01096 B25061 B05040 D01011 D01013 D01021 B07002 B12180 B12181 B12182 B12183 B12184 B12185 B02174 B21086 B12186 B21087 B12187 B33043 D13009 3 B21001 R01000 B21001 D13010 3 B21036 R01000 B21036 D13031 4 B06002 B06012 R01000 B30001 D13032 4 B05002 B05012 R01000 D13031 D13041 9 B06002 R10000 R04000 B06012 R01000 B30001 B06012 R01000 B30001 D13042 4 B05002 B05012 R01000 D13041 D13043 11 B06002 B05002 B05012 R12000 R10000 R04000 B06012 R01000 B30001 R01000 B30001 D15001 5 B01011 D01011 D01012 D01023 D06001 D15002 5 B01011 D01011 D01012 D01023 D06004 D16001 10 D01011 B04004 D01023 B01021 B02041 B19001 B10051 B19002 B19003 B19004 D16002 15 B08021 B04001 B04002 B04003 B04004 B04005 B01033 B08021 B04001 B04002 B04003 B04004 B04005 B07002 B07002 D16003 10 R09000 B08011 B08007 R04000 B05002 B06002 B10002 B11002 B08007 B08011 D16004 11 R10000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B11031 B08007 B08011 D16005 9 R08000 B08005 B08007 B05002 B06002 B01026 B19001 B08007 B08005 D16006 12 R11000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B20011 B20012 B08007 B08011 D16007 10 R09000 B08011 B08007 R04000 B05002 B06002 B19005 B19006 B08007 B08011 D16008 11 R10000 B08001 B08007 B08023 R03000 B05002 B06002 B10002 B08023 B08007 B08001 D16009 11 R10000 B08011 B08007 B07002 B07002 R02000 B05002 B06002 B20041 B08007 B08011 D16010 8 R07000 B08011 B08007 B01022 B05002 B06002 B08007 B08011 D16011 17 R16000 B08011 B01022 B08007 R02000 B05002 B06002 B08021 B04001 B04002 B04003 B04004 B04005 B20090 B08021 B08007 B08011 D16020 5 B01023 B01025 B01027 D01011 D01012 D16021 23 D01023 B02041 B19001 B19007 B19005 B19006 B19008 B08005 B10004 B08005 B10004 B19007 B08005 B08021 B04075 B11040 B19007 R05004 B05021 B05021 R02002 B19003 B19004 D16022 23 B01032 B02041 B19001 B19010 R18000 B08021 B04014 B08005 D01023 B19005 B19006 B10004 B11041 B08021 B04075 B11040 B19008 R05004 B05021 B05021 R02002 B19003 B19004 D16026 2 D16020 D16021 D18001 2 D01025 B24011 D18003 4 D01026 B24005 B24004 B24021 D18004 6 D01025 B04023 B13011 B24005 B24004 B24022 D21001 6 B02101 B02114 B02105 B02106 B02107 B02121 D21003 4 B21051 B21014 B21017 B21030 D21004 4 D01031 B02003 R01000 D21003 D21005 12 B25004 B02121 B02122 B02123 B02124 B02125 B02126 B02127 B02128 B02129 B02130 B02131 D21006 4 B25001 B25002 B25003 B25005 D21007 8 B25009 B25010 B25011 B25012 B25013 B25015 B25016 B25017 D21008 3 B25006 B25007 B25008 D21009 2 B25018 B25019 D21010 13 B02101 B07002 B02102 B02103 B02104 B02105 B02106 B02107 B02108 B02109 B02110 B02132 B02133 D21011 3 B30031 B30032 B29002 D21012 2 R01000 B02135 D35001 4 B08035 B35001 B08036 D01001 D35002 4 B08035 B35001 B08036 B01033 D35003 6 B08021 B04001 B04002 B04003 B04004 B04073 D35004 7 B08021 B04004 B08021 B04004 B35000 D01001 B35011 D35005 7 B08021 B04004 B08021 B04004 B35000 B01001 B35011 D35006 7 B08021 B04004 B08021 B04004 B35000 B01003 B35011 D35007 9 B08021 B04004 B08021 B04004 B35000 B01001 R02000 B01002 B35011 D35010 3 D35002 D35003 D35007 dballe-7.21/extra/Makefile.in0000644000175000017500000003200613022512015012767 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = extra ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/m4_ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDBALLEF_VERSION_INFO = @LIBDBALLEF_VERSION_INFO@ LIBDBALLE_VERSION_INFO = @LIBDBALLE_VERSION_INFO@ LIBOBJS = @LIBOBJS@ LIBPQ_CFLAGS = @LIBPQ_CFLAGS@ LIBPQ_LIBS = @LIBPQ_LIBS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MYSQL_CFLAGS = @MYSQL_CFLAGS@ MYSQL_LIBS = @MYSQL_LIBS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ WREPORT_CFLAGS = @WREPORT_CFLAGS@ WREPORT_LIBS = @WREPORT_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_doxygen = @have_doxygen@ have_gperf = @have_gperf@ have_rst2html = @have_rst2html@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mysql_config = @mysql_config@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ tabledir = @tabledir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ aof bufr crex csv \ runtest \ test-bufr-table.txt \ test-crex-d-table.txt \ test-crex-table.txt \ test-repinfo1.csv \ test-repinfo2.csv all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign extra/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign extra/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dballe-7.21/extra/bufr/0000755000175000017500000000000013022043254011743 500000000000000dballe-7.21/extra/bufr/synop-rad2.bufr0000644000175000017500000000051413022043102014531 00000000000000BUFRLU– €Ç` ë¦"(*¬–¦'ª¢"©¾bŒpÍÂ0Ê€0*LÁH‰xüPbd†ø0‘³ÿ÷ðàßÿàv oÿjhç•ÿÿÿü¦Æ°)À2lã‘´ÿø×ÿÇÐÿÿÿ÷ˆ _ÿüŸÇÿÿÿÀÕ_Àþ³þ ãðQ€?@ÿÿÀÿûÿýý¿ÿÿÿÿÿÿÿÿÿÿûÿÿÿÄþÕàUûûW‚ ñ+Á6é–€¥jU [ÿߪõ©Ü)ñ‰ÿü[ÿÿÿÿÿÿÿÿÿþ,<ÿà¿èôúýÿÿ¯þ (ßÿÿÿÿÿÿþÿÿÿÿïÑÿÿÿÿÿÿHoÿÿÿÿõý‰ÿÿà@ÿÿÿÿ€7777dballe-7.21/extra/bufr/README0000644000175000017500000000073113022043102012534 00000000000000This directory contains test data, at least one file per supported report type. Samples have been selected as the ones with less unset values in the available dataset. Some extra cases are there to test regressions; they are listed here: obs4-142.13803.bufr Contains a longitude of -100.230000, which in the past was converted to -10.023 because the internal storage space was not long enough to store the initial '-'. The dry bulb temperature had a similar bug. dballe-7.21/extra/bufr/obs0-1.11188.bufr0000644000175000017500000000030213022043102014210 00000000000000BUFRÂb€ 4}\@LœdYt13577 ÂLjKpF€Ç  –A" A"!T ¯«€ÈE—Bd|àçÿøMào±-òÀ«Ûøúæ6@`<<·€õÿÿ€ @1£F4hÑ£F.4Ùñ£P›•XѪƫR­Z±£7777dballe-7.21/extra/bufr/obs255-255.0.bufr0000644000175000017500000000022013022043102014213 00000000000000BUFRÈÿ 8ÀÁÃÂÀÁ !!À!ÃÀÀÁÀ:P@ @ &@€õÍ ÍbIE¦@Ç€7777dballe-7.21/extra/bufr/temp-windprof1.bufr0000644000175000017500000000140613022043102015410 00000000000000BUFRb€` 64`}ñJÛIÀjËØ10678 Nâ°)@F€Á ÕAÕšSO¾)[fÕÉ\ä™FÏ–À‹`J0KUcpJ0%#ªñ˜'\|Õ?ÈðÐ >ÊŸæz ø¡ÕOõ1Ä‚Xª§üƒA-¹SþŠ•@—T©ÿeÓ°KÐ-U nX%Àª€I9päU@,¨Ú zJ V}Ä¥P(e¨•'4€ÙTÌ%à›`dªfN1UB’€&è*€øK„t•?ø&â º ŸúBà…Oû Iƒwú·þ†…HÁ;SþŶ€€š©ÿ£Ád@Nð\Tÿ¢¶¨'4ªÁ0]˜ÄU?Ü”/ì ÞJŸð@‡óEOø Œzƒ¢§ú‹j,$_ÿÿÿÿà hÑ£F͘ÓãF4hÀ7777dballe-7.21/extra/bufr/obs4-145.4.bufr0000644000175000017500000000035613022043102014057 00000000000000BUFRîb€‘ 4‘}Y#r8bì82DPCV2RA îV–FN€=>F?    " #   )–AÉA!N2DPCV2RAJBNYR3RAæ†kÿü}Y2¦$L¥~Vÿÿÿÿ•?ÿÿàÄ7øÑ£Fÿ4hÑ£FøÑ¿ÿÿÿÿà7777dballe-7.21/extra/bufr/bufr30000644000175000017500000000036313022043102012621 00000000000000BUFRòb€   4 }Ky€IGÄmðˆV2PJ6 òyty€ÖF@€Á$    ????! "%&$–A' A'!`V2PJ6 ê[ÌÂRXWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà€cK—4hÑ£Zµ4hÑ£F4hÑ£F4hÑ£F4hÀ7777 dballe-7.21/extra/bufr/temp-gts2.bufr0000644000175000017500000001405013022043102014355 00000000000000BUFR([  €É4"ÿÿÿÿÿÿÿÿˆ¨“ìàWBŠ”`Èÿÿÿÿü$O2WÿÿÀ ÿÀÉÿÿÿÿÿÿÿû~;Eû ¿ÿ«ÿÿÿÿÿÿÿÿÿÿÿû¬¿ÿ†tÿÿÿÿÿÿÿû…FŸÿÿÿÿÙÿÿÿÿÿÿÿÿÿÿÿú¼ÿÿ†zÿÿÿÿÿÿÿûƒ;;_ÿÿÿÿ†ÿÿÿÿÿÿÿû…-Ÿÿÿÿÿ¼ÿÿÿÿÿÿÿÿÿÿÿúÐÿÿ†Šÿÿÿÿÿÿÿû€»&ÿÿÿÿ†ÿÿÿÿÿÿÿû€?ÿÿÿÿÌÿÿÿÿÿÿÿÿÿÿÿû4?ÿ†^ÿÿÿÿÿÿÿûwûÿÿÿÿÿ†,ÿÿÿÿÿÿÿû}› ÿÿÿÿ×ÿÿÿÿÿÿÿÿÿÿÿú¼ÿ«ÿÿÿÿÿÿÿÿÿÿÿú”ÿ$ÿÿÿÿÿÿÿÿÿÿÿúøÿÿ† ÿÿÿÿÿÿÿûWzÑÿÿÿÿ† óÿÿÿÿÿÿÿûUJÒÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿúøÿÿ Pÿÿÿÿÿÿÿÿÿÿÿú€¿ÿíÿÿÿÿÿÿÿÿÿÿÿúlÿßÿÿÿÿÿÿÿÿÿÿÿû ÿ†lÿÿÿÿÿÿÿúç꯯ÿÿÿÿ!ÿÿÿÿÿÿÿÿÿÿÿúøÿ†ôÿÿÿÿÿÿÿúá ¸oÿÿÿÿŸÿÿÿÿÿÿÿÿÿÿÿû„¿ÿ†ÿÿÿÿÿÿÿúØJÍÿÿÿÿTÿÿÿÿÿÿÿÿÿÿÿû ?ÿ×ÿÿÿÿÿÿÿÿÿÿÿû4ÿdÿÿÿÿÿÿÿÿÿÿÿú¼¿ÿºÿÿÿÿÿÿÿÿÿÿÿúä!¿ÿ†œÿÿÿÿÿÿÿúžÊ‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúD ÿ†ÔÿÿÿÿÿÿÿúÊ€ÿÿÿÿÅÿÿÿÿÿÿÿÿÿÿÿúä!¿ÿ†fÿÿÿÿÿÿÿú} n_ÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿú¼?ÿ† ÿÿÿÿÿÿÿú{Êl/ÿÿÿÿ‡éÿÿÿÿÿÿÿú‰ŠvÌ¿ÿ¨ÿÿÿÿÿÿÿÿÿÿÿü¿ÿ…ÿÿÿÿÿÿÿÿÿÿÿüˆÿ†gÿÿÿÿÿÿÿú†jdÿÿÿÿbÿÿÿÿÿÿÿÿÿÿÿûÀ ÿÿÿÿÿÿÿÿÿÿÿÿüL%ÿÿÿÿÿÿÿÿÿÿÿÿü%ÿ†ÿÿÿÿÿÿÿú”*hoÿÿÀ‡ßÿÿÿÿÿÿÿÿâ*#äû8言Ÿƒð:¿ÿÿÿÿ Ì•ÿÿð¿ÿðí_ÿÿÿÿÿÿÿþàöÖU_ÿà@äŸÿÿÿÿÿÿÿÿÿÿÿþŒ ÿà@Çßÿÿÿÿÿÿÿÿÿÿÿþ}ßÿà@­Ÿÿÿÿÿÿÿÿÿÿÿÿþ ?ÿအÿÿÿÿÿÿÿþàÕÿÿÿÿà@Ž_ÿÿÿÿÿÿÿÿÿÿÿþ¥ïÿá€ßÿÿÿÿÿÿÿþàÓ‡ÿÿÿÿà@u_ÿÿÿÿÿÿÿÿÿÿÿþæOÿà@_ÿÿÿÿÿÿÿÿÿÿÿÿ Ÿÿà@üÿÿÿÿÿÿÿÿÿÿÿþúïÿà@èÿÿÿÿÿÿÿÿÿÿÿÿ,ÿÿà@¶ÿÿÿÿÿÿÿÿÿÿÿÿ6_ÿဥßÿÿÿÿÿÿÿþÕgÿÿÿÿÿÿà@ŸŸÿÿÿÿÿÿÿÿÿÿÿþÿà@†ŸÿÿÿÿÿÿÿÿÿÿÿþÒÿÿà@rŸÿÿÿÿÿÿÿÿÿÿÿþ–Ÿÿà@^Ÿÿÿÿÿÿÿÿÿÿÿÿþ‘/ÿà@I_ÿÿÿÿÿÿÿÿÿÿÿþ /ÿá€_ÿÿÿÿÿÿÿþÐz¼+ÿÿÿÿà@ößÿÿÿÿÿÿÿÿÿÿÿþ} _ÿà@®_ÿÿÿÿÿÿÿÿÿÿÿþ‘ ¯ÿဩ_ÿÿÿÿÿÿÿþȪ¹Óÿÿÿÿá€~ßÿÿÿÿÿÿÿþÅ»³ÿÿÿÿá€iŸÿÿÿÿÿÿÿþÄ"Á·ÿÿÿÿà@,_ÿÿÿÿÿÿÿÿÿÿÿþ–ÿà@ÿÿÿÿÿÿÿÿÿÿÿþ¥/ÿá€ÿÿÿÿÿÿÿþ¾Z»ÇÿÿÿÿအŸÿÿÿÿÿÿÿþ³j°Kÿÿÿÿà@Tÿÿÿÿÿÿÿÿÿÿÿþ´oÿà@.Ÿÿÿÿÿÿÿÿÿÿÿÿþ¥ÿá€(_ÿÿÿÿÿÿÿþ¨R¢Ûÿÿÿÿà@Ÿÿÿÿÿÿÿÿÿÿÿÿþ¯ßÿဟÿÿÿÿÿÿÿþ¨¢£+ÿÿÿÿà@ _ÿÿÿÿÿÿÿÿÿÿÿþª ÿá€òŸÿÿÿÿÿÿÿþ¥ªŸkÿÿÿÿà@íŸÿÿÿÿÿÿÿÿÿÿÿþà ¯ÿá€Ý_ÿÿÿÿÿÿÿþ¥ZžSÿÿÿÿá€Æßÿÿÿÿÿÿÿþ¨¢ Óÿÿÿÿà@º_ÿÿÿÿÿÿÿÿÿÿÿþá ?ÿà@—_ÿÿÿÿÿÿÿÿÿÿÿþðÿà@ƒ_ÿÿÿÿÿÿÿÿÿÿÿþõ ÿÿဂÿÿÿÿÿÿÿþ¦š;ÿÿÿÿà@~_ÿÿÿÿÿÿÿÿÿÿÿÿ "ÿÿÿÿÿÿÿÿÿøŠˆù>Îyc*4°Š/ÿÿÿÿÀDò…ÿüŸÿüü×ÿÿÿÿÿÿÿÿ´F² ÀkÿøùgÿÿÿÿÿÿÿÿÿÿÿÿÐÿøõWÿÿÿÿÿÿÿÿÿÿÿÿ€ÿø`ò7ÿÿÿÿÿÿÿÿµ³Bÿÿÿÿø`ð§ÿÿÿÿÿÿÿÿµYÿÿÿÿÿÿøðWÿÿÿÿÿÿÿÿÿÿÿÿµÀ?ÿø`ï·ÿÿÿÿÿÿÿÿµ³°Ñÿÿÿÿø`ì—ÿÿÿÿÿÿÿÿµï°ÿÿÿÿøë§ÿÿÿÿÿÿÿÿÿÿÿÿ¾€kÿø`àgÿÿÿÿÿÿÿÿµŸ®ÿÿÿÿø`ÖÿÿÿÿÿÿÿÿµŸ¬qÿÿÿÿøÏ×ÿÿÿÿÿÿÿÿÿÿÿÿÉÁ7ÿøÆÇÿÿÿÿÿÿÿÿÿÿÿÿÑAÿøµ—ÿÿÿÿÿÿÿÿÿÿÿÿÓÁ7ÿø±‡ÿÿÿÿÿÿÿÿÿÿÿÿ×Kÿø`“‡ÿÿÿÿÿÿÿÿ±&­¢ÿÿÿÿøŒ÷ÿÿÿÿÿÿÿÿÿÿÿÿØÁ³ÿøƒ—ÿÿÿÿÿÿÿÿÿÿÿÿÑAŸÿøz‡ÿÿÿÿÿÿÿÿÿÿÿÿÓÁ³ÿør·ÿÿÿÿÿÿÿÿÿÿÿÿÐÛÿø`f7ÿÿÿÿÿÿÿÿ­4©Lÿÿÿÿø]wÿÿÿÿÿÿÿÿÿÿÿÿÒ‚/ÿøKWÿÿÿÿÿÿÿÿÿÿÿÿÌBCÿø`Gçÿÿÿÿÿÿÿÿª§ÿÿÿÿøG—ÿÿÿÿÿÿÿÿÿÿÿÿÓÂÿø?ÇÿÿÿÿÿÿÿÿÿÿÿÿÌB/ÿø`8çÿÿÿÿÿÿÿÿ¨4¦¤ÿÿÿÿø`7ÿÿÿÿÿÿÿÿ¨¦†ÿÿÿÿø`5'ÿÿÿÿÿÿÿÿ¨R¦Âÿÿÿÿø4‡ÿÿÿÿÿÿÿÿÿÿÿÿË¿ÿø`1gÿÿÿÿÿÿÿÿ§”¦ÿÿÿÿø/×ÿÿÿÿÿÿÿÿÿÿÿÿÕÿøp.—ÿÿÿÿÿÿÿÿ§Æ¦6ÑBWÿø-WÿÿÿÿÿÿÿÿÿÿÿÿÒ‚Wÿø`,ÿÿÿÿÿÿÿÿ¨p¦àÿÿÿÿø*‡ÿÿÿÿÿÿÿÿÿÿÿÿȃÿø&ÇÿÿÿÿÿÿÿÿÿÿÿÿÍ‚Óÿø`$Gÿÿÿÿÿÿÿÿ¨f¦rÿÿÿÿøp ‡ÿÿÿÿÿÿÿÿ©¦¸ÇC$‰ÿÿÿÿÿÿÿÿþ"¢>O³^pÉ7 &¢É»ÿÿÿÿð‘<¡_ÿÿ+ÿÿG}ÿÿÿÿÿÿÿÿíom$c ÿþFÿÿÿÿÿÿÿÿÿÿÿÿâ€)ÿþFeÿÿÿÿÿÿÿÿížíGÿÿÿþEMÿÿÿÿÿÿÿÿÿÿÿÿãÀÿþDqÿÿÿÿÿÿÿÿíœmÿÿÿÿþC©ÿÿÿÿÿÿÿÿí¨íÿÿÿÿþBAÿÿÿÿÿÿÿÿÿÿÿÿé`)ÿþ@ÿÿÿÿÿÿÿÿÿÿÿÿë]ÿþ>åÿÿÿÿÿÿÿÿí…ìÖÿÿÿÿþ>1ÿÿÿÿÿÿÿÿí—l„ÿÿÿþÿÿÿÿÿÿÿûWzêÿÿÿÿ† ÿÿÿÿÿÿÿûUŸÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿú”ÿÿ Æÿÿÿÿÿÿÿÿÿÿÿø(ÿ {ÿÿÿÿÿÿÿÿÿÿÿýÿ 5ÿÿÿÿÿÿÿÿÿÿÿû4ÿÿ ïÿÿÿÿÿÿÿÿÿÿÿø?ÿ ¤ÿÿÿÿÿÿÿÿÿÿÿûèÿÿ hÿÿÿÿÿÿÿÿÿÿÿýdÿÿ ÿÿÿÿÿÿÿÿÿÿÿø ¿ÿ Üÿÿÿÿÿÿÿÿÿÿÿø´ÿÿ  ÿÿÿÿÿÿÿÿÿÿÿýPÿ ZÿÿÿÿÿÿÿÿÿÿÿøP¿ÿ ÿÿÿÿÿÿÿÿÿÿÿý¿ÿ† âÿÿÿÿÿÿÿûêéÏÿÿÿÿ Ýÿÿÿÿÿÿÿÿÿÿÿü°¿ÿíÿÿÿÿÿÿÿÿÿÿÿý( ¿ÿ±ÿÿÿÿÿÿÿÿÿÿÿü°¿ÿHÿÿÿÿÿÿÿÿÿÿÿüœÿÿÿÿÿÿÿÿÿÿÿÿütÿÿäÿÿÿÿÿÿÿÿÿÿÿü°¿ÿ…ÿÿÿÿÿÿÿÿÿÿÿüt¿ÿÿÿÿÿÿÿÿÿÿÿÿü°¿ÿšÿÿÿÿÿÿÿÿÿÿÿüL¿ÿ†ÿÿÿÿÿÿÿúÊŠ/ÿÿÿÿ–ÿÿÿÿÿÿÿÿÿÿÿüœ?ÿ†<ÿÿÿÿÿÿÿú´ ¥ÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿüL¿ÿØÿÿÿÿÿÿÿÿÿÿÿüt?ÿãÿÿÿÿÿÿÿÿÿÿÿüÿÿ†pÿÿÿÿÿÿÿú}ªn_ÿÿÿÿ†aÿÿÿÿÿÿÿú‚ roÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿüt/¿ÿ‡ ÿÿÿÿÿÿÿú~JkŒ8)ÿäÿÿÿÿÿÿÿÿÿÿÿü`<¿ÿ†ÚÿÿÿÿÿÿÿúŒ v/ÿÿÿÿ¨ÿÿÿÿÿÿÿÿÿÿÿü°/¿ÿ†ÿÿÿÿÿÿÿú‚ªcoÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿüt9ÿÿXÿÿÿÿÿÿÿÿÿÿÿüØ*¿ÿ0ÿÿÿÿÿÿÿÿÿÿÿü`.ÿ†+ÿÿÿÿÿÿÿú…Ê`Oÿÿÿÿ‡þÿÿÿÿÿÿÿú“ŠgÌt)@«ÿÿÿÿÿÿÿÿÿâ*#äû8߃ƒ ¤LŒ+¿ÿÿÿÿ Êÿÿð/ÿðöÿÿÿÿÿÿÿþÝÖ^¯ÿáÀêßÿÿÿÿÿÿÿþàÎÕÞŸÿá€ПÿÿÿÿÿÿÿþáæÔŸÿÿÿÿà@¸ßÿÿÿÿÿÿÿÿÿÿÿþUÿÿà@¡ÿÿÿÿÿÿÿÿÿÿÿþ7¯ÿà@ŠŸÿÿÿÿÿÿÿÿÿÿÿþ‚_ÿà@qŸÿÿÿÿÿÿÿÿÿÿÿþ¯ÿà@\_ÿÿÿÿÿÿÿÿÿÿÿþÿÿà@EßÿÿÿÿÿÿÿÿÿÿÿþU¯ÿà@Ÿÿÿÿÿÿÿÿÿÿÿÿþdïÿá€_ÿÿÿÿÿÿÿþØÍÿÿÿÿà@êŸÿÿÿÿÿÿÿÿÿÿÿþ–?ÿá€æßÿÿÿÿÿÿÿþØËÿÿÿÿà@ªßÿÿÿÿÿÿÿÿÿÿÿþ¯ÿဓÿÿÿÿÿÿÿþÕÞÅwÿÿÿÿà@ÿÿÿÿÿÿÿÿÿÿÿþ ÿá€xßÿÿÿÿÿÿÿþÖ~ÀŸÿÿÿÿá€_ßÿÿÿÿÿÿÿþÕR¾«ÿÿÿÿဟÿÿÿÿÿÿÿþÒÒ¹Óÿÿÿÿà@ÍŸÿÿÿÿÿÿÿÿÿÿÿþÍ _ÿá€_ÿÿÿÿÿÿÿþÉJ½“ÿÿÿÿà@m_ÿÿÿÿÿÿÿÿÿÿÿþÈ ÿá€eßÿÿÿÿÿÿÿþÇj¿›ÿÿÿÿá€`ßÿÿÿÿÿÿÿþÇBºÃÿÿÿÿà@&ÿÿÿÿÿÿÿÿÿÿÿþæ¿ÿá€"_ÿÿÿÿÿÿÿþÃ2´[ÿÿÿÿà@ÖÿÿÿÿÿÿÿÿÿÿÿþÒ¿ÿá€Ò_ÿÿÿÿÿÿÿþºê±‹ÿÿÿÿှ_ÿÿÿÿÿÿÿþ¸j³»ÿÿÿÿဟÿÿÿÿÿÿÿþ´ú±³ÿÿÿÿà@fßÿÿÿÿÿÿÿÿÿÿÿþáÿá€Tÿÿÿÿÿÿÿþ¬:¨ßÿÿÿÿà@,ÿÿÿÿÿÿÿÿÿÿÿþð ÿá€ÿÿÿÿÿÿÿþ¥Ò¡ÿÿÿÿÿà@ßÿÿÿÿÿÿÿÿÿÿÿþæ ÿà@_ÿÿÿÿÿÿÿÿÿÿÿþë¯ÿà@üŸÿÿÿÿÿÿÿÿÿÿÿþæÿá€õÿÿÿÿÿÿÿþ¤âŸkÿÿÿÿá€â_ÿÿÿÿÿÿÿþ¦ê «ÿÿÿÿà@Úßÿÿÿÿÿÿÿÿÿÿÿÿÿá€Î_ÿÿÿÿÿÿÿþ£¢œ›ÿÿÿÿà@¼ßÿÿÿÿÿÿÿÿÿÿÿÿ ïÿ်_ÿÿÿÿÿÿÿþ£òœ#ÿÿÿÿဨßÿÿÿÿÿÿÿþ¡š™Ëÿÿÿÿဥÿÿÿÿÿÿÿþ¢²šãÿÿÿÿà@£ßÿÿÿÿÿÿÿÿÿÿÿÿ/ÿလ_ÿÿÿÿÿÿÿþ¡êšÿÿÿÿà@Œÿÿÿÿÿÿÿÿÿÿÿÿ Ÿÿà@‡ÿÿÿÿÿÿÿÿÿÿÿÿ'¿ÿစßÿÿÿÿÿÿÿþ¥úœ›ÿÿð7777dballe-7.21/extra/bufr/temp-bad3.bufr0000644000175000017500000000025613022043102014312 00000000000000BUFR®b€e  4e}²1€F£üliè06260 ®1–bF€É–A A!@ ‚(#푌±§ Gø”þÿÿÿüßÿÿÿÿÿÿÿ€ €ñð Ñ£F4hÑ£F4hÀ7777dballe-7.21/extra/bufr/synop-evapo.bufr0000644000175000017500000000472613022043102015024 00000000000000BUFR Ö[  €ÇP ®"#¤©"©ª§/³˜>šq`ÿÿÏ%>øÿÿÿÿÿÿÿût;OÿÿóèÿÿÿÿþÈ$O.X$T PÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÁÿþÙOÿÿÿýú?ûÿÿÿÿø ÿÿÿÿÿÿÿÿÿÿÿÿÿnÿÿÁ?·ü>þßÿÿÿÿÿÿÿÿ¿Gÿïÿÿÿÿÿÿÿÿÿÿÿýú?ÿÿÿÿÿÿÿÿÿÿÿü~DFBOLU ßg0 w¦… YMÿÿây—ÙÿÿÿÿÿÿÿöçÖ—ßÿÿÿÿÿÿÿÿøÿÿÿðÿäÉÿÿÿÿÿÿÿÿÿÿÿÿÿiëÿÿÿþýýÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿ¶ÿÿàŸØŒ_oÿÿÿÿÿÿÿÿߣÿ÷ÿÿÿÿÿÿÿÿÿÿÿþýÿÿÿÿÿÿÿÿÿÿÿþ?"*!§©*¦/³˜9 Âù°-ðÿÿÈi>ûîßÿÿÿÿÿÿûJûJÿÿñÿÿÿÿþ”$O(X&€þGüŸÿÿÿÿÿÿÿÿÿþOÿöpSýÐHÿÿÿÿÀ`?ÿÿÿÿÿÿÿÿÿÿÿÿûCÿþ ýÀ ÷öÿÿûLÀ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿàò"ÒšJ² ™û8€býÌ)d1/ÿüCßÿ¿Ïÿá4ãÿÿµc³ûÿÿÿ.çÿÿÿÿÿõÀJû‚$ Œ2¨€ ÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿ“ÿý¡oÿÿÿûô ÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿþÓ×ÿÿ‚a@ýý¿ÿÿÿÿÿÿÿÿ~ÿßÿÿÿÿÿÿÿÿÿÿÿûôÿÿÿÿÿÿÿÿÿÿÿøüˆÄ–‚¤¦@@@@@@@@@@@@@@@@¾Î`æƒ £%VÓÿÿßÿðAøM@ÿí,î¿ÿÿÇÑÿÿÿÿÿø<‘ÿàÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÉÿþÈÿÿÿýúÿÿÿÿø ÿÿÿÿÿÿÿÿÿÿÿÿÿdëÿÿÁ?·ü>þßÿÿÿÿÿÿÿÿ¿Bÿÿÿÿÿÿÿÿÿÿÿýú?ÿÿÿÿäèÿÿÿÿü~D–BALIKESIR _g0 \N„ôû`'Mÿÿ›¾v§Ù¿ÿÿÿÿÿÿöë–Ó?ÿÿçÐÿÿÿþ¸)`d  P"Uÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿ‡ÿýµ¼ÿHôÿÿÿÿð/ÿÿÿÿÿÿÿÿÿÿÿÿþÜGÿÿ‚f@ ýý¿ÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿûôÿÿÿÿ6Œÿÿÿÿÿøü‰@–’¤¦Š’¤@@@@@@@@@@@@¾Î`¢' 6BÚÃÿÿGÿïÔøM4¿ÿíW­ÿÿÏ¡ÿÿÿÿÿúP RÆ¡@ ˜Â€ùòÿÿÿÿÿÿÿÿÿøÿÚaÿÿÿÿ¿AÔÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿí:ÿÿø'ö¯'ßÛÿÿí1ÿïÿ÷èÿýÿÿÿÿÿÿÿÿÿÿÿÿ¿Gÿÿÿÿÿÿÿÿÿÿÿÿ€È—)i *h*D ìàf‰fðž“´пÿóNàüÿÿÿÿÿÿþÝšÜ[ÿÿüúÿà!ÿÿ×,k %q  ÿò?äÿÿÿÿÿÿÿÿÿÿñÿ·€_èÂ~°ÿÿÿÿþGÿÿÿÿÿÿÿÿÿÿÿÿÿÛ¡ÿÿðOìP¯¿·ÿÿÚcþÿïÐ ÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿ‘/PQ–SÓ’ÐTRTÐT‹SQVQWÙÀÌ´¡AY ”ÿãÿýü/ÿ  &?ÿý¯Í­wÿÿøÈ?ÿÀÿÿ® X—(H„Á•@ÿäÉÿÿÿÿÿÿÿÿÿÿâÿÿk{?Єýýÿÿÿÿü+ÿÿÿÿÿÿÿÿÿÿÿÿÿµôÿÿàŸÚ¿oÿÿÿÿÿÿÿÿߣÿ÷ÿÿÿÿÿÿÿÿÿÿÿþýÿÿÿÿÿÿÿÿÿÿÿþ?"i)¤¤©*/³˜fÂ¥Vp2dÿÿÇÁ?ãê¿ÿÿÿÿÿÿû^«KOÿÿóèÿÿÿÿþ”$O(&€þGüŸÿÿÿÿÿÿÿÿÿþOÿöž¿ÿÿÿïÐoÿÿÿÿÀ`?ÿÿÿÿÿÿÿÿÿÿÿÿû]ÿþ ý¿à÷öÿÿÿÿÿÿÿÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿïÑÿÿÿÿýŸÿÿÿÿÿàò'R Ê"Jqû8€aŠ´'¤íoÿüæó½¿‡ÿÿÿÿÿÿÿ·R·HÿÿÿGÿø,ÿõÀPñ;eˆ$ˆ P(†M€ÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿ‹ÿýºl¾ÿBô §ÿÿÿÿð ÿÿÿÿÿÿÿÿÿÿÿÿþÝKÿÿ‚b0 ýý¿ÿþÓðHÿÿ~„ŸÿÿÿÿÿÿÿÿÿÿÿûôÿÿÿÿÿÿÿÿÿÿÿøüŠŽ‚´’‚œ¨Š @@@@@@@@@@@¾Î`= ]R¬«ÿÿ%o¨ÿÿÿÿÿÿí‡-R¿ÿÿÇÑÿÿÿÿÿûà R¾¹@@™€% ªÿ#þOÿÿÿÿÿÿÿÿÿÿÿûO_ÿÿÿ÷è>Oÿÿÿÿà0ÿÿÿÿÿÿÿÿÿÿÿÿý¨ïÿÿþÕàûûÿÿÿÿÿÿÿþý?ÿÿÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿþeÿÿÿÿÿðù‰ =IU4€€€€€€€€€€€€€}œ À0uFÈ5€·ÿþt™Ú BÿÿÿÿÿÿÿÛìÛØÿÿÿŸCÿüŸÿúà ¥²€BˆNTþGüŸÿÿÿÿÿÿÿÿÿþ/ÿöö0Ëý%Ð%ŸÿÿÿÿÀ`ÿÿÿÿÿÿÿÿÿÿÿÿÿû|ÿÿþ ý÷öÿÿûLÁ‹ÿýú ÿÿÿÿÿÿÿÿÿÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿàò+’JšZ*r"*’ªqû8€`’¨):°üÿüöSÛ?Ïÿÿÿÿÿÿÿ¸µ´ëÿÿÿ.çÿÿÿÿÿòÀ1Kåd ˜2¨?üù?ÿÿÿÿÿÿÿÿÿüÿíøÿÿÿÿß ê?ÿÿÿÿ€Àÿÿÿÿÿÿÿÿÿÿÿÿ÷?ÿüû€Wïíÿÿÿÿÿÿÿÿûô xÿÿÿÿÿÿÿÿÿÿÿÿߣÿÿÿÿû1§ÿÿÿÿÿÀà7777dballe-7.21/extra/bufr/obs4-142.1.bufr0000644000175000017500000000024213022043102014043 00000000000000BUFR¢b€Ž  4Ž}YÒ0$8k¬tACA872 ¢ < 4F€Ë–A A!8ACA872 ï« €–ºÇA!ÁÁ+¢jpHŸÿÿÿÿà hÑ£F4hÓãF4hÀ7777dballe-7.21/extra/bufr/synop-tchange.bufr0000644000175000017500000000034013022043102015307 00000000000000BUFRà×ß €ÇPµ 1( ¬¢©'"¾bŒ†2:€Ä"ÄdÌC[ö_ÿÿÿÿøCXQ_ÿÿÿ€Kÿÿÿÿÿÿÿÿøÿò?äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðýüYÿÀÿÿÿÀ2Ò?ÿßÒ?ÿÀú0Oì2O¿·ÿÿÝ3þ?ÿïÑÿûÿÿÿÿÿÿÿÀÿÿÿÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþè7777dballe-7.21/extra/bufr/synop-gtscosmo.bufr0000644000175000017500000000055413022043102015543 00000000000000BUFRlN€ Ù ÿÿ¬G  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…þÿÿÿÿÿú °±´2·/²L0¶²7긄 Ð ó“}¿xÿÿÿÿÿÿÿàØ_í`ÿÿÿüúÿÿÿÿÿÿÿäñþ<#|ïøàüxÞ€<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€½þ¼Þ/ÿÿÿÿÿÿÿßëÀÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿþ<^þßhðÿûûÿÿÿÿÿÿÿÿÿÿÿí1ÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø7777dballe-7.21/extra/bufr/gts-acars-uk1.bufr0000644000175000017500000000017613022043102015121 00000000000000BUFR~J€ÿ  ÿÿ«øª  &€Ë $ L>@  4LH968 ²L-öŸž"EÆæÀ¦¥€B)ßÿÿÿÿÿÿÿÿýTÌÌÜÔ€ƒù€ 7777dballe-7.21/extra/bufr/generic-onlystation.bufr0000644000175000017500000000020613022043102016526 00000000000000BUFR†Èÿÿè €ÂÀDgeneric @S^H™X]]Y[Ý][Ûˆ A3˜¬ƒø7777dballe-7.21/extra/bufr/ecmwf-ship-1-12.bufr0000644000175000017500000000036213022043102015154 00000000000000BUFRòb€   4 }ÓM Gsaö D5BO9 òM2 F@€Á$    ????! "%&$–A' A'!`D5BO9 -ëîši‘BIWÿÿÿÿïþ@ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà€cF4hÑ£F4hÑ£F4hÑ£F4hÑ£F4hÀ7777dballe-7.21/extra/bufr/issue75.bufr0000644000175000017500000001241613022041454014053 00000000000000BUFRèÿÿÿe Ö €É–A A!ª Hûë9LšëP’1!šÿÿÿÿÿýB~ ÿûâ¶HÎ y #©¡ÿîÚÒ?ÿÿ·ÿÿÿÿÿø ¢Bÿÿµk0ÿÿü>@?ÿö­bÿÿ†`ÿÿÿÿüdpšÜZ5… €åÿ@ÿÿÿÿò0¾ÿÿÿÿÿþA7ÿÿÿÿÇ€rÞ0ÿÿÿÿø  Û€ÿÿ­ê˜ÿÿûk¼Õ¹T 3fÐÿÿÿÿüdÌÿÿÿÿÿ†@Í„ ÿÿÿÿðx¯¼ÿÿQtÛÿÿõáÿÿÿÿÄ`r»‡ÿÿÿÿÿøŒVDÿÿ§ZCÿÿú´€?ÿÿÿÿá@3U(ÿÿÿÿüjsÿÿÒì±ÿÿýJÿÿÿÿðð$'8ÿÿHsúÔâ©~€®˜Ðÿÿÿÿøx¢ÿÿ£99ÿÿú;@?ÿÿÿÿàð•E°ÿþæßÿÿèÿÿÏ\xÿÿüúè©Ý‘PÈ{ž ÿÿÿÿþÃÅÿç>Kÿÿþiÿü½ÅïÿÿÌÚÿÿ—cÿÿùwÍò á‘Y'¬ê8a,<2ÄØÿÿÿÿÿ‡†X†`ÿø‘¿ÿÿ aoÎ!µ€ÿÿÿÿÃ"¼2 ÿü¼øxCÜ7¥†7} †º@?ÿÿÿÿá¾Ðÿþ]ÿÿâ²ÿÿÿÿÿŒ‚hNÀÿÿÿÿðð=‰°ÿÿ îsÿÿñ"ÿÿÿÿÄ`Î# ÿÿÿÿø(Äjÿÿÿÿÿ‚¸…À?ÿÿÿÿâ0W@ÿÿÿÿü2 Aô ºÃÛä5Pÿøar¿ÿÿ†¦ÿÿÿÿþ0ÐÿÿÿÿÆ@š ÿÿÿÿù|Âôÿÿÿÿÿ˜X ?ÿÿÿÿåðW ôÿþÜ·ÿÿá^% C–›H+Pÿÿÿÿó˜&…Tÿÿÿÿþs0¦€ÿÿÿÿʆxÿÿÿÿù,wÿÿÿÿÿ9ÈL`?ÿÿÿÿæà Pÿÿÿÿüxa€ÿÿÄ‹£ÿÿü#ÿÿÿÿó 8„ ÿÿÿÿþŒ€ƒÀÿáõÏÿþ0ÿÿÿÿù¸ ÁôRHˆWE(`0@?ÿñè?ÿÿ°{n*]|È ‚ÿÿÆ{¸ÿÿü ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRòÿÿÿe Ö €É–A A!´ Hûë9`šëP’1!šÿÿÿÿÿýF~ ÿûv¶ ÏœÿÿtÖÕÿÿùçÿîâÕ?ÿÿ8€ÞYѤ¦˜ÿÿ¼ ÿÿü­€?ÿ÷IfßÿÿŽ[ÿÿÿÿÿü¾qÿÿÿÿÿ™"àÿÿÿÿò€ÂhwiÖP˜€ÿìê¿¿ÿÿÐÿÿÿÿùhß@ÿÿÿÿÿÿ*ƒ³Ú@?ÿÿÿÿå{o¸ÿÿÿÿü‚ ¬÷VÅWÁ5´@ÿÿÿÿòX&µ\ÿÿYUgÿÿöˆ€ÿÿÿÿÅÉàÿýTÓÿÿÿØìÿÿÿÿÿ‚“À?ÿÿÿÿá@9^ØÿÿÿÿüF‹¸ÿÿÿÿÿˆÀ¥fÀÿú¡ÿÿ«Ôÿÿÿÿþ#åu€ÿéî]ÿÿþ«ÿý=Ïx<Õ@ÿÿ§Yýÿÿú”?ÿÿÿÿâ€RP ÿþ•çÏÿÿéÄ Òlå‡1 ÿú=œÿÿÿ¤¸ÿÿÿÿþdl€ÿè¦Nÿþ†ÿýÌ?ÿÿÐ^ÿÿ 9ÿÿùôÔóÛ¢€Ó;°ÿþvâGÿÿçlÿÿÎÌLÿÿüæÿÿÿÿñ†pM-(ñ:#ÂËÿÿÿÿÃÂ,Yÿü’ÅÿÿÉÄ+WøSá/À?ÿñŸ ¿ÿÿ!èÿþ'`GÿÿãèsC«þˆÄo@ÿÿÿÿððvŒøÿÿ/ž!‹ÿÿÿÿÁáÄ.à½Ä$½èd.E´ÿÿÿÿÿ …x±€?ÿðÆò?ÿÿ¸ÿÿÿÿüdÿÿÿÿÿˆÁtM€ÿÿÿÿñ1 `ÿÿÿÿþ< ÿÿÿÿÈÀ@ D>¹éàCÎÿÿÿÿÿ €(iÀ?ÿð®ä?ÿÿ °ÿÿÿÿüZáŽÿÿÿÿÿ‚€Ì/ÿÿÿÿò01¾ÿÿÿÿþPp°@ÿÿÿÿÎ`ºàPô5¹Y¸­ÿÿÿÿÿ-S?ÿÿÿÿæR ÿÿÿÿý,a<€ÿÿÿÿÿ¦Àø'@ÿÿÿÿô°„ÆÿÿÿÿþAP•Àÿÿÿÿ€fXÿÿÿÿød‚/ÿÿÿÿÿ*„0>€ JQèä°g(ÿþ*݇ÿÿà€ÿÿÅ+­ÿÿüÀîè‡ÿÿÿÿ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFRBÿÿÿe Ö €É–A A! Hûë9lšëP’1!šÿÿÿÿÿýb}€ÿû䵄8OœÿÿzÖÿÿùÄ’¯Óž  ·ÿÿÿÿÿø(ã2ÿÿ¶«=ÿÿüW@?ÿÿÿÿâÐ3‰XÿþÛ+ÓÿÿðšÚZÕlæÀÿÿÿÿòX¾ÿÿÿÿÿþ2—…ÿÿÿÿÄ`†äÀÿývU×ÿÿÛX è­J¢Cb@?ÿÿÿÿã MkÐÿþ²ª{ÿÿìÕÿÿÿÿÿ‡I–@ÿú¬§¯ÿÿ²ÿÿÿÿþ26.€ÿ겿ÿþ»‡ÿÿÿÿÿøð –îÿÿÿÿÿÊÇ@?ÿõXÿþtæ‹ÿÿçžÿÿÿÿÿ‚œê`ÿùµ¿ÿÿÿÿÿÿþ# ÿåN;ÿÿþ_ÿÿÿÿø$ Ìÿÿ’ù ÿÿùwË’[!` -ÈÿþGä;ÿÿåxÿÿÈ|AƒÂ@ž ÿÿÿÿûJ“ˆV%°«c ¢Nÿÿÿÿí^FÿüI¿ÿÿÈÿÿ†Ø'ÿÿøúÐÇ ðšÿÿÿÿü(£±ÿÿÂ{ÿ…,qÀÿÿÿÿðPH ÿÿ ï–-q•ÿÿÿÿÁ@†1°ÿÿÿÿøxEÜ7~ˆWm§Èº@?ÿñítPH€ÿÿÿÿþ¨ B™ÿÿÃ{œÿÿüR€ÿÿÿÿñŠÿÿÿÿþ(‘=€ÿÿÿÿÄ`r&Àÿÿÿÿøð„Äÿÿÿÿÿ@”À?ÿñ>ê¢09@ÿþ\µà¡ô °Ã›™ÎÀh9àÿÿÿÿðÄÿÿ nKÿÿðØ@ÿÿÿÿÈÀš8ÿÿÿÿùÂøÿÿÿÿÿ(`]À?ÿðúç¿ÿÿ <ÿþ\·ÿÿád€ÿÿÿÿÿ €Ì+À {s³Àrÿÿÿÿþs@ª@ÿÿÿÿÊf0ÿÿÿÿù,Byÿÿÿÿÿ*ƒ`Mà?ÿÿÿÿåðb LÿÿÿÿüŒ á€ÿÿÿÿÿ–ˆ"Pÿÿÿÿòø„4ÿÿÿÿþAðƒ@ÿÿÿÿÊf ‘¬@º T•ÿÿ‰·Qÿÿø%€ Ûq^ëd°†ìÿþ0Ý¿ÿÿàU¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7777BUFRbÿÿÿe Ö €É–A A!$ Hûë9ŒšëP’1!šÿÿÿÿÿýn|@ÿûàµä8ÏtÿÿzuÿÿùÄŽ/ÔÀSÿÿÿÿÿùT cPÿÿ¶ëBÿÿü*@?ÿö±^Ÿÿÿ„ІÕ+ÀZÿÿÿÿÿŒ€Íôÿÿÿÿÿñà!½TÿÿÿÿþK7Dÿëâ´¿ÿþäÀÿýwV/ÿÿÜHÿÿÿÿÿkr€?ÿõÁTŸÿÿm`7V·ª°PmÿÿÖEFÿý˜ ÿÿÿÿñh!±ˆÿÿÿÿþ6ÿêV ?ÿþ»‡ÿÿÿÿÿøP²ÿÿÿÿÿ BÎÀ?ÿôÏJ_ÿÿXpÿÿÿÿüZ «ÿÿÓMÿÿý\ ÿúkŸßÿÿª0ÿÿL3Gÿÿõ€ÿÿÿÿÃÀØœ@À5Ì(Ótÿÿÿÿÿ‚ºA€?ÿÿÿÿávC¨ÿþzd_ÿÿè*ÿÿΜ²Š`ÿùÏšŸÿÿ ÿÿ9³ÿÿôÿç&i¿ÿþ}PÿüÞËoÿÿÏ l›Ùm‰ï?ÿó¿ÿÿ=ÿÿÿÿü ç”ÿÿͬ£ÿÿüä ÿÿÿÿñ3šÌÿÿÿÿþ#bÿ€ÿÿÿÿí¤_ ÿü–Çÿÿ˸&>’Xé´A\À?ÿñû?ÿÿ'Øÿþ2áÇÿÿäöÿÿÿÿÿƒÁ œ@®¸Å‡P($èÿÿÿÿÿYrU€ÿâæÿþF ÿÿÿÿýPˆpÿÿÿÿÿ±ñ€?ÿðï¿ÿÿ €ÿÿÿÿþ¨Ãòÿÿÿÿÿ†@ø}hg€0ðÿÿÿÿþáØ€ÿáU÷CÀ†90ÿÿÿÿøÜ Æàÿÿÿÿÿ±˜×?ÿÿÿÿàPCÿÿÿÿüd C/ÿÿÿÿÿ‘ c`ÿÿÿÿðð!Œÿÿÿÿþ1|ÿâ]Øÿþ.à»Jº¨d ÃèAW‡w7#Ðu€?ÿÿÿÿé°9lÿÿÿÿý^a¯ÿÿÿÿÿÆ3ðÿÿÿÿò0†\ÿÿÿÿþUpÆ€ÿáËMÀr(ÿÿÿÿùÌ åÿÿÿÿÿ(ˆZà?ÿÿÿÿå  ð'ÞÜÌÜ ¡Wÿÿÿÿÿ \*PÿÿÿÿóÀ$ÿÿÿÿþF¡ÀÿÿÿÿÆ@f ÿÿÿÿù!‚Mÿÿÿÿÿ28>€ Eq&é&àH˜ÿþ%]/ÿÿàÒ€ÿÿÄ[ ÿÿüÀí³uòø;&ÿÿnëÿÿð@€ÿã Ûÿÿþ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7777dballe-7.21/extra/bufr/test-buoy1.bufr0000644000175000017500000000046213022043102014551 00000000000000BUFR2b€ƒ  4ƒ}™\P ëdv61691 2\Z\äF €Á# Æ–ADÉAD!Àx}€À öepÌýGßÿÿÿ‘2ÿÀ œÉ?ÿg€g‚±²}€…s€Œa€O€Os‚±²|j+Ä|[€UsI>g€¤ËÃI— ŽÛº=b1-ô$çïÕŸ€ô$YUs= g€s÷€Éjhh½ŽI—YÛºÉjY[€s÷€Éj€ÕŸ€ô$YÃI—çïÉj€s÷€0ÔUsI>0Ô$Ÿ¤Ë€ÛºÃ1-ÛºÕŸ€ÛºÕŸ€¤Ë€¤Ë€˜–€±€I>$Ÿ+Ä~±²~±²}ú—ú—€Os€…€O‚7 €js÷€Ûº Žçï½5€½5€¤Ë€±Ã=btP€…€…˜ïÕø˜ï$øçï[€0Ôj7 €I>ÛºÃô$YÕŸY¤Ë€7777BUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUUUUUUUUUUUUPUUUUUQUUð `g€¤ËÃY Ž1-ÛºÕŸ€ô$ô$ÕŸ$øŒa€UsI>g€g‚±²}€…s€Œa€O€Os‚±²|j+Ä|[€UsI>g€¤ËÃI— ŽÛº=b1-ô$çïÕŸ€ô$YUs= g€s÷€Éjhh½ŽI—YÛºÉjY[€s÷€Éj€ÕŸ€ô$YÃI—çïÉj€s÷€0ÔUsI>0Ô$Ÿ¤Ë€ÛºÃ1-ÛºÕŸ€ÛºÕŸ€¤Ë€¤Ë€˜–€±€I>$Ÿ+Ä~±²~±²}ú—ú—€Os€…€O‚7 €js÷€Ûº Žçï½5€½5€¤Ë€±Ã=btP€…€…˜ïÕø˜ï$øçï[€0Ôj7 €I>ÛºÃô$YÕŸY¤Ë€7777dballe-7.21/extra/bufr/synop-oddprec.bufr0000644000175000017500000000033413022043102015321 00000000000000BUFRÜJ Ù  €ÇP° f£²©º¡2¹70¹2/³‚Pzò;30p089º ÿü?ýµ€{Gÿû4+1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿò?äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿþýÿÿÿÿÀÿÿÿÿÿßÒ?ÿßÒ?ÿÿÿðOìn/¿·ÿÿßþ_ÿïÑÿûÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿïÿÿÿ€7777dballe-7.21/extra/bufr/ecmwf-ship-1-11.bufr0000644000175000017500000000030613022043102015151 00000000000000BUFRÆb€  4 }ÓL Ie`Ñ(PHKL ÆLÀð €È  Å–A" A"!XPHKL -‹îšeŒ’YGÿó»¿@+V±¯çÐAðú§ÙÕ™ÿÀ Ñ£F4hÂ…F6|hÔ&Æ¥V4j±ªÔ«V¬hÑ€7777dballe-7.21/extra/bufr/interpreted-range.bufr0000644000175000017500000000030613022043102016151 00000000000000BUFRÆb€   4 }Å=€Hz°m{XDBBC Æ=…˜ €È  Å–A" A"!XDBBC C€î)ìÀrQÇÿôu>ÄðË®_ÿÿÿÿÿÁÿÿ÷¾fçÿÿÀ Ñ£F4hÂ…F6|hÒ¥F4hÑ£F—>x¨Ñ€7777dballe-7.21/extra/bufr/gts-acars1.bufr0000644000175000017500000000025213022043102014477 00000000000000BUFRªN€ÿ Ù ÿÿ«øª  &)$<€!"Ë@  g B K L % ' M*+,-)>FA!:JEU5331 ÿ´ÐÿUG7Ù&ø,žÿÿÚ>?ÿÿfÿÿÿÿÿÿóÿÿÿÿÿÿÿÿ7777dballe-7.21/extra/bufr/ecmwf-ship-1-13.bufr0000644000175000017500000000030613022043102015153 00000000000000BUFRÆb€  4 }ÓL`G\eŒBATFR24 ÆLj0F€È  Å–A" A"!XBATFR24 ‡#îšcŸòF7ÿóžDã ¬/çÐ2)@ÿÿ÷¾ÿÿÿÀ Ñ£F4hÖlÆ6|hÔ&ÆŸV4j±£F¥R¤hÑ€7777dballe-7.21/extra/bufr/ecmwf-acars1.bufr0000644000175000017500000000035613022043102015010 00000000000000BUFRîb€‘  4‘}Á'€FWÐk…dESKSFEZA î+ÔFN€=>F?    " #   )–AÉA!NESKSFEZAYTIUIERAæ†kÿü}Á'· H±¼þxßÿÿÿ¬¯ÿÿàÄ7øÑ£Fÿ4hÑ£FøÑ¿ÿÿÿÿà7777dballe-7.21/extra/bufr/db-messages1.bufr0000644000175000017500000001500213022043102015004 00000000000000BUFR2be €É–A A!øÿÿÿûëáw­ˆðŒ÷äÿþÿÿÿü6|è ê«;@ N €%ZÕk^É>ê–¥ൠ¢sFLb”<Ü  ÆŒƒÅðœáÿÿÿÿð Íˆ€Q/æ¢7ˆÿáåöAâ¼>‚qÌ>¾˜Îyc*4°Š/ÿÿÿÿÀDò…ÿüŸÿüü×ÿÿÿÿÿÿÿÿ´F² ÀkÿøùgÿÿÿÿÿÿÿÿÿÿÿÿÐÿøõWÿÿÿÿÿÿÿÿÿÿÿÿ€ÿø`ò7ÿÿÿÿÿÿÿÿµ³Bÿÿÿÿø`ð§ÿÿÿÿÿÿÿÿµYÿÿÿÿÿÿøðWÿÿÿÿÿÿÿÿÿÿÿÿµÀ?ÿø`ï·ÿÿÿÿÿÿÿÿµ³°Ñÿÿÿÿø`ì—ÿÿÿÿÿÿÿÿµï°ÿÿÿÿøë§ÿÿÿÿÿÿÿÿÿÿÿÿ¾€kÿø`àgÿÿÿÿÿÿÿÿµŸ®ÿÿÿÿø`ÖÿÿÿÿÿÿÿÿµŸ¬qÿÿÿÿøÏ×ÿÿÿÿÿÿÿÿÿÿÿÿÉÁ7ÿøÆÇÿÿÿÿÿÿÿÿÿÿÿÿÑAÿøµ—ÿÿÿÿÿÿÿÿÿÿÿÿÓÁ7ÿø±‡ÿÿÿÿÿÿÿÿÿÿÿÿ×Kÿø`“‡ÿÿÿÿÿÿÿÿ±&­¢ÿÿÿÿøŒ÷ÿÿÿÿÿÿÿÿÿÿÿÿØÁ³ÿøƒ—ÿÿÿÿÿÿÿÿÿÿÿÿÑAŸÿøz‡ÿÿÿÿÿÿÿÿÿÿÿÿÓÁ³ÿør·ÿÿÿÿÿÿÿÿÿÿÿÿÐÛÿø`f7ÿÿÿÿÿÿÿÿ­4©Lÿÿÿÿø]wÿÿÿÿÿÿÿÿÿÿÿÿÒ‚/ÿøKWÿÿÿÿÿÿÿÿÿÿÿÿÌBCÿø`Gçÿÿÿÿÿÿÿÿª§ÿÿÿÿøG—ÿÿÿÿÿÿÿÿÿÿÿÿÓÂÿø?ÇÿÿÿÿÿÿÿÿÿÿÿÿÌB/ÿø`8çÿÿÿÿÿÿÿÿ¨4¦¤ÿÿÿÿø`7ÿÿÿÿÿÿÿÿ¨¦†ÿÿÿÿø`5'ÿÿÿÿÿÿÿÿ¨R¦Âÿÿÿÿø4‡ÿÿÿÿÿÿÿÿÿÿÿÿË¿ÿø`1gÿÿÿÿÿÿÿÿ§”¦ÿÿÿÿø/×ÿÿÿÿÿÿÿÿÿÿÿÿÕÿøp.—ÿÿÿÿÿÿÿÿ§Æ¦6ÑBWÿø-WÿÿÿÿÿÿÿÿÿÿÿÿÒ‚Wÿø`,ÿÿÿÿÿÿÿÿ¨p¦àÿÿÿÿø*‡ÿÿÿÿÿÿÿÿÿÿÿÿȃÿø&ÇÿÿÿÿÿÿÿÿÿÿÿÿÍ‚Óÿø`$Gÿÿÿÿÿÿÿÿ¨f¦rÿÿÿÿøp ‡ÿÿÿÿÿÿÿÿ©¦¸ÇC$‰ÿÿÿÿÿÿÿÿþ"¢>O³^pÉ7 &¢É»ÿÿÿÿð‘<¡_ÿÿ+ÿÿG}ÿÿÿÿÿÿÿÿíom$c ÿþFÿÿÿÿÿÿÿÿÿÿÿÿâ€)ÿþFeÿÿÿÿÿÿÿÿížíGÿÿÿþEMÿÿÿÿÿÿÿÿÿÿÿÿãÀÿþDqÿÿÿÿÿÿÿÿíœmÿÿÿÿþC©ÿÿÿÿÿÿÿÿí¨íÿÿÿÿþBAÿÿÿÿÿÿÿÿÿÿÿÿé`)ÿþ@ÿÿÿÿÿÿÿÿÿÿÿÿë]ÿþ>åÿÿÿÿÿÿÿÿí…ìÖÿÿÿÿþ>1ÿÿÿÿÿÿÿÿí—l„ÿÿÿþÿÿÿÿÿÿÿûWzêÿÿÿÿ† ÿÿÿÿÿÿÿûUŸÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿú”ÿÿ Æÿÿÿÿÿÿÿÿÿÿÿø(ÿ {ÿÿÿÿÿÿÿÿÿÿÿýÿ 5ÿÿÿÿÿÿÿÿÿÿÿû4ÿÿ ïÿÿÿÿÿÿÿÿÿÿÿø?ÿ ¤ÿÿÿÿÿÿÿÿÿÿÿûèÿÿ hÿÿÿÿÿÿÿÿÿÿÿýdÿÿ ÿÿÿÿÿÿÿÿÿÿÿø ¿ÿ Üÿÿÿÿÿÿÿÿÿÿÿø´ÿÿ  ÿÿÿÿÿÿÿÿÿÿÿýPÿ ZÿÿÿÿÿÿÿÿÿÿÿøP¿ÿ ÿÿÿÿÿÿÿÿÿÿÿý¿ÿ† âÿÿÿÿÿÿÿûêéÏÿÿÿÿ Ýÿÿÿÿÿÿÿÿÿÿÿü°¿ÿíÿÿÿÿÿÿÿÿÿÿÿý( ¿ÿ±ÿÿÿÿÿÿÿÿÿÿÿü°¿ÿHÿÿÿÿÿÿÿÿÿÿÿüœÿÿÿÿÿÿÿÿÿÿÿÿütÿÿäÿÿÿÿÿÿÿÿÿÿÿü°¿ÿ…ÿÿÿÿÿÿÿÿÿÿÿüt¿ÿÿÿÿÿÿÿÿÿÿÿÿü°¿ÿšÿÿÿÿÿÿÿÿÿÿÿüL¿ÿ†ÿÿÿÿÿÿÿúÊŠ/ÿÿÿÿ–ÿÿÿÿÿÿÿÿÿÿÿüœ?ÿ†<ÿÿÿÿÿÿÿú´ ¥ÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿüL¿ÿØÿÿÿÿÿÿÿÿÿÿÿüt?ÿãÿÿÿÿÿÿÿÿÿÿÿüÿÿ†pÿÿÿÿÿÿÿú}ªn_ÿÿÿÿ†aÿÿÿÿÿÿÿú‚ roÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿüt/¿ÿ‡ ÿÿÿÿÿÿÿú~JkŒ8)ÿäÿÿÿÿÿÿÿÿÿÿÿü`<¿ÿ†ÚÿÿÿÿÿÿÿúŒ v/ÿÿÿÿ¨ÿÿÿÿÿÿÿÿÿÿÿü°/¿ÿ†ÿÿÿÿÿÿÿú‚ªcoÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿüt9ÿÿXÿÿÿÿÿÿÿÿÿÿÿüØ*¿ÿ0ÿÿÿÿÿÿÿÿÿÿÿü`.ÿ†+ÿÿÿÿÿÿÿú…Ê`Oÿÿÿÿ‡þÿÿÿÿÿÿÿú“ŠgÌt)@«ÿÿÿÿÿÿÿÿÿâ*#äû8߃ƒ ¤LŒ+¿ÿÿÿÿ Êÿÿð/ÿðöÿÿÿÿÿÿÿþÝÖ^¯ÿáÀêßÿÿÿÿÿÿÿþàÎÕÞŸÿá€ПÿÿÿÿÿÿÿþáæÔŸÿÿÿÿà@¸ßÿÿÿÿÿÿÿÿÿÿÿþUÿÿà@¡ÿÿÿÿÿÿÿÿÿÿÿþ7¯ÿà@ŠŸÿÿÿÿÿÿÿÿÿÿÿþ‚_ÿà@qŸÿÿÿÿÿÿÿÿÿÿÿþ¯ÿà@\_ÿÿÿÿÿÿÿÿÿÿÿþÿÿà@EßÿÿÿÿÿÿÿÿÿÿÿþU¯ÿà@Ÿÿÿÿÿÿÿÿÿÿÿÿþdïÿá€_ÿÿÿÿÿÿÿþØÍÿÿÿÿà@êŸÿÿÿÿÿÿÿÿÿÿÿþ–?ÿá€æßÿÿÿÿÿÿÿþØËÿÿÿÿà@ªßÿÿÿÿÿÿÿÿÿÿÿþ¯ÿဓÿÿÿÿÿÿÿþÕÞÅwÿÿÿÿà@ÿÿÿÿÿÿÿÿÿÿÿþ ÿá€xßÿÿÿÿÿÿÿþÖ~ÀŸÿÿÿÿá€_ßÿÿÿÿÿÿÿþÕR¾«ÿÿÿÿဟÿÿÿÿÿÿÿþÒÒ¹Óÿÿÿÿà@ÍŸÿÿÿÿÿÿÿÿÿÿÿþÍ _ÿá€_ÿÿÿÿÿÿÿþÉJ½“ÿÿÿÿà@m_ÿÿÿÿÿÿÿÿÿÿÿþÈ ÿá€eßÿÿÿÿÿÿÿþÇj¿›ÿÿÿÿá€`ßÿÿÿÿÿÿÿþÇBºÃÿÿÿÿà@&ÿÿÿÿÿÿÿÿÿÿÿþæ¿ÿá€"_ÿÿÿÿÿÿÿþÃ2´[ÿÿÿÿà@ÖÿÿÿÿÿÿÿÿÿÿÿþÒ¿ÿá€Ò_ÿÿÿÿÿÿÿþºê±‹ÿÿÿÿှ_ÿÿÿÿÿÿÿþ¸j³»ÿÿÿÿဟÿÿÿÿÿÿÿþ´ú±³ÿÿÿÿà@fßÿÿÿÿÿÿÿÿÿÿÿþáÿá€Tÿÿÿÿÿÿÿþ¬:¨ßÿÿÿÿà@,ÿÿÿÿÿÿÿÿÿÿÿþð ÿá€ÿÿÿÿÿÿÿþ¥Ò¡ÿÿÿÿÿà@ßÿÿÿÿÿÿÿÿÿÿÿþæ ÿà@_ÿÿÿÿÿÿÿÿÿÿÿþë¯ÿà@üŸÿÿÿÿÿÿÿÿÿÿÿþæÿá€õÿÿÿÿÿÿÿþ¤âŸkÿÿÿÿá€â_ÿÿÿÿÿÿÿþ¦ê «ÿÿÿÿà@Úßÿÿÿÿÿÿÿÿÿÿÿÿÿá€Î_ÿÿÿÿÿÿÿþ£¢œ›ÿÿÿÿà@¼ßÿÿÿÿÿÿÿÿÿÿÿÿ ïÿ်_ÿÿÿÿÿÿÿþ£òœ#ÿÿÿÿဨßÿÿÿÿÿÿÿþ¡š™Ëÿÿÿÿဥÿÿÿÿÿÿÿþ¢²šãÿÿÿÿà@£ßÿÿÿÿÿÿÿÿÿÿÿÿ/ÿလ_ÿÿÿÿÿÿÿþ¡êšÿÿÿÿà@Œÿÿÿÿÿÿÿÿÿÿÿÿ Ÿÿà@‡ÿÿÿÿÿÿÿÿÿÿÿÿ'¿ÿစßÿÿÿÿÿÿÿþ¥úœ›ÿÿð7777dballe-7.21/extra/bufr/bufr1.crex0000644000175000017500000000026413022043102013557 00000000000000CREX++ T000103 A001 D08003++ 44613 010 000 0 2004 11 30 12 00 6827 00968 ///// ///// //// // /// //// /// /// /// //// /// // // /// // // //// // // // 2809++ 7777 dballe-7.21/extra/bufr/temp-gts1.bufr0000644000175000017500000000253613022043102014362 00000000000000BUFR^ÿÿ Ù  €É4QRC_`a=…<# ßÿÿÿÿÿÿÿÿÿ¨ ‡“ìà‹‚Ö¶»¢2tˆ Ä?ÿÿÿÿÿÿÿÀ Ð ˆ Ñ*ˆ•DÿÿÿÿÿÿÐGs*ˆ•Da{];p Ð*9–Ñ*°•bÓW#UÃü/ ¨*²ˆ•h V+T¼Ð;¹Α*·¨•t£TSS¼,C|é‘*¸h•}›RƒQÜDM€- *µˆ•ˆPSO´La šPÑ*¯ˆ•ž»KÃJl`Ðw‚˜Q*¤È•²sF›EÔ|† È*H•¿;DƒC|xP½6ƒ€Q*lh•óÃ7{- PÓ  ¬ÊÑ*M–s/“%|ÄÚ ƒƒá*@ˆ– #-;#$àPò è8Q*h–Ë$sÌÐQ ¶Q)㈖Q)¥è–XC úøŒ¼‘B XÑ)›h–_K úòÈ‘G òiÑ)“–c[ZælÜQM Ó~Q)‡H–hzȼä#Qg ?…á)B薅㢲¤ì.‘|  Ä7‘(÷¨–œúúú²ý$7Ñ «IÑ(ßh–¡2ù*´=49QËF‡[Ñ'¤(–ëåʼ56ÖŠQ'xÈ–öâã*¬E6Q× Ž‘'th–ø2ââª6Ñä п‘'9è—ÊãJ—µDÒ &ˆXQ&JÈ—B*ߊ€]$TR òŠ‘%WªÝZzE0W’S c‘$|(—¤òк}5g¬í¨ˆ‹è—Xðk>T9q"e¬ëB@FRvjÿ¤ œxbòàŒ®\ó¬RñFa”¡¡Ð™ N`æRb`ÿÿÀÿÿð  ‚ ‚ ‚ ‚ ‚€@ÚüËÁøc‹ÁøKËòzMˆhYH$» ÄÏ“06|DŒ ä+°ë"iÊ•6œ©QQpmœ©QÜmœ©MÜm•ÝÆÚ V ¨¥`¦ Mâ \±ËÝ\°@±„B$B*ȵ¨#<-®s0ëÒsŒ“¡É>]’FËž,\ÂQáÌD¸à.xZe$~‡´¸<öàSdm/¹€3†–äÖC^+à‡ô–š…ák<€Â‘Ôæ[ôOYz¨Ä¾ñ?€-ÜN-¿ ^Ý}}-Ë\zØÊªÙY™×·Èx)àR7†ÖDE@2Ð<QÌ $D˜“b0QQ21eñ.£Hæ`x5)ìP*ŠÉ<Ī @H@?#˜€E°VdU´c·³²Uw%'%%×59Ô¤§ö·f¸€ˆáÂàU' ˜\„ÁEÉL¬Ë„OX(—!¼‰´©Eœ8ÀHòEÉ`ÁÒ¦“NmjsìÛ¯o Ä2EÜt6l+‡@¹`'žU+‚a$L{%ÐŽª(”;vŽ.†icX啺ŠLóx(Y@Ôc@Á#8ó†p#I÷˜Í¯±l«šÓ´¯¼üdéˆ l0eà‰&pHàR«Î¬°M‹ñ2Ê/QrhIîñIÍ0D­ `b¤áã#¢ƒ$k„—.‰U%©›Î%‰Tz>Â[;ß‹ƒ¹ÂG`pXÆiBȇò@ ’)r®wn«·¹ú§ô¶xàb¯µ$.3Yª‹Ò›@ÎÍOÐŒŠÊI'•-øm~ö€=VŽ—K©Ža4Ъf!a2 @PÀÔfP#…Êe<à•"é)\ÞÚE»mœÇ¤ÁäeN•—ÉÛ¥‡Ø«a8À$Luj׿’\¤Ñ¥b„éÓ¤N†‚1BçE0ÔáK^‘[±Í«õÃÛëõÏÁçE9›·?{žñZTšÎ”Nˆ¤ÄÆ¢²pDœµËÕ«¤Ý>„Í=òëDÍ{t}9ôh" ¹¨ˆñ!‰°ñàM1.jޱéÎ/R‰ÏÒgén±*M°díáC€†!‚ä%bH/ê»öÏNìãöæ¶làé Öów„v:ðƒGšL1,—d5•Dß±¹¥é†ÈÌWÌ!”é~(d“Úe—Ž!äîÂLƧc¹ck5ûÅÞëZ¹Y.Hu¥ Ñ\Tû-ºXUK¶›vÈL l&ÙqÇé÷xKö·I«Àitúê}ýŒžS°oË3^2C v£Å¾ãy( ¨WËÚúÚ—èí\-ÖìœùÎéfóÍi[Ÿ7Ãsü׿hׯó{·tp+ÛåÉx¯ Ì?.ĘÃ!¤*Šï±öÂHžû`äG†1V&C‰!Ø|‡q:Ãfã ×d åjùWl×:ý–Òëîù,†v«iÄè+7<½sd­æÕ j±J°Ã©ÌA„[Lß«<ß+¾JÒ«=ÅN"³ÄN¬»Ì™D˜B šв½‘Ï$L‘&J’ÊöFÀð<~¼êz¬æ(Ð "Èt>fЬ=Æ·ÁžºûI Î2Ž ó8¦ØÆ  C­1µ›G‚‚°•JÌTí™RØâ–£ì±¶†Ñ'dí#€Ahéʨ1Pqæ’ "}1)L¬ÛȪdù“ÈR§Ft`…ˆ :\x³„ËNˆé”ÈN5JÙˣΩbÕ‹¯ Àù gÉŽ€Á Í•(|ÉUF–.Dźæï¾y ð#$`„Ãmtq4ÎtPq3¤NXÕž˜©«$¾$°` !d‡udŠeuuPe¦.Y”·0Ï{ŸÂ&Xp•(áQ¢N“E)R#‹0œ‚D䔵LÕ£Æ DòŒJ⌘‡€¢"ˆ±§6ò«KI%Jܹo×Rƨ• Äò+ãHÏÌ#GoÌÅN˹Å{Ý>p¤öÅ€ö ?o³Òý4/8 KÐà „BŠ a† QÈ‚I$që¢Ûn@øî (€(@‚(¡€†`Åè$’Gº ¶ì/€ QÃŒ(†c( Žèrj¦ªË,’Ž­rÓ8( I$`¡Šac†j¨±©4ã-¸ãŠ·3µÛ†¸€àQøÄ’H Æ–8b²‹œ›n¶ã®¼«“=eÙo(Œ9`¡ iCˆ)Š&©É4ã­ºë«A€¼€`11Ña¡ññRò²²Róµƒu%Æèç(ÈY9ùÀøÎ Hd8`llPxŒŒx ˜¤˜¬¬¡É …ÕÍÚî4FÿÇ C# 2Xâ'‘!LBTMTºjÒ4ùs¯iÏ¯Ø ¸Ž @f“2\±ƒÇŽ8…3ç–¢d½K—žS¹sÀ@mÎsÎþrºÿ2Ã]´ËmrÂЫ}§e°ÐM"›qŒqä˘õÜ·n^ÅnÝ«vÍÚ´fÅqUN0@q‚D‡Ü#ãÇ—1Ëi›9~Õªöm\3b½zµJ&JXÙc#…‰^C€€„ 0‹kÙXºöÆ,5^ɫʖ°h½b”Èס6|ñ$Ì 8†tÔà… áVI1ÓEÙZÏ o‡lý¢”혨Rµj”ª•°X¡4 Ï:haBED„XÏ`h ‚  I ͉{7QYT=—×[ˆf`‰@r%Ó š€”Ødmk¤Ëå^`‚à ­×³1x×9BŒ·Ã}ÞÕ6°q^µŒÚ©Þ×›%ݺ´O³ƒú·Òháò3Ì&PP‰€L(`€Ù^# ]Ð \™£Ò2­ènºVõFôŒËæÏ<cD96>CG½:ÉFF;IÇÇ5:ÀAµº½7£#¨Ž Œ†€îR~¹¯ hÖa B7â(g™R.£H`åñze/*櫊’¤Æ±Ðšj$=9EÆÏD¹ÐMλOÎÎ4ºBF¶<À—8¡¡¨ „‰DR¦Î¯áØ0å‚„7 BÐ%¦©©b0¢È+™‡Þz±Ë…T»0#œÔ9ñøm¤FÈUWaVGàßaÈà__@ÄÏÖÂÈΣD(&/€•’nT Ó­b¸˜Ú!ChÔ>"ÃÐ2*iáj3 Ç`‡ƒ•¬ãÂÓN{œ}Øõ…uIòŽnÄQÓ]ál]TièëTéggÊK×^ËP×(˯­¸€&”¨¡œ“–T†Ò¯Âh¤îàÜ@Ÿcð3&iN0G …«³ôâVTÏ­^ÅÁ3È3ˆq^cåisaãímnáíeiÓÏZßPSØ1˺7D€2Ž3¬¨¨˜¡šU ½¹aØÃ2’Ãðè:”Ø*˜¨Æ EMÛ‹­kàáÑ|vW½à7­ÓBFà7777dballe-7.21/extra/bufr/obs2-102.1.bufr0000644000175000017500000000175613022043102014050 00000000000000BUFRîb€f  4f}Ky€EYèw+ÐLDWR îy˜‚y—F€ÉÄ–A A!€LDWR ÿÿÿþú–ózŽSø(g`£iÄa¿ÿÿÿÿÿ7ä` ¥kUÅP &褭jšÿÿü„H}µ7Rs(H ¾¥j7ÿÿñ&ÀSý=ÿþ"@_ÿÿÿÿøpBh€ ùNôh‚Ø)ÆÿþÚÂaåÎl$~gžùcÿÿú°Áasc%ÿÿÿR¨ P¶jcÿÿÿê ŠLìˆÿÿý8„\  i D5­!ÿÿÿÿóèì#÷ÿßá¤ma@øtZÿûè<  :Œ¿ÿÿÿù„Å@‘[ÿï ú.ዺ,ýô#¾ÿÿÿÿÿ¾„ˆœDw8Ÿÿ÷øs R…ÿÿÿòÿÿÿÿàh>‚g¼Lÿûü-Šÿÿÿÿÿ}@äÁãÑ[ÿÿÿÿÐÿÿÿÿþÃMŠÄ?ÿÿÿü]Ä@؉ÿø˜K ÿÿÿÿÿÁ$ÿÿÿÿå@#/ÿÿÿÿüœ „.ÿÿÿÿÿŒ°} ‡¼°Óÿò – ÜÿÿÿÿþDÿÿÿÿÿÉÂÐ.à_ÿÿÿÿùØP’‹Ïÿÿÿÿð¯™àïÿæÀðÈ/ÿÿÿÿüØKJ‚„ßÿÿÿøEà¿ÿÿÿÿô ŒÑ9¢ÿþŠ€æÿÿÿÿÿÍ‚¨`_ÿÿÿÿûnX€´|ÿ?ÿ^`Jžß×ÿÿÿþÀBô\ÿÿÿÿÀÈ@c—?ÿªÀA ï»ÿÿÿÿÄÿÿÿÿþ¨$@V†3a>ÏÿÕˆ=àÀ ÀÀ áà@çp8C‡páÀá8áÀÄp ÄhÑ£FbÄhÑ£F4¸Ñ£F4hÒãF”iQ£F.4hÑ¥Æ4¸Ñ£R*4hÑ¥Æ5(Ò£F\hÑ£K4iq£F.4hÑ©F•4hÒãFJ4¨Ñ£O4hÒãF>4hÑ£R*4hÒãFJ4¨Ñ£K4¸Ñ£R*4hÒãF.4hÒãF.4hÔ£J4¸Ñ£K4¸Ñ£K5(Ò£F.4hÒãF.4hÒãFJ4¨Ñ£K4¸Ñ£K5(Ò£F.4hÒãFJ4¨Ñ£K4¸Ñ£R*4hÒãF.4hÓãF07777dballe-7.21/extra/bufr/bufr10000644000175000017500000000027113022043102012615 00000000000000BUFR¶b€  4}Ky€H[%xÀ€€44613 ¶y‰¾yˆlF€È–A ÉA !LW"‚€õ-æ÷M(cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëäˆ4hÑ£F5›1£F4hÑ£F4hÑ£F7777¨ dballe-7.21/extra/bufr/ed2radar.bufr0000644000175000017500000001341613022043102014224 00000000000000BUFRÿÿ  <€ÁÁ Á ÁÁÁÁ!!!Í Á  ÕÁÉÁÂÇÈÃÄ´ H>¼'š†¥µ K~hL–öЙ(è@“¬ÿXµjÕË—/^½{ ±bÉ“&lÙ´hÑ£V­[6lÝ»w9rå˧N»vñãǯ^¾|ùû÷ïà@ P¡C‡$H‘"Å‹4hñãÈ‘"L™2eJ•.\¹“&M›6téÓçÏŸB… 4hÒ¥J:u*T©V­ZÕ«W¯^Å‹lÙ³jÕ«víܹríÛ·¯^¿~ýü0aÇ,XñãÉ“&L¹ræÍ›>|ú4hÓ§NZµkׯfÍ›víÝ»výû÷ðáÃ<¹rçÏŸN:uë×·nÝû÷ñãÇŸ>|úõëß¿>3]ß’FO€3b ÿþþ ÿà?àÿþþ` ÿà?àÿþþ  `àà Ýþ@ÀîÝþà`@ ?à1 Àt`vÀU`•`SÀ-``®à@ à Éþ¬ÆÈÞz ‹p \ W)¨ Éþ €  àà\@]`½àW¶€€S @O ó`°ï`Ø `[`Z`Z@:`W`` à¹þ&¼ Ò¾¦`> @\l êÔ´N¹þ` ` ?àÀWÀ7 À{ ›@Z€Y`– µ U1 Rà´š[|À`]@^ ]@Vu @ ?à­þ4oz¨¼Ê¼ Ò²„ DPZqŠœ°ÆÌfò¨ ­þ¡` ŸàNy`^@__ÀYÝ @Ü YÀ5 `Õ`QÀtÀUà V`7@x RÀ/ o /@ à £þ6Ô¬ü–²h 6<¸Êîð$£þà   ÿà L XÀ?À8À@úà¶ÀU @R M IN@‹€ `L € ÿà  ›þBDÎü Öt² ~j<âL™þ `à à`L W€Z€Wàw`4à`X ¹ ·ÀU– €T@NÀ@ _à$ ‘þP:ZB@.D N L L\‘þ`@€ÿà@MÀ“à-T@U`¶ ´`O@J@ßà(‹þfH N 4¨h‰þ  àààP`²`mÀ à,ƒþüƒþà `à ÿà0}þ}þ `ŸàŸà4wþwþ` `_à ?à8qþ qþ  `ÿà@ÿà<kþ,kþà `ŸàŸà@gþ4gþ `_à ?àDaþ@aþ` `ÿà@ÿàH]þH]þ  `¿àÀ¿àLYþPYþà `à@àPUþXUþ `?àÀ?àTQþ`Qþ` `ÿà@ÿàXMþhMþ  `¿àÀ¿à\IþpIþà `à@à`GþvEþ `_à ?àdCþ|Cþ` `ààh?þ„?þ  `ÿà`ßàl=þˆ=þà `¿àÀ¿àp9þ9þ `Ÿà àt7þ”7þ` `_à€_àx5þš3þ  `?àÀ?à|1þ 1þà `à ÿà€/þ¤/þ `ßà€ßà„-þ¨-þ` `¿àÀ¿àˆ+þ®)þ  `ŸàŸàŒ)þ²'þà `à@à'þ¶%þ `_à€_à”%þº#þ ` `?àÀ?à˜#þ¾!þ   `ààœ!þÀ!þ à `ÿà@ÿà þÄþ `ÿà`ßà¤þÈþ ` `ßà ¿à¨þÌþ   `¿àÀ¿à¬þÎþ à@@Ÿà `-@@€Ÿà° þÆòþ `Ÿà à´þÔþ ` `à@à¸þÖþ   `_à€_༠þ ÔÊþ à@`_à€O€-à@  _àÀþÚþ `?àÀ?àÄþÜþ `@@?à`Lr@ ?àÈþ^C˜qÙ+ƒänþ  @@àà2šÚ]ü_Ý@àÌþ^ËÓýùÛÅýÐànþ à€@ààxý  _À=  _Àw•/`@ÀàÐþ\!½Òü Ïý×wzönþ `@àÀw½ _Á¼]xWµsÑ@@ÀÿàÔþ^)ƒÚüË­¿y{Wlþ `@@ÿàšÞ{šÙ—ut‘±@€àNÀ ÿàØ þ`§Íçù­˜d E.ÞÈnxìêþ  `€ÿàW [€zzÙ V@Trà TÀL` ÿàÜþbQg¡Ÿ™“}yM1A j þ à`@ÿà€S WÁ6ÕuT2ñ1@@ßàà þj1k}{mWUC5?IO>ÐÎ` þ `@ßàÀò–Õµtt4ÔUóñM¤€ Oíà@ ßàä þn7[GE=MEQA?ä¾h–ò þ``@ßà“tóS TÁU’1NKà@Àßàè þp.4=A3/-#æÐb ¤¨Bð þ €@ßàБ’QtÓRòÒ1ÐÎn  %`  % @Àßàì þpû+A=5-üâäÄÖÚ@FÎz¨| Ü þàÀ@ßà nNp`O´ÓQñ‘ONŽN N M @ À  ¤È)« `Bä`@@A@'À@€ßàð þf-/= %'úôæäàÔâÚÚÈÐ@ºHLÆLLZH>B®`žä þ à@ßà`ÑòóÑPrQ°°11ŽîN®íMÍ­ @ @­ +  àk € J@¤%eÈì@ E@‰†  €&`@@¿àô þf-/7 %ûòäÎ¤ÈÆÔÐÄÚÐÒº ž$fœj”rXt~„ZnhF p8 €à þa@@ßà`2óqP’Q/o.î@ `(` €+@@KÀl Ë  @IÀ@Ià@C, €G` ‡)mˆèÊ)é E%£` @& @(@¿àø  þf ðâè° ðà"œ4(bv phJ€df^î|~Žˆ¦Ì†TdŽFzÖ þ À@ßà€cÍî  )À @æ@ÀGl )Ë«ˆLˆ‡E„A@ €$` @' @ `¿àü  þz°ÆNd´1(VpjTvØœ¶¼À¯ª€ØtŽrä þà`@ßà Àf@ @ àŠÄêÉL«î‹JLã¨à' @ ¿à þØ–J&¨¤PVp¢¨µÔØ€j¢¾ zâ þ  @ßà  (À à$   éåEÇ«ËJ«ÈiMéHà `'€@ à¿à þÊŒ p *J.d–¶¤–n†xŽÖâ¢.Ü þ`€@ßà €G`  %!$&舭h…Ɔ¥£`   $@ `¿à  þ̾ r LN”NbÂvt|†*€7777dballe-7.21/extra/bufr/obs3-3.1.bufr0000644000175000017500000003405013022043102013702 00000000000000BUFR8(þ  ´ÀÊ 80?€€þ € ÀI$’I$’I$’I%$’I$’I$’I$’m¶Ûm¶Ûm¶Ûm¶ä’I$’I$’I$’Km¶Ûm¶Ûm¶Ûm´PC!Lt%Kc\øFS¥m|g[ç@ …1Е-sáN•µñoD2ÇBT¶5Ï„e:Vׯu¾tÈS RØ×>”é[_ÖùÐC!Lt%Kc\øFS¥m|g[ç@ …1Е-sáN•µñoðN@ €@ €@ €@ €@ €@ €@ €@ €@ €@ €@ €@H€$Áªªªªªªª„Ì œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@œ@ÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÀÚÁAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁWÁ–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–A–@óTž_™‰J"^À3Ygž}ÂH¨êIÑÊpøTŽV¬VµŸÃ®Ù½…Zì_htë_½[Ý‚åâ—f‘¼ìÝôñP/ƒÔ1†b—"p*އàŒj$duÕ+ •4N=ž}l´@¤x6Iª>ÐV'êшW†jÃÑöZI´©=³ÚΓt/»¾GÞØýã˜'bBî®$,‘yoÀlqúM–$æ1ÕÓP4º¹&¹ý<9zQÝ‚˜÷õZªØ•gékÃgbë0Úv6ÛA÷º­ãQ€EÌÖáèï`øè(H±†M¸²}«§ø¨BÈ~RèSâœm,ýwh©ãJË*IU.’²›Úè0óµ˜í@9mñŽ¢]ló7Ö@ž`±WŒÃLƒÅdü¿-îù‘¯ÌÍŒ'ò"ïý"©!aEŠw‰4&¤5­7ÿ*f§XæHØPtË&6œW¶ð5Ǫ½4yã#îØ`u7 ¥xJÆëÆGJ’¶–™[ ä>ç±ß>‘ Ã;ŒìD”eו7ôkQPº–Êu«/Qm{¬5d²»Hã[Zã9÷\(¼ï5÷ØðAÕ†*ÜRocž %LYlüÍq&zæôBg¤r½'ªÐP6¥ÄÙå M[C‘0—ÞÁOÁÂÝm†3Á U¶„æ<¾Œ€ùù3²AµÄÄ7  ;¹,ÓP^´ÈT±¨…3…´G€öP ‡¢vøJp|¡Ùqb®ÃkFØÆ úÎB—/V™Ö!Ã\K^¥íi• Û– áòô?¯À‡+!ò^Ö¥ ¡ùŠ ¤A§Nˆ(ÐXðÀaÃvb¶!\FÄû6(¾R.¥ãO&¥Ý\êáv-\?½{‡4 à!0SÀÈAÏ ü+ˆ^0ÊÁ²Ã¡‡¿z‚%ª8T¨©ÐT¬)^ŽÌ¼Kј~À@ (/l󂄨 .$/èg`Þ“rç,ÎòŸ3A>ˆÍÚ_õ jÃW$²1mîó~!`!€yÔ `2Ðrá‚7Ü œ2 Ñi´sŽçpϘ ÉE*’…8*5¥ìQÛ(¼™ˆÍú1Fš —ª‹£ Õ8nËÝÂÑTy'Ì3¥MÕö%µyay>´rÿîT›h*R¤¬Ì0׸ŽËØÿÂQ,o%K³ MVEÃ~ã™þÏÊùÃùbmŸèúx«-Ì+4×8N«ÐýÁ±g#Ës… OW¥ç‹g»gJ*剪z¢)bˆ­. #0շ΋ÆûA0ìc#K³­UY7f)¡ïP¸CFQ΀£I‚Œ­-Ì (Ó·.c¾ùÀðìg%Ì´ AaÝxÖ¦BáP¦¹Þƒ#‰‚ˆ«­KëÑ6ÎK¼ùÁ1 w+ÎÔÕ…xåaáçÛȸ“séÍګá/w_Y¿‡€¿æÌ0~q;âýÇ›&nXLÉùÌôé]Õm±;q·pÔíçÜE¹mt’ì}ß›Ì7²o™_œÀã^< dÙÞ)]#¢<²+Ê$^_…ÒH_qs…œHâÓ R±03Ö‹´"dm1KBäø4¡ÂMP “ÍÞy• SekãBŠò ·J B†6#ªáë!>Õtµ: «ÑáE 2ÐÇÀÐ @U,!ú©mÞö_A”UnÁýÈm"«"8¸ïU[Zm2C-È¢ˆT!Ck Xà.[È? qÂQ€†|/¡^×µ!ñ‘‚S.£ÔÐ q†  @¸À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `Àuqv¥I>ø°âm ê%h—â?‰è!¡x1 Œˆ¿¥Ö2 P¯Åš.‘ù)Æ©Žn•ra!7D¡‹Ú)¸ÈsÌ*ºaÔhÂê°ÖB4™²Š-j©R)71‚ÎÚa ä*U Ñ8†¤—T°ÒB¯ ’%Ð`Á´‹:&X<@?ˆôÉ3¶r¯Æ pŒKT$¼@²ÃŽÊ=tã[QVy Í…Ü)8šý°èaÁâê@G~¼ '”—jhEÜ Î?)Ä%Ñ(“É›ˆÆ RhÖª t hpCžx-€~WCî2Ð<®·ãI©³Õ»äeùŒ_ñ–ŸŠœ™ÿ¤,‹.š‚!‡bhD £‚ КNßj‚j Vjž¯B§ô“1öFë#À…cÀ @€p€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€RŒÕò-ÕB(é3ÙQ æI"Bpw‚X5ÔŠÁ\‘]á§¹ÉP‹ÕÔ($á ›X+?XÁ%9¦4Ð…­/ ,‡òIÂŒ‹¸`'L«”ÜÒ$: `ê¶HB1—èÃäÃ(i_..Z«5—¤3ÌDµ(ÖIÄA ­x: †bÃÿ]^^W'Ä¿Êhj+…˜Òv(;U|mzeÊ¡ÎìSBj¸Nþ¸Ôƒ< ÐIœÐ}j6]ºò\1 Ê.nrî€îÆk¹½©Éú:Z P?Ñ— ´CÙ ÀCR@‘¨êTzbØLÃǺÍïy{ÀÛ„íÆy£@Ȇ% ðì2A X €G )ÉÁÂõŒ8i%·R‹Sšû—ʽùïÏ%|Xµ°a¨ÃP®0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À00‰T Qà?‡ßãŠvL©œ(Cg/¤Ž?S# ¤¹!äX“ðð£´zQ¸9§LÎô{˘ãkb>µœI ÓRˆ}¦D>TGP`„¼æžô2n ±Ô.e½#,¦ŒÀ"¼Kˆý£ÀN‡CÔá ‘Të '+Å4µÔb4d,3sˆx ÙŽ/%x¤’2<Ø«bXcæ|x  1Éqr®Å®ŽM' Ðkf 5jÀ0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À×’Ä)6>I‘z³Gñ_ô#‡±:ÇYƒ ¢äˆ–Aõ¾GXÛXÚ©?%lbA KÏ2pZ¬9Ã:·ïâ¬UˆQVSÎiÍ#£C÷~ïõÒ¶Æt¯)nÀHs¼—›%mNë@ˆiâ3=XX™Ízà(*†a˜¦†^GQ½k™uÅ;R”¥I3ᬩ=‘ÅexkÇéú~¡˜†!ˆaeÜ|ÛÖ™—ZT¤q3I@%Ƀ#RXvñÌxá&‹âˆF€_'ÄkWõEAHÒ4 Bш˜?%ùi^¨ñ|bx¾/‚ æpÜ6•ŽV$ô?À|MÊ#3XWùä|߸jŠb(ió„Ÿ7q¾b),CNsøþ ÅaÐÁ;ÒUiiÝWÒ„¢˜Š"†¢(-ô~ÚvAyRÑÓ€ç=ÎÀ6€€ 5 àÀ0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `¾i zb7,UmsÒô€¾ŸOH 6ô€½ÐØ<~KJ®B¡±9`ú¢c9\¯x¿b¨‰ï {¿^09¥‚$‡…E´òÁªíz@ È”%+†C$±ˆJôz@%sÙ¸´N?% •«6éû ŠÃä3ItºC(ŠÆá/×ëÁ¼ð‡Î£br1`°‰S³nX|&E@‘K¦’éu]„ÃÝoÃaï.‡“ s* hÓx¼b)tÖE5ÍeYtZ! {·ÚlËö ÌvÀÃP† \`À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `X> l¤lÀlÀlôˆ¤¤Àˆ‰(ÙÙ•E•²¢nŠÚŠ Ḭ̀||`ÌÍ98é±Uéé¾õÚFb²–°Ä©L¨üÅMüÅdýM0Å11Míîuº ªv )}aÙ`õE)}a)E}}Ía•••±a~ÎRnR¾¼õyya)EEa±yyÉ•a•±Éa±É•yaÊ9ÉÊRn½ÁÁUU9qU9õqÁ¥Ù¥Á¥ÁÙÁÙÙÚ}ÁÂ.~P ˜í€†  @¸À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À±úBÉh1™i˜ii0É0iÉɘ™j2úb2bÊÚªx¨@áyA¨@àáxy©Ùy©zzÚª©BBÛAQºé!‰Q¸‰QQ!Q‰P¸é‰¹QººRRºR„RZðùYY)YÀùYññ‘ZYñ)òÁÁ“‰óZ*Z+"S‚±Q!±‚Q!°¹S!²‚SêIêRR³:8Ú;Ñq ¡ÑÙÑ¢Ñr::¢:¢j£:ÒÒ¡r£œÀ1Û @€p€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€iȘ+mb•.šÈÄñx€J3Š…D˜à‚ —Iäò¡ÐÖgF9" År¤âU&Èãè˜ 4ˆƒñY0¼cRÇÑy6®f™©ÊTÖA'ŒÇƒ€à€$£1™ž‚AŠucF a©ÓÇD¼Ì<‰EÃÀ¤.D¦²)ôú§3)Ò 7ûi†ÇLžFòÜ’‘FäRI8\X’KÓyÌðJ-cpDÂaV2•Ë„‘±\œ6 ÁòqH®R0Æ£qáhìœf;`a¨ÃP®0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0.§”ð;+:“–ÄÑlW‘…yã°Þã B‘Bi ˆÊ^¢6®Ë'IYDÄðæHâDcÐØ6 ä@ôY™z€£¬I ¶É²B‚šf)|PŽáð¶"(¦8 c¹BFeñ {H*z”2OÃ8§)Ç’:N”„±:N"xÊ6B°Ê6 ¤±d@’ÅѬ|šËËú¶ªRNz•‘>Œ!xÞ>†Ãxì4 c°Š>¥Àbæ‘ê·4íKR­¦%ɸgà r2ãÈ€Q…cX*Œ„pÈ.’§Ádq£Š£©@ÌvÀÃP† \`À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `a–*{p…tûJc8×&E¡hQ …DH †1h‡$“]-½É“ã‡y—6Ñ´¥'±À: ‰10(D1T ÎÒÜä;R³ÙO_éÙÜwÄíJOÓwqÜA"D¡‰È’$¬/‹ã@ýWÐö”%Gé³ZÍ3ÜÊ'Œ|ž)ÄÑ V2Œ¡|D Êrä¹)ÒE­>_`9º`mšÔy0/4à&Ó8ÅhkÆ1 ¡/DU0WX¥½õšbw¡†D•@ èz Éà_, ’ •7¡|Ó;ŽäµHZÞ‰v ˜í€†  @¸À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `À0€ `ÀËØTK0éZ¬˜€ ñÐqjQzd“&ánk&&yVIŸHû|±ÿþò…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÿêSÿ€èÿÿÿÿÿÿÿÿÿþþÿþþÿÿÿþ"i`(}ý¦ÀÆé“`{ÿÿ~ÿßÿÿÿÿÿÿþÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿtÀ\©±´62¹»´³/¾bŒä@zBtàIÀO÷AÄ ?ÿÿÿÿøCY X¾?ÿòXÿÿÿÿþïÿï(PÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸþ¥?ø~ÿÿÿÿÿÿÿÿÿàéÿïéÿÿÿâ'ö‘7ßÚX®™ÿÿ÷èÿýÿàj¿ÿÿÿàÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿ÷LAº3+Ck “qûæ(ÀnD3$q `ûà­´A#ÿÿÿÿÿ€d5嵺^ÿÿ2ÿÿÿÿÿÿã?óÿÿ€‚?œ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ýJðýÿÿÿÿÿÿÿÿÿÀ2Ò?ÿßÒ?ÿÿÿÄOí,¿¿´°2X ¿ÿïÑÿûÿÿÿÿÿÿÿÀ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿþ€ÿÿî˜ ‰4†Ö'W&rÔgV†Ç6'VWGFVÅ÷ÌQ€Û*·Hy†Áj ¨=ƒÿÿÿÿÿÈk?kÁÿþ]ÏÿÿÿÿÿÌŽAE ‡`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþú”ÿàú?ÿÿÿÿÿÿÿÿÿ€d?¤ÿ¿¤ÿÿÿˆŸÚljºe¿ÿߣÿ÷ÿ®ÿÿÿ€ÿûôÿÿÿÿÿÿÿÿÿÿÿÿü?ÿÿÝ0@Jlmì®M-Ä¶\¸’P{‚>“òPa ÿÿÿÿþÖ~ÕçÿünŸÿÿÿÿÿŒÿÂÿþþ@?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþdÕ©ÿÀôÿÿÿÿÿÿÿÿÿÈHÿÿHÿÿÿÿ?´Ø >þÒÀ@tÊ 9ÿÿ¿Gÿïÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿÿÿÿø ÿÿº`$€ .Ü™ZYœÝØ[ß1Fo)'Úøh n/ÿÿÿÿü!®¬FçÿùE?ÿÿÿÿÿ8„ ( ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿ¨ ÿ€èÿÿÿïúÿÿþþÿþþÿÿÿþ"jPýý©@lé–€\ÿÿ~ÿßÿÿÿÿÿÿþÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿtÀ<d"¶²2·¾bŒÖWÂ;`lÈP¯B¬ ?ÿÿÿÿøC`‹^]ÿÿô!ÿÿÿÿþïÿï(PÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸþ¥?ø~ÿÿÿÿÿÿÿÿÿàéÿïéÿÿÿâ'ö‘—ßÚDî™,ÿ÷èÿýÿÿÿÿÿÿÿàÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿ@€ÿÿ÷L`G“+k+qûæ(Àm"a¤­`ü~¥ 4(Acÿÿÿÿÿ€d5൪]ÿÿN'ÿÿÿÿÿé‡0Èú…‚d@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ýJðýÿÿÿÿÿÿÿÿÿÀ2Ò?ÿßÒ?ÿÿÿÄOí,Ÿ¿´Ø Ý2l ßÿïÑÿûÿÿÿÿÿÿÿÀ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿþ€ÿÿî˜`äæWW'W–â÷ÌQ€Ú ÃIŒÔB#)ù¨„ÿÿÿÿÿÈkßk_·ÿþAÿÿÿÿÿòá3ÿÿ? /ád8ü5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿûÿ€èÿÿÿïúÿÿþþÿþþÿÿÿþ"j}ý©@vé” <ÿÿ~ÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿð¿ÿÿ^ÿÿ€ÿÿ•$†ææ÷fW"÷ÌQ€Ùb*H[<8Á*hM…ÿÿÿÿÿÈk]jÚ·ÿþœOÿÿÿÿÿåŽÁž5 † àÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþú”ÿàú?ÿÿÿÿÿÿÿÿÿ€d?¤ÿ¿¤ÿÿÿˆŸÚDÿiºeÿߣÿ÷ÿÿÿÿÿÿÿ€ÿûôÿÿÿÿÿÿÿÿÿÿÿÿü?ÿÿÝ0@-)¬,쌬N®Lä±©è’*y„¦^SâP_ ÿÿÿÿþ×ÒÖßsÿü’ßÿÿÿÿÿäÿÂ'ÿþ þ˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒïû¿ø~ÿÿþÿ ÿÿàéÿïéÿÿÿâ'ö¥ßÚ” Ι,ïÿ÷èÿýÿÿÿÿÿÿÿàÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿ@€ÿÿ÷LLJcKs#+s+“9ûæ(Àl¥j¡7@tñ´@cÿÿÿÿÿ€d5̵£ÞÿÿGÿÿÿÿÿùp¥¾‚ã ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ôÂðýÿÿýÿ@ÿÿÿÀ2Ò?ÿßÒ?ÿÿÿÄOìúï¿´ 1à_ÿïÑÿûÿÿÿÿÿÿÿÀ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿþ€ÿÿî˜@™GVW76VÆF÷&b÷ÌQ€×™»G? B!Áj¨v‚GÿÿÿÿÿÈkýkF±ÿþÚÏÿÿÿÿÿÙ2e H ÂPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿRŸü?Gÿÿÿÿÿÿÿÿÿð ‡ô€ÿ÷ô€ÿÿÿñûH€{ïí"wL›×ÿûôþÿÿÿÿÿÿÿðÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ ÿÿû¦8§U1•¥Á饜½!…±±”€€€€€€}ó`5óýÒUY ¥ðS®wÚ àSÿÿÿÿÿÀ2íÚÞ0ÿ’Ãÿÿÿÿÿüƒ¸@—ßQÂN8Iÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø]ÿNwÿÑÿÿÿßôÿÿü!ý ÿýý ÿÿÿüDþÓ`4ûûKMÓ#Íÿþýÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿߣÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿþ逈)èDresden-Klotzsche _|Å uÄž•(0ü´œ‚8ÿÿÿÿ𠆵6°Ëÿÿãèÿÿÿÿÿÿ î å÷À PpnŽ€?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþDÓ™ÿÀôÿÿ÷ýÿÿÿÈHÿÿHÿÿÿÿ?´ þþÏ 7tÈp5ÿ¿Gÿïÿmÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿº`"€ ~“Y\˜\™ËP˜\ÙZ[\ˆß1FX°¹#øI¬¦¡Öÿÿÿÿü!«½©Ïÿú|¿ÿÿÿÿÿÿˆÿüü@€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÈÿ±ƒÿ€èÿÿÿïúÿÿþþÿþþÿÿÿþ"jð}ý­ é•àaÿÿ~ÿßÿÿÿÿÿÿþÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿtÀC&²´·4·3²·¾bŒ³Õ¢Dü!4§L1BT ÿÿÿÿøCXkRoÿùBÿÿÿÿÿ_ÿ¿ÿø-ø… ÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ>?ì`ÿàú?ÿÿûþ€ ÿÿÿ€d?¤ÿ¿¤ÿÿÿˆŸÚ€ßjP.:e(?ÿߣÿ÷ÿÿÿÿÿÿÿ€ÿûôÿÿÿÿÿÿÿÿÿÿÿÿü?ÿÿÝ0ÀO¨ÎL-ÍlήN…é¬--Ä «STÔ›áBv3ïÐÅÿÿÿÿþØ^ÕM3ÿýôÿÿÿÿÿCœÊÀ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿõ)ÿÀôÿÿ÷ýÿÿÿÈHÿÿHÿÿÿÿ?µ( þþÔ Mtɰ1ÿ¿Gÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿº` € «RÙˆß1FXeá$Ǖىq%~ åý?ÿÿÿÿü!ª}©*÷ÿùdÿÿÿÿÿÉÿ‚¿ÿü ü„ÿ„ ãðšÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ‹þÆþ£ÿÿÿ¿è_ÿÿøCú@ÿûú@ÿÿÿø‰ý¡ÀA÷ö‚‹¦Agÿýú?ÿÿÿÿÿÿÿøÿÿ¿GÿÿÿÿÿÿÿÿÿÿÿÿÿÀ`ÿÿýÓÜUĦèêèèÎÂäèZŠÆÐèÊäÈÒÜξùŠ0sãéÛˆxx=Ù3õ ¯Ùÿÿÿÿÿà tmE³?ÿîáÿÿÿÿÿýÜ<Çï€@Áä'W€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü*ÿ¦ÿ€èÿÿÿïúÿÿþþÿþþÿÿÿþ"i}ý¥€¢é’ Qÿÿ~ÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿtÀ9}§:²¹712¹3/¾bŒ¦ëG ªäM}BSø_ÿÿÿÿøC\ËS%ÿõÜÿÿÿÿÿ`w ³{à$@U Æ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ?éÄÿàú?ÿÿûþ€ÿÿÿ€d?¤ÿ¿¤ÿÿÿˆŸÚŸh #:d`ÿÿߣÿ÷ÿÿÿÿÿÿÿ€ÿûôÿÿÿÿÿÿÿÿÿÿÿÿü?ÿÿÝ0ÀbŠnŽL.¬M-Ìä§«’éUSµSDЖýÿÿÿÿþÕŽÓÕWÿý“ßÿÿÿÿÿ€ûÿûÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿ©Oþ£ÿÿÿÿÿÿÿÿÿøCú@ÿûú@ÿÿÿø‰ýŸ@-÷ö‚¦Aûÿýú?ÿÿÿÿÿÿÿøÿÿ¿GÿÿÿÿÿÿÿÿÿÿÿÿÿÀ`ÿÿýÓœV¨‚êÎæÄêäÎ@@@@@@@@@@@@>ùŠ0g iÕȆ˜D0U /Ðÿÿÿÿÿà emE4ÿÿуÿÿÿÿÿýü"ÿà`—á'üFÿŠÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸö.ðýÿÿýÿ@ÿÿÿÀ2Ò?ÿßÒ?ÿÿÿÄOìúO¿´ Ý2ÿÿïÑÿûÿÿÿÿÿÿÿÀ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿþ€ÿÿî˜@»$¶V×FVâ÷ÌQ€Ò&&H›be‚°ÙA¨e~GÿÿÿÿÿÈjYi¹³ÿþ¯ÿÿÿÿÿëÿá‡ÿÿÿ A?â ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæGýŠŸü?Gÿÿÿпÿÿð ‡ô€ÿ÷ô€ÿÿÿñû€3ïìxLU¿ÿûôþÿÿÿÿÿÿÿðÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ Àÿÿû¦ˆ7777BUFR®Nߟ€ÇV±ACAÂ8C!):=AÂAÂC6 Z  *D *O    CK6?íª£)""ªª)¡¤"!*¡¤*¾bŒà Ò<EÿÿÿÿÐBt?ÿÿÿÿÿÿûfËaÏÿÿñôÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ûÿ¿Gÿðÿÿÿÿÿÿÿÿÿÿïéÿïéÿÿÿâ'ö–ßÛÿÿî™ÿÿÿÿ÷èÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ€ÿÿÿÿÿðAbb*ªB¢¢ª’iZJ*aûæ(Àn>¨$J ÿÿÿýÔÀãÿÿÿÿÿÿÿµÇµ•ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿ¿ûô÷ÿÿÿÿÿÿÿÿÿÿþþÿþþÿÿÿþ"hp#}ý¿ÿþéŸÿÿÿÿ~ÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿüxÿÿÿÿÿÿ%´²¶¤7¶:2·0º¾bŒâgZDEx®\P!A¤?ÿÿÿÿøCY X&/ÿóâÿÿÿÿÿþïÿï(PÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸþ¥?ø~ÿÿÿÿÿÿÿÿÿàéÿïéÿÿÿâ'ö‚çßÚ0n™ÿ÷èÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿ@€ÿÿ÷L`BÚ “[{s ûæ(Àna¦$å!@Š ûô Bÿÿÿÿÿ€d5ǵ°áÿÿ8÷ÿÿÿÿÿã?ðqÿÿ€‚?ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ýJðýÿÿÿÿÿÿÿÿÿÀ2Ò?ÿßÒ?ÿÿÿÄOí@/¿´Ø]2” ¿ÿïÑÿûÿÿÿÿÿÿÿÀ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿþ€ÿÿî˜À‡æ÷&FW&æW’÷ÌQ€ÛIžGdŽÁÊhU€ÇÿÿÿÿÿÈll·ÿþ1ŸÿÿÿÿÿÀ}ÿýå ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù¹ÿV§ÿÑÿÿÿÿÿÿÿÿÿü!ý ÿýý ÿÿÿüDþÓ`MûûMmÓ(Áÿþýÿ¿ÿÿÿÿÿÿüÿÿߣÿÿÿÿÿÿÿÿÿÿÿÿÿà0ÿÿþ逦(ƒCuxhaven |Å ¸{TÄØ¤ â„x$ÿÿÿÿð †Æ¶¾«ÿç`ÿÿÿÿÿüßÿÞP ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ýJðýÿÿÿÿÿÿÿÿÿÀ2Ò?ÿßÒ?ÿÿÿÄOí"¯¿´ˆ2X ŸÿïÑÿûÿÿÿÿÿÿÿÀ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿþ€ÿÿî˜àŠ¥&÷7Fö6²Õv&æV×VVæFR÷ÌQ€ÜcIEÝAù ($…ÿÿÿÿÿÈkÁkw¿ÿþ>ÿÿÿÿÿÆŽ ê H@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþú”ÿàú?ÿÿÿÿÿÿÿÿÿ€d?¤ÿ¿¤ÿÿÿˆŸÚl _i°,ºeÿÿߣÿ÷ÿÿÿÿÿÿÿ€ÿûôÿÿÿÿÿÿÿÿÿÿÿÿü?ÿÿÝ0©Ž¬¬m îä´Q*‘Ó…„‚ ”Ðmÿÿÿÿþ×ÕçgÿýÿÿÿÿÿŒÿ¯ÿþþ€?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþdØ=ÿÀôÿÿ÷ýÿÿÿÈHÿÿHÿÿÿÿ?µ(þþÔ 6tÊ7ÿ¿Gÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿÿÿÿø ÿÿº` € BX\›š]ˆß1FjÅ$Ýk eÂg¸ šÿÿÿÿü!®e¬×ÿùõ¿ÿÿÿÿÿ¯ÿ„ïÿüü'ÿ…Ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™öðýÿÿýÿ@ÿÿÿÀ2Ò?ÿßÒ?ÿÿÿÄOíTÏ¿µP]2Ð ÿïÑÿûÿÿÿÿÿÿÿÀ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿþ€ÿÿî˜`Åv&Vâ„×VW&—G¢’÷ÌQ€ÚþZI~ûNÁ"Ùòè†ÿÿÿÿÿÈk­k ³ÿþ”¯ÿÿÿÿÿòá/ÿÿ¿ GápÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæGýƒßü?Gÿÿÿпÿÿð ‡ô€ÿ÷ô€ÿÿÿñûPkïí@·L¯oÿûôþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ À=ÿÿúíÿÿüÿÿÿtÀ)‘ ·3²¹6º²·22/¾bŒÑýÂP4¼åO“@|?ÿÿÿÿøC\{ZUÿÿñÿÿÿÿÿw±ûà.0…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøUÿL'ÿÑÿÿÿßô/ÿÿü!ý ÿýý ÿÿÿüDþÐ@ûûAÓ!Àqÿþýÿ¿ÿÿÿÿÿÿüÿÿߣÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿþé€N);Muenster/Osnabrueck _|Å Žy›´"ü­ Š†X(ÿÿÿÿ𠆺6¯Ë?ÿéÄÿÿÿÿÿþÀî&÷À H€˜Œ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿõ)ÿÀôÿÿÿÿÿÿÿÿÿÈHÿÿHÿÿÿÿ?´`þþÐà tÉ`$ÿ¿Gÿïÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿº` ^ÔÝÙ[Hß1FeÅ&–ï eá'› b ÿÿÿÿü!®Ý®[ÿø¯?ÿÿÿÿÿÈ;ƒy=ð€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿ¦+ÿ€èÿÿÿïú?ÿÿþþÿþþÿÿÿþ"i}ý¤@lé Hÿÿ~ÿßþ ÿÿÿþÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿtÀ0¾¡"©&$§¢ ¤&"¦#*”/¾bŒË²MèõÿÿÿÿÏc@´_ÿÿÿÿÿÿû^[]¿ÿÿòîÿÿÿÿÿw‘ûà(8= Æ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ?éŠýýÿÀÿÿÿÿþÿ ÿ¿¤ÿ¿¤ÿÿÿˆŸÚXoÿÿºgÿÿÿÿߣÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿûôÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÀ/ÈL®M-ŪŒ¬ì­„ ³r“{¢„B"ôÐ1ÿÿÿÿþׂ×M‹ÿüúÿÿÿÿÿØÁ¤~ø  q‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀOúa?ø~ÿÿþÿ ÿÿàéÿïéÿÿÿâ'ö‘ßßÚ0Ιïÿ÷èÿýÿÿÿÿÿÿÿàÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿ÷L L+“cKqj£+kƒ+cC{1ûæ(Àl±®¤ãvaŒTût ÁEÿÿÿÿÿ€d5ôµÄÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿûÿ€èÿÿÿïúÿÿþþÿþþÿÿÿþ"i}ý¡Àré@Aÿÿ~ÿßÿÿÿÿÿÿþÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿtÀ.Í"¹¹²·¡92²2·2¼¾bŒ¾’:”v| ½OkC”?ÿÿÿÿøC_ëYÅÿömÿÿÿÿÿÿ_ÿŸÿø/ø…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÔ§ÿÑÿÿÿÿÿÿÿÿÿü!ý ÿýý ÿÿÿüDþÔûûPÙÓ&À…ÿþýÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿߣÿÿÿÿÿÿÿÿÿÿÿÿÿà0ÿÿþé€F)«Kahler Asten |Å vȤ~r,`Ì1)‘ÿøü&€Ÿ †›–™ ÿýú?ÿÿÿÿÿÿÿøÿÿ¿GÿÿÿÿÿÿÿÿÿÿÿÿÿÀ`ÿÿýÓ˜SæŽÞÊäØÒèô@@@@@@@@@@@@¾ùŠ0ì®éKĈc°1ù7•¯Éÿÿÿÿà n-Wö?ÿÉaÿÿÿÿÿþAà Gï€@˜á(0€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüzÿ¦ÿ€èÿÿÿïúÿÿþþÿþþÿÿÿþ"g€}ýž|é Dÿÿ~ÿßÿÿÿÿÿÿþÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿð ÿÿÿtÀ.ü °±´2·§¹9±0±´¾bŒ¶ºB7³¦ ZηD?ÿÿÿÿøC]k[ÖÿòYÿÿÿÿÿ_ÿÿÿø)ø8  ¡¿áÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿRŸü?Gÿÿÿÿÿÿÿÿÿð ‡ô€ÿ÷ô€ÿÿÿñûKoïí6gL–ÿûôþÿÿÿÿÿÿÿðÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ Àÿÿû¦x¨-½•±¸µ ½¹¸€€€€€€€€€}ó`5¼NÙFP™ÀNz`‘ÿÿÿÿÿÀ2ZÝ+ÿÿ®ãÿÿÿÿÿû¸Xß1‚ÀN0 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø ÿP'ÿÑÿÿÿßôÿÿü!ý ÿýý ÿÿÿüDþÒÀ+ûûKõÓ%€›ÿþýÿ¿ÿÿÿÿÿÿüÿÿߣÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿþé€téP #´²¹¹²·«²º:2·12¹3¾bŒ´TZ?² ‹ ÍNÁC?ÿÿÿÿøC[‹Sµ?ÿû ÿÿÿÿþgÿÿø%ø±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù‘ÿ`÷ÿÑÿÿÿßôÿÿü!ý ÿýý ÿÿÿüDþÑ€ûûH€©Ó&ÀUÿþýÿ¿ÿÿÿÿÿÿüÿÿߣÿÿÿÿÿÿÿÿÿÿÿÿÿà0ÿÿþé€:* Wasserkuppe _|Å fd‡Q g43Æ£ÿøÿü&€žÐ †—Ö—ÜŸÿã ÿÿÿÿÿÿ ð £÷À``\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòkþ ïþ£ÿÿÿ¿èßÿÿøCú@ÿûú@ÿÿÿø‰ý©A÷öÿÿÿÿÿÿÿÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿GÿÿÿÿÿÿÿÿÿÿÿÿÿÀP"Pÿÿÿÿÿþ**Erfurt-Weimar _|Å qöäˆD7ð4šº„ ÿÿÿÿÿ𠆵6¬+_ÿéÄÿÿÿÿÿÿ î ÷À\€¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÛþ Oþ£ÿÿÿ¿èÿÿøCú@ÿûú@ÿÿÿø‰ý¦À÷ö› ¦R›ÿýú?ÿÿÿÿÿÿÿøÿÿ¿GÿÿÿÿÿÿÿÿÿÿÿÿÿÀÿÿýÓ0ñ ®øPtÈ+ºdÀFèì®L%©Œ®­­Í.D­ï~’•+ñƒy³UP_—ÿÿÿÿþÖ~Õ‰sÿý&Ÿÿÿÿÿÿ×ÿÁ×ÿþ ~‚Â0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏû?ø~ÿÿþÿ ÿÿàéÿïéÿÿÿâ'ö‘¯ßÚD .™ïÿ÷èÿýÿÿÿÿÿÿÿàÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿ@€ÿÿ÷L R3KC£+c+“9ûæ(Àk#i$ÍŽãð!ø”O¿ÿ¿'ÿá4è€d4}´xcÿÿWÿÿÿÿÿüEÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿübÿ§#ÿ€èÿÿÿÿÿÿÿÿÿþþÿþþÿÿÿþ"hp=}ý¡Á>éàÆÿÿ~ÿßÿÿÿÿÿÿþÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿtÀ’7777dballe-7.21/extra/bufr/crex-has-few-digits.bufr0000644000175000017500000000033413022043102016305 00000000000000BUFRÜb€  4}ŠtHá:eCÔ16206 Ütºt€Ç  –A1 A1!n g/±N€T=BG Ð^s‰Î`KE¹tŸòî‚€˜U™r"¸F0„ C!?ÿÿü_ÿð hÑ£F4hÏ<›>4e€#R«5XÕjU«V4hÑ£F4hÑ£F4`7777dballe-7.21/extra/bufr/generic-bug20140312.bufr0000644000175000017500000000021413022043102015534 00000000000000BUFRŒÈÿÿÞ4€ÂÀÀÁÀÁ e!À!Á !À!Á!Â6generic @_xF3˜¬¥>€€8AáU™æUO2Œ7777dballe-7.21/extra/bufr/issue52.bufr0000644000175000017500000000143413022043102014034 00000000000000BUFRŠÈÿÿÞ2€ÂÀÁÀÁ e!À!Á !À!Á!Â6generic }á@Íþ`Hz°”ú"á„ Vg™U<Ê07777BUFR‚Èÿÿÿÿÿÿÿÿÿ€ÂBgeneric ÿÿÿÿþšò@ÄÊÂêèÒÌêØØ@æèÂèÒÞÜ@@@@@@@@@@@Íþ`Hz°à7777BUFR‚Èÿÿÿÿÿÿÿÿÿ€ÂBgeneric ÿÿÿÿþšò@ÄÊÂêèÒÌêØØ@æèÂèÒÞÜ@@@@@@@@@@@Íþ`Hz°à7777BUFR|ÈÿÿÞ(€ÂÀÁÀÁ e f2generic }á@Íþ`HÜX”ú"á„ Vlô 7777BUFR|ÈÿÿÞ(€ÂÀÁÀÁ e f2generic }á@Íþ`I>”ú"á„ VlÙ7777BUFR–ÈÿÿÞ8€Â e f!À!Á!ÂÀÁÀÁ e f!À!Á!Â<generic }á@Íþ`IŸ¨¬Ù²Fd4 Ð  j³fÈ=7777dballe-7.21/extra/bufr/gts-synop-linate.bufr0000644000175000017500000000035013022043102015746 00000000000000BUFRèÿß €ÇV½ (&¤¦ §'—¦$§ ª"/¾­˜uo‚A¡²Ø ÓN_=LÿÿÿÿøC‰Ë/ð ƒèd[ÿþ0qñ(P"0¾ü?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñþ¿÷èÿïÿÿÀ2Пÿÿü!ý ÿýý ¼ì£þÍÀ ûûÿÿÿÿÿÿÿþýÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿߣÿÿÿÿÿÿÿÿÿÿÿÿÿà7777dballe-7.21/extra/bufr/C23000.bufr0000644000175000017500000000423613022043102013307 00000000000000BUFRžb€e 4e}§VàDÉ`kˆ03882 žX&F:€ÉD = >–A A!—A A—ÿ¹(£í:·­þ ‰’ÀÄþÿÿÿý¾sˆÀ;0²3ÀNH§f–CÿÿùÄy,êÉ?ÿÿ80@ežY/ÿÿæÀ '³k!dôÐK6mdÿÿ™pÿÿÿÿýÂR÷lYeŽÿÿþ\`_ÿÿÿÿ÷¨(Kxe–3ÿÿù`ÍlªÄÿÿÿ(`¥“WÛÀ$|±êöÿÿüˆ‰–9\ÿÿ‰¢Æ«¡êýEXÅxÿÿþ?_ÿÿÿÿ÷¨4¨Ñ¥Æ4øÑ£F\hÑ£K4¸Ñ£F—4iq£F.4hѧÆ4hÒãF\hÑ£R*4hÑ¥Æ4¸Ñ£K4iñ£F4¸Ñ£F—4iq£FJ4¨Ñ£F—4iq£F.4hÑ¥Æ|hÑ£F.4hÑ¥Æ\hÑ£K4¸Ñ£K4iq£FJ4¨Ñ£F—4hÒãF\hÑ¥Æ4¸Ñ£F—4hÒãF\hÑ¥Æ4¸Ñ£K4iq£F—4hÒãF\hÑ©F•4hÒãF\hÑ£K4¸Ñ£F—4hÒãF.4hÑ¥Æ4¸Ñ£R*4hÑ¥Æ\hÑ£K4iq£F—4hÒãF\hÑ£K4iq£F.4hÒãF”iQ£F.4hÒãF\hÑ¥Æ|hÑ£FJ4¨Ñ£F—4iq£F.4hÑ¥Æ\hÑ£O4hÑ¥Æ\hÑ©F•4hÒãF\hÑ¥Æ\hѥƔiQ£F.4hÑ¥Æ\hÑ¥Æ4¸Ñ£O4hÑ¥Æ\hÑ£K4¸Ñ£K4jQ¥F5(Ñ£F”hÑ£FJ4hÑ£F¥4hÑ£F4`2/ÿÿß¿~ýûÿïÿ¿~ýû÷ïÿ¿~ÿû÷ÿß¿þýÿ÷ÿÿ¿~ýûÿïß¿ýÿ÷ÿß¿þýûÿïßÿ~ÿûÿïßÿ~ýû÷ÿß¿þÿÿ÷ïÿ¿ýûÿÿß¿ÿÿÿ÷ïÿÿýÿ÷ÿÿ¿~ýû÷üˆ((„Óñ€zÀDÀ%€¸ j“ ÀŒàH(xÌ œ‘‹Ý€ÀMˆ*ô êŒHA®â`v¨<@†çµr0Âha°2Š Þ‡C­¡æQ€…CÊ"rX»DoâR4¤,S*¨ø E­"öq€ÚÔn^9WÙfH ¢N‘I¾4ir7777dballe-7.21/extra/bufr/ecmwf-amdar1.bufr0000644000175000017500000000024213022043102014775 00000000000000BUFR¢b€  4}È 8Fvlœ°EU0068 ¢"ÊF€Ë–A A!8EU0068 ﹤ÉË3°±€ í:Ÿÿÿÿÿà hÑ£F͘ÓãF4hÀ7777dballe-7.21/extra/bufr/temp-2-255.bufr0000644000175000017500000003255013022043102014155 00000000000000BUFR5hNÿÿ Ù  ,-9€Á Á ÁÁ P‚‚       5 }œ VZáÕ(, ø Jº€‡T °xÓy#z°*ï5ˆ¸uJ c7$ ë&¯îƒl€S‡T °Pf¡À²+ø7è¸uJ †5Âk°pƒ€€£‡T ° PS!±+8H ¸uJ ¥4’ë°q‚€ó‡T ° P?":°«8(¸uJ Ê328k°2‚C‡T ° °($A’¯êÿ 7ȸuJ ï1ÊPjú¯²x“‡T °`%AÒ¯*ó 7(¸uJ 0\*î®òpã‡T  ô¦Aò®ªë 6¨ ¸uJ E.Šl *ꮲj‚3‡T   ’Û§‚®*ã 6(%¸uJ p,êˆ"êꮲl‚ƒ‡T  pÀ©‚>®ªë 7H*¸uJ š+Z¬$êò¯2€‚Ó‡T  À«+ÂV¯j÷ 8ˆ/¸uJ Á)êÐ%ë°ò°ƒ#‡d  PR’®b±« ¸vJ @%K #«&²r脇d  %E³.³+3 @hC¸vJ m#£8!ë:³²„c‡d °(R.´ ³ë? BH¸vJ œ!óDk>³ò&„³‡d °+4AÞ´kG CM¸vJ Æ {@kF´r6…‡d °- ü3Á®´«K CèR¸vJ ôÛ4«J´²F…S‡d °0Ðß2Ž´«K DhW¸vJ $+kF´rF…£‡d °3ưÁŠ´kG D¨\¸vJ Q“+F´rF…ó‡d °6P®¯Á¢´+C DHa¸wJ z *økB´2D†C‡t °9P“¯Æ³«; Cèf¸wJ ­bô+6³r8†“‡t °<{/Ú³+3 Ck¸wJ Ùâì«&±p„†ã‡t °>àb.AÚ²+@p¸wJ JÜ«°°ƒô‡3‡t °ApL-Ú±k?u¸wJ (*Ô«°q‡t °C€9­Ú°«>èz¸wJ Iä«°1ƒì‡Ó‡t °EÀ&/AÚ°*ÿ>ˆ¸wJ oÃk¯±ƒäˆ#‡t °Hp1Aú¯ê÷=È„¸wJ Ÿ# êö¯1ƒÜˆs‡t °K`Põ²®êï =h‰¸wJ É»"*æ®rΈÇt °Mðß±‚®*ß <(ޏwJ ó S ªÚ­²¾‰‡„ °PpÊ0ú­ªÛ ;È“¸xJ  ã*Ò­2¶‰c‡„ °S´0ê¬êË:¨˜¸xJ D ¢üjƬr¦‰³‡„ °U°¯â¬*à :(¸xJ t øªº«²˜Š‡„ °X°„/AÒ«j· 9h¢¸xJ Ÿ¢ôª¶«r”ŠS‡„ °[@n¯AÆ«*³ 9(§¸xJ Ì"ðj²«2’Š£‡„ °^@U¯Âªê¯ 9¬¸xJ ÿzì*ªª²ŽŠó‡„ °aP<.ªj§ 8¨±¸xJ 0âäꢪ2„‹C‡„ °dp"-Á¾©êŸ 7趸xJ XšØêš©²z‹“‡„ °fÀ-ÁΩ*“ 7»¸xJ ƒ:àjލòn‹ã‡„ °ipù. ¨ê 6ÈÀ¸yJ ªþòô#*Ѝ²hŒ3‡” °kÀæ0V¨j‡ 6(ŸyJ ÎýÓ'j‚§ñƒZŒƒ‡” °mðÔ0‚Чê{ 5ˆÊ¸yJ ðü»)jz§²TŒÓ‡” Àp Ã0Bš§jw 5ϸyJ û£)ên¦òJ#‡” ÀrP±0Bž¦ªk 4HÔ¸yJ 6ú‹)ªj¦²Bs‡” ÀtpŸ°Â’¦*c 3ÈÙ¸yJ Zùc'ê^¥ò6Ç” ÀvÀ2j¥ª[ 3(Þ¸yJ ~øC(%jV¥r.އ” Ày{³B¥jW 2Èã¸yJ ¢÷#4#jR¥2,Žc‡¤ À{@Oi³‚.¤êO 2hè¸zJ Çö4"ªJ¤²$޳‡¤ À} V²Â&¤jG 2í¸zJ ìôÛ$"jF¤r‡¤ ÀàD±B.¤*C 1ˆò¸zJ óÃ#ê:£²S‡¤ À‚ 3/ÂV£j7 0è÷¸zJ 4ò¢ø&ê6£r £‡¤ À„`!¯Â‚£*3 0ˆü¸zJ Yñ‹(ê.¢±ƒó‡¤ À†Ð1’¢ª+ 0 ¸zJ ‚ðC)j&¢rþC‡¤ À‰€ù1Â’¢*# /©¸zJ ²îÓ)*¡²ò“‡¤ ÀŒá±Ž¡* .© ¸{J Üí“(ª òâㇴ ÀŽðϰBŠ ª -é¸{J ìK(ª rÜ‘3‡´ À‘й°ÂŽ * -‰¸{J 7êÓ))úŸrΑƒ‡´ Ð”à¢1‚šŸió ,©¸{J eés)éòŸ2ȑӇ´ Ð— 2šž©ë ,)¸{J ŒèS$))æžr¾’#‡´ Ð™à|²‚Šž)ã +É$¸{J ¯çC(()Þ±‚°’s‡´ ÐœNl2‚~©×*É)¸{J Ôæ3 'éÒ2¬’Ç´ ÐžÀW±‚‚)Ë*).¸{J ä«()Êœ1‚œ“‡Ä Ð¡ð@0‚†›é»))3¸|J 3ãc(iº›q‚Ž“c‡Ä Ð¤°+0Š›i«()8¸|J _â#(鲚±‚‚“³‡Ä Ð§@°B’š©§'é=¸|J ŒàÛ)©¦š1‚|”‡Ä Ðª°Bš™é›'iB¸|J ·ß›)©š™q‚r”S‡Ä Ð¬à ï/š™i“' G¸|J âÞbü)©’˜ñ‚l”£‡Ä Ð¯  Û/ž˜©‡&IL¸|J Ý*)†˜1‚b”ó‡Ä Ð²p ưB¦˜)%éQ¸}J ;ÛÛ*©~—±‚\•C‡Ô Ð´ð ´°B¦—is%IV¸}J fÚ£)ér–ñ‚P•“‡Ô Ð·°  °B–—)o %)[¸}J Ù{(én–±‚N•ã‡Ô Ðº Œ0†–i[$ `¸}J ÄØ'©^•±‚B–3‡Ô à½ v¯Âr•©W$ e¸}J ñÖÂü&©R”ò:–ƒ‡Ô àÀp b/‚f”éG#)j¸}J ÕŠô&iF”1‚0–Ó‡Ô àÃ@ N¯Bj”i?"Éo¸}J KÔBð&é>“±‚(—#‡Ô àÆ@ 9¯n“©3" t¸}J {Òúì&i2’±‚—s‡ä àÉ %®‚V’©#!Iy¸~J §ÑÂà$i*’1—Çä àËÐ ­B6’) é~¸~J ÓÐ’Ì"éñ˜‡ä àÎpM¬‚6‘i  Iƒ¸~J ÏZÌ$) ñø˜c‡ä àÑ@ í-BV(û)ˆ¸~J *Î:Ü&¨öŽ0ܘ³‡ä àÔ0 Ù.Bzލnpɸ~J XÍì(hÞƒäV™‡ä àÖà Æ¯‚(&0‰’¸~J €Ëêô'¨Æ‚dH™S‡ä àÙ@̶¯‚f‹è (‰—¸~J £Êúø%(¶#<™£‡ä àÛ@ ¨¯‚F‹'ú(霸J ÍÉâô#订.™ó‡ô àÝÐ —/FŠgþ0 ¡¸J ôÈÚð%(žc.šC‡ô àà „¯b‰¨HI¦¸J Dzì'(–¤0š“‡ô àã p®ÂvˆçöH髸JMÆ‚è'hŠ~c&šã‡ô àåÀ b.‚rˆ§ê@‰°¸JoÅ¢ä'(Š€&:›3‡ô àèP P®r‰¨2ˆɵ¸J™ÄŠà'¨šƒi^›ƒ‡ô àë >®~‰h2麸JÍÃ2ä'节(R›Ó‡ô àíÐ ,®B‚ˆh€鿸€JïÂRè(¨‚hLœ#ˆ àð ®B–‡¨ˆéĸ€JÁbà*¨v€èHœsˆ àò  -¾†§ÎH ɸ€J>ÀRÜ-(^{cœÃˆ àõ` û-Ââ…gÊPéθ€Jj¿2Ü.hR|æ"ˆ à÷À ì-Âæ„§]èIÓ¸€J”¾"à.h>uŸäcˆ àú@ Ü.Bæƒç† ©Ø¸€Jµ½Rä.¨6wa€ò³ˆ àüÀ Ë®BæƒgŽ0 ݸ€JÞ¼Jä-¨:|§$žˆ àÿ ½.ʃgÊ€iâ¸J»jÜ+¨2|' žSˆ á€ ­-®‚§¾xéç¸J+ºZÜ+(&{gž£ˆ á œ­ÂÆçžhéì¸JV¹Jä-¨yf žóˆ á ®Bê€g6 ‰ñ¸J{¸bè/'þr ÔŸCˆ á ~.‚îg& )ö¸J¥·Zè.§òr`€ÒŸ“ˆ á p o.BògV8©û¸Jʶrä0göv¥öŸãˆ$ á ^.C&'r`ª¸‚Jõµjà4gîv%ô 3ˆ$ áÐ M-Ãb~§^X*¸‚J"´ZØ7gâueî ƒˆ$ á ?-ƒ‚}ç^`* ¸‚JE³‚Ø8gÖtd€æ Óˆ$ á€ 0­Ã†|çFPЏ‚Jn²‚Ü7çÆräÞ¡#ˆ$ á0 -ƒv{ç.H 긂J•±’Ô6§ºr¥Ü¡sˆ4 áÐ -^{'H j¸ƒJ¾°’Ð5g®ræÞ¡Ãˆ4 áP ¬ÃJzg&` 긃J믊Ì3çžpd΢ˆ4 áð ð¬Ã.z'X Š#¸ƒJ®šÌ1çžr&€Ü¢cˆ4 á"€ á¬Ãy§` ª(¸ƒJ?­ŠÌ1'’q&Ö¢³ˆ4 á%0 ѬÃx§P ê-¸ƒJh¬šÌ1§†od€Ê£ˆ4 á'ÀŠÂ,Ãx&öP Ê2¸„J«ªÐ2'zoe€Ì£SˆD á* ´-wfòX ª7¸„J¶ªÊÔ1gnnæÈ££ˆD á, ¥­ƒvfê` Š<¸„JÚ©úØ0gbo'Ê£óˆD á.  ™-‚úuæîp ªA¸„Jþ©"Ô.çZnç€Ê¤CˆD á1 Š­æu&æx ŠF¸„J'¨2Ì-çJn(Ƥ“ˆD á3€ |¬‚Öt&Úx *K¸„JO§JÈ-g>mh¤ãˆD á6@ l¬ÂÞsfÒ€ P¸…Jw¦ZÐ.§2miÂ¥3ˆT á8 _-Bþr¦Æ€ ÊU¸…Jœ¥ŠØ1'*k瀸¥ƒˆT á; P®"r&¶x jZ¸…Jʤ‚è2çkh¸¥ÓˆT á> ?¯2qf¶ˆ Š_¸…Jõ£Šø3'k(€¶¦#ˆT á@À 002p¦ªˆ *d¸…J#¢ƒ3'j©´¦sˆT ñCPJ!°Ã6oæ–x Êi¸…JL¡› 3æöh§¨¦Ãˆd ñF 0ÃFnæ†x jn¸†Jx £ 4æêh(¦§ˆd ñI °ÃVn&~€ Js¸†J§Ÿ› 5fÖg( §cˆd ñKà ñ°ÃVlæj€ êx¸†JÓž£5&Æe§˜§³ˆd ñN€ â°ƒJkæ6Pê}¸†Jþ³4&¶c%Œ¨ˆd ñQ Ô0C>jæ*Pª‚¸†J%œÛ3æ¦a¤†¨Sˆd ñS°‰Æ0ƒ>j&@J‡¸‡JQ›ë 4&žbfЍ£ˆt ñV ¶1Fif*pÊŒ¸‡JšÛ4¦ŽbgЍóˆt ñYp ¦±CNhf"€ª‘¸‡J¬™ó5&~`怄©Cˆt ñ\ ˜1RgeòPÊ–¸‡JÕ™ 5fr_%€|©“ˆt ñ^À ‰0CZf¥ò`Ê›¸‡J˜"ü5¦b_&€~©ãˆt ña  z/ƒ^eåòpê ¸‡J/—*ø6&V_h€ª3ˆ„ ñdp j¯ƒfdåòˆꥸˆJ^–2ü6¦F^è€~ªƒˆ„¡fð ]0rd%êˆꪸˆJ…•c7f:^)|ªÓˆ„¡i€ O°ƒzceÞª¯¸ˆJª”› 7¦.]©z«#ˆ„¡l B0ÃrbeÖŠ´¸ˆJד«6f]*x«sˆ„¡nÀ 3°ƒZaeΠй¸ˆJ’»4¦\ëx«Ãˆ”¡r "°>`eθо¸‰J;‘šü3eú\¬x¬ˆ”¡u` /C._%¾ÀJø‰Jo’ð2eê\-€v¬cˆ”¡xp .Ã^%¶ØJȸ‰J¡Šì1¥ÚZí€r¬³ˆ”¡{°ð.ƒ\å®è*͸‰JÓŽ‚è1eÆZ¯r­ˆ”¡~Àஃ[å¦ð Ò¸‰JŠè1e¶Yïn­Sˆ”¡‚ Ï.ƒZå–ðÊ׸‰J<Œjè1%¦X¯j­£ˆ¤¡„ðÀ®ƒY¥‹ªÜ¸ŠJa‹²è1%’X0h­óˆ¤¡‡P´®ƒX僊ḊJŠÒè2¥‚Wp€f®Cˆ¤¡Š§.CBWåjøJ渊J·Šä6%vV°€d®“ˆ¤¡ŒÐˆ™.C‚W%g*븊Jä‰à:e~Vo€d®ãˆ¤¡ÀŠ.CÆXeZÐ ð¸ŠJˆ*ä>%ŠQ¦R¯3ˆ´¡’°ˆ{®ƒþXä©Èêõ¸‹JE‡:ìA%ŠB”€.¯ƒˆ´¡•àl.Ä&XcÙJú¸‹Jt†RðCe~: ¯Óˆ´¡˜^¯BWã¨ð ÿ¸‹J…’ðD¥z9Ï °#ˆ´¡šàS¯RWã¨ð ¸‹J¿„êðE%z:€ °sˆÄ¡œðI¯RWãñ(‹ ¸ŒJß„JðE%~D×2°ÃˆÄ¡Ÿ?¯NWä]ˆk¸ŒJƒªðD¥vF™€6±ˆÄ¡¡05/JW$m ‹¸ŒJ%‚úôD¥nFš8±cˆÄ¡£p*¯DJVd] k¸ŒJH‚RôD¥bF€6±³ˆÄ¡¥  /DJU¤Y¨k¸JlªôDeRD™€4²ˆÔ¡§ð¯DFTäM¨K"¸J‘€úôDeJF6²SˆÔ¡ª  ¯DFT¤øë'¸J³€ZôDeBI €@²£ˆÔ¡¬@ˆ¯DFT$ž ,¸JÕºôD%6I¢@²óˆÔ¡®pö¯DBS$š  1¸ŽJ÷ôD%.Ha>³Cˆä¡° ì/DBR¤zË6¸ŽJ~rôD%"G €<³“ˆä¡²àá¯DBQ¤zË;¸ŽJA}ÂôD%Gâ<³ãˆä¡µ ×/DBQ$†0ë@¸ŽJd}"ôDe Hd>´3ˆä¡·p̯DFP¤†@ëE¸J‰|zôD¥Gc<´ƒˆô¡¹ ¯DJOär0ËJ¸J¬{ÚôDäòF£:´Óˆô¡»Ð¸¯„NNäj8«O¸JÎ{:øE$êEã8µ#ˆô¡¾®/„VN$V(‹T¸JõzŠøEäâCá4µsˆô¡!À€£/ÄbM¤2KY¸JyÚüF¤ÒBá2µÃ‰¡!Âà˜°rLä&+^¸J@y3GdÆAà€0¶‰¡!Å@‡°DvLd ø c¸Jgx‹G$º=›€*¶c‰¡!ǃ0DjK#•x+h¸JŒwãFd®6Õ€¶³‰¡!Éày0„ZJc-(«m¸‘J°wCEdž,η‰¡!Ì0n°ÄNI¢l° r¸‘JÖv› Dd–"I ·S‰¡!·d0ÄBHâ ˆËw¸‘JýuëCäŠ!‰ ·£‰¡!ÑY0„>HbL¨ë|¸‘J#uCC¤‚$Ê€·ó‰¡!Ó`O0„:G¢H¨ë¸‘JHt£C¤r$‹¸C‰$¡!ÕÀD°„:F¢D°ë†¸’JqsóC¤b#˸“‰$¡1Ø@9°„>E¢<°ë‹¸’J™sCDdV$‹€¸ã‰$¡1Úà.0ÄJDâTÈ븒JÁr“ DäF% €¹3‰$¡1ÝP$0ÄRD"PÈ땸’Jéqë Ed>$͹ƒ‰4¡1ßÐ0ÄZC¢\Ø š¸“JqC E¤6%Í€¹Ó‰4¡1â 0ÄZBâdà Ÿ¸“J4p£ Eä"% €º#‰4¡1ä€0Ä^B"Tà뤸“J[pF$$Žºs‰4¡1æðú±bA"Tè멸“Jƒo[F$ $Ž€ºÃ‰4¡1é`ð±^@"@è뮸”Jªn³Eãú#N»‰D¡1ëàæ1^?b0à본”JÔnEãò#»c‰D¡Aî Ú±f>b@øë¸¸”JmKFãÞ$Ѐ»³‰D¡AñÎ1~=¢I뽸”J0lƒH£Ò$€¼‰D¡AôPÃ1D’<¢=븕JWkãIcÂ#€¼S‰T¡Aö¹±D–;â9ëǸ•J{kSIc¶#‘¼£‰T¡Aøà°1D–:â5ë̸•J j»Icª#€¼ó‰T¡Aû0¦±Dš:b5ëѸ•JÇjIã¢"Q½C‰T¡AýÀœ1„¦9bëÖ¸–Jïi{JcŽ$T½“‰d¡R ’±„ª8¢E@ Û¸–J hÓJã‚"R€½ã‰d¡R ˆ±D²7¢(ëถJ <h;K#v Q€ ¾3‰d¡R1D¶6áýË帖J dg£K£f  ¾ƒ‰t¡R€t±DÂ6"(Ë긗J ‹gLãV’€ ¾Ó‰t¡R j±DÚ5!ù(Ë︗J ¶f[NcJÓ€ ¿#‰t¡R °`1„î4aý8Ëô¸—J äe£Oc>“€ ¿s‰t¡R°T²þ3añ@Ëù¸—J!dó$P#. ¿Ã‰„¡b`J2E 2¡ñHËþ¸˜J!<dK$Q#T€ À‰„¡bð@2E1¡åH̸˜J!ec«$Q#U Àc‰„¡bp62E0¡åX̸˜J!‡c#$P£€ À³‰„¡b.2E /ááXÌ ¸™J!¬b›$P¢úÖ Á‰”¡bÐ%2… /!Ù`̸™J!Ðb(PâîV ÁS‰”¡b²….aÑ`̸™J!òa‹(Q"âÖ€ Á£‰”¡r 0²…-¡Å`̸™J"a ,QbÖ€ Á󉔡r"p† 2Å,áÁhÌ!¸šJ"8`ƒ,Q¢ÎW ÂC‰¤¡r$ ²Å,¡ÁpÌ&¸šJ"\_û,R"ÂW€ “‰¤¡r&Ðû²Å"+¡½xÌ+¸šJ"~_{,R"¶W€ Â㉤¡r(ðó²Å"+!±x¬0¸šJ"¢^ó,R"®— Ã3‰´¡‚+0ë2Å"*¡¥x¬5¸›J"Æ^k0Rb¢W€ É´¡‚-€â³&)¡€¬:¸›J"ê]ã0R¢– ÃÓ‰´¡‚/ÐÙ³*)!¥ˆ¬?¸›J#]S4R¢Š Ä#‰´¡‚2PгE&(a¬D¸›J#7\Ë4R"~Ù€ Äs‰Ä¡’4È3…'¡™˜¬I¸œJ#\\C8QbvY€ ÄÉġ’6𿳅'a•˜¬N¸œJ#[»LË£Š¡ÂoÐü³ƒ# `¸L¼¸¡J'O‹80"F‹€ËóŠ¡Òr@õ3Bî$ d°LÁ¸¡J'8O0."JJ€ÌCŠ¡ÒtÐí2‚Ú$`0˜LƸ¡J'bN‹$-bBH€Ì“Š¡Òwpä±ÂÒ#ßôxL˸¡J'ŽN ,â=ýÌ㊡Òz@„Ü1Ò#ŸÀh,и¡J'»M{ -b5ü€Í3Š¡Ò|ðÓ°‚Þ#Äp,Õ¸¡J'âM.¢1ûÆ€̓Š¡ÒPÌ0Bö"ß°h,Ú¸¢J( L‹0"-ú†€ÍÓŠ$¡ÒÐ݃"Ÿœ`,߸¢J(3L 1"%úÎ#Š$¡Ò„¼±C"œh,丢J(^Kƒ1¢)ú€ÎsŠ$¡Ò‡`´2C#¸h,鸢J(ŒJû,1"-ú†€ÎÊ$¡ÒŠ0«3C"ß°h,J(ºJs¸¤J+|B³0$"…òCÔŠD¡ò¹0'²‚F'ß0-C¸¤J+ªB;($¢yñÃÔcŠD¡ò»Ð ²ÂN'ß0-H¸¤J+ÔAÓ4%¢…ðÃÔ³ŠT¡ò¿ 3‚b'ß0-M¸¥J, AC<&¢yðÃÕŠT¡òÁð´n'Ÿ 0-R¸¥J,4@Û<'"}òÃÕSŠT¡òÄ  ³Ân'ß(0-W¸¥J,`@c4&¢óƒ€Õ£ŠT¢ÇP3Bj(D8-\¸¥J ,Š?û0&âyóÀÕóŠT¢ÊCü3v'_ 0-a¸¥J ,¶?‹8'¢õƒ€ÖCŠT¢̰õ³Â~'ßT8-f¸¥J ,ä?H("uòÃÖ“ŠT¢Ð ìµB‚'Ÿ0-k¸¥J ->‹d'¢qñCÖãŠT¢Ó°ä7Br&ß0-p¸¥J -W=û€&bqï‚€×3ŠT¢×Û¸ÂZ'ß0-u¸¦J -Œ={”$b‘òC׃Šd¢Ú€Ó9B6)_0-z¸¦J -Â<ó”""‘ð‚€×ÓŠd¢ÝÐË8Â(ß0-¸¦J!-û·ú(^ü(-Þ¸§J"1ç3»tbï€ÞŠt¢# 87€Ò'Þô(-㸧J"23Sx ¢yð€ÞcŠt¢##`1·@Â'ø(-踧J"2O2ãp bqï‚€Þ³Št¢#& +6ÀÊ'^ð(-í¸§J"22ƒl âqïB€ßŠt¢3)Ð$·€Ò'Þð(-ò¸§J#2¹2ˆ ¢ðÃßSŠt¢3-@ºâ(<8-÷¸§J#2í1«¸byóƒ€ߣŠt¢30€¼'_ 0-ü¸§J#31KÔ"mñßóŠt¢33Ð>2&ß0.¸§J#3T0ãè¢qïB€àCŠt¢36ÐC ?2'ä(.¸§J#3‡0ƒô"qï€à“Št¢3: ¿ '^ô(. ¸§J#3½0ôbuí‚€àãŠt¢3=`þ¾Àê&Þ¸ .¸§J#3ï/»Ü"iì€á3Št¢3@°ø<Àæ&À(.¸§J#4&/SÀâYìB€჊t¢3D Bñ»€ö%^À(.¸§J#4\.ë¼â]ë‚€áÓŠt¢3GPë¼Àþ%Þ¨ .¸§J#4.“äâ]êÂâ#Št¢3J å¿Á%Þœ .$¸§J#4É.$¢Uë€âsŠt¢CNpÞÂÁ%´(.)¸§J$5-¼8¢Mê€âÊt¢CQÐØÄ%¸(..¸§J$55-\@bMê€ãŠt¢CTðÓCÁ$^°(.3¸§J$5l,ü8bEé‚ãcŠt¢CX`ÌÂÁ#žœ(.8¸§J$5¢,œ$â5èB㳊t¢C[ ÇBþ"ÞŒ .=¸§J$5Ñ,Dâ)ê€äŠt¢C^ ÁÂ"ž˜(.B¸§J$6+ì$¢%éB€äSŠt¢CaмBÁ"œ(.G¸§J$66+”4"!èB€䣊t¢Ce¶CÁ*"¤(.L¸§J$6j+<<â%êB€äóŠt¢ChP°ÃÁ*!Þœ(.Q¸§J$6›*ä<"ê€åCŠt¢CkP«ÃA!Þ¤(.V¸§J%6Ó*Œ(âêB€哊t¢So¥B Þ(.[¸§J%7 *,b ê€åãŠt¢Sr0B A !^È0.`¸§J%7:)Ü¢ìæ3Št¢Su@šÂ!Þ¨(.e¸§J%7l)„$âê‚€惊t¢Sx€•B !ž”(.j¸§J%7§)$,bèB€æÓŠt¢S|ÂÀþ!Þ˜(.o¸§J%7Û(Ì0¢!ê€ç#Št¢SpŠC€ò"Þ (.t¸§J%8(|8"5ì€çsŠt¢S‚p…CÀî#¸(.y¸§J%8A(,@")êB€çÊt¢S… €D@ú"^œ(.~¸§J%8t'ÜHâ)é‚€èŠt¢SˆÐ{Eþ"ž”(.ƒ¸§J%8§'„Xb-é‚€ècŠt¢SŒuÆâ#^œ(.ˆ¸§J&8Û'4d b-èB賊t¢c qF€®"Þ„ .¸§J&9 &ìl â1é€éŠt¢c’pkÆÀž#ž (.’¸§J&9B&”l b5ë€éSŠt¢c• fÆÀ¶#¬(.—¸§J&9t&Ll "1êB€飊t¢c™BaÆ@Î# (.œ¸§J&9¨%ü\ b)é€éóŠt¢c›Ð]ÄÀÖ"ž (.¡¸§J&9Õ%´@ â)ëB€êCŠt¢cžàXÀÂ"Þ¼(.¦¸§J&:%l4 ")í꓊t¢c¢TC@¢#¸(.«¸§J&::%4 "-ë€êãŠt¢c¥0OÀŠ"œ(.°¸§J&:r$Ì<"è€ë3Št¢c¨°JD@~!^|(.µ¸§J&:¥$„D¢éB€냊t¢c¬EÀv!^”(.º¸§J&:Ý$, " è‚€ëÓŠt¢c¯@@Àv l(.¿¸§J&;#ì"æBì#Št¢c²P<@À– žd .ĸ§J&;?#¤ â ç€ìsŠt¢cµp7Â€Æ žh .ɸ§J&;l#d0 b æ‚ìÊt¢c¸ 4CÖ Þ|(.θ§J&;—#$0 âç€íŠt¢cºÐ0BÀ¾!p .Ó¸§J&;Ä"ä$ " çB€ícŠt¢s½Ð,B@ª!(.ظ§J';õ"¤$ bê‚€í³Št¢sÀà'ÂÀ¦!ž˜(.ݸ§J'< "d8 ¢è‚€îŠt¢sÃ@$Ä@ª!^x .⸧J'ä!åä‚ñ#Št¢sáðûÊFD /¸§J'>:œ¸ááå€ñsŠt¢så`÷Í€:žd(/¸§J'>p \ì¡ÝæB€ñÊt¢sè°óN€:žd(/¸§J'>§Ð¡Íä€òŠt¢sìïJ:ž0 /#¸§J'>ÝÌ`áÅâBòcŠt¢sïpêÃJ^$ 7777dballe-7.21/extra/bufr/simple-generic-group.bufr0000644000175000017500000001601013022043102016566 00000000000000BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈ[˜\™]È € 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ[ˆY]›È[ˆ™[È=ÙÙ[™\šXÈ A3<˜Si0~7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈ™\™ÚX[›È>YÙ[™\šXÈ A3!P[¸ ˆ@7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ[ ÐYØ]H›ÛÙÛ™\ÙH?YÙ[™\šXÈ A3aÏ:ŸÀ‚ 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÛÜ\›È?ÙÙ[™\šXÈ A3wk’K# }P7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÛÜœ™YÙÚ[È@YÙ[™\šXÈ A3f…R1ŠÀ‡P7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ]œšXYÛÈ@™Ù[™\šXÈ A3aFR+#Pš°7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ\œ[™]H@ÙÙ[™\šXÈ A3&¡ÒV40 P7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈ]™^ž›ÛHAÙ[™\šXÈ A3T÷’K±0~7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈY^ž›Û\˜HÙÙ[™\šXÈ A3U´RD ƒ@7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ[ Ð[Ûš[ÈÙ[™\šXÈ A3UwRHù`€7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ\Ý[Ø[ˆY]›ÈÙ[™\šXÈ A3FÒE©@ 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXțܛZYÚ[™HYÙ[™\šXÈ A3SÄÒ4߀™ 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈšX™[ÈYÙ[™\šXÈ A3€E’"Å †°7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ\Ý[›Ý›ÈHÛÝÈ™Ù[™\šXÈ A3o«’,Éà„07777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ\œ[™]HÙÙ[™\šXÈ A3LbR+2@7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈ[ÛYš[Üš[›ÈÙ[™\šXÈ A3>’-ááB€7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈY]™HHÝ\ÚYÛ˜[›È™Ù[™\šXÈ A3j&’žÓ7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈZ\˜[™ÛHYÙ[™\šXÈ A3txÒ7{à‚ 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÜÝ[]È™Ù[™\šXÈ A3cÒL×À}ð7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈ™YH˜Y[ž˜HÙÙ[™\šXÈ A38âM£Ð‡7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÝ\Ù\˜ÛÛHÙÙ[™\šXÈ A3!óÒOàä 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ[ˆšXÛÛÉÈÙ[™\šXÈ A3ƒ¢Ò¦ð’@7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ\Ý[^ž›Èš[[›ÝˆYÙ[™\šXÈ A3×Êà‰Ð7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ[ˆ™[XÙHÝ[[˜\ˆÙÙ[™\šXÈ A3n›’:( ‚7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈY[HØ[H›ÛÙÛ™HÙ[™\šXÈ A3[=Ò>-ð„Ð7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ\ÜÛÈ[Ü™[HYÙ[™\šXÈ A3FèRI‚ð7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈ[ܘÚX[›È™Ù[™\šXÈ A3S’_2P‘P7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈ[ÙYÛX[˜H$YÙ[™\šXÈ A3)­’JÑ‘*À7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÙ[\š[›È›ÙÚY\˜H|Ù[™\šXÈ A3fÓÒINð}ð7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈZ\˜X™[È|ÙÙ[™\šXÈ A3o,’B-À€ 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈ›ÛH™YÜØH ™Ù[™\šXÈ A3Nc’;øP‘P7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÛÛÜ››È(ÙÙ[™\šXÈ A3z’'4à†7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈšY[ž˜H)Ù[™\šXÈ A3u0Ò ³` 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈXZX]XÛÈ)YÙ[™\šXÈ A3b˜R#´°Ó@7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÚ\ÜØH)™Ù[™\šXÈ A3zîR%Ї7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÚ]š^ž˜[›È.YÙ[™\šXÈ A3\´R'cpÍ 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈYY\Ø[›È.™Ù[™\šXÈ A3fx"E€7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÜYÛ›È.ÙÙ[™\šXÈ A3s™$/PŠ 7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ\Ø]XÛÈ/Ù[™\šXÈ A3]<Ò$ûép7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØ[\ÙØ[X[›È/YÙ[™\šXÈ A3a¨3€Ð‰€7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈÛÜ[HHØ\œH çYÙ[™\šXÈ A3ióÒ6b€„07777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈØZ[˜YÛÈ3Ä™Ù[™\šXÈ A3thÒ'÷`…À7777BUFRœÈÿÿè$€ÀÂÀÂV@YÙ[™\šXÈœš\ÚYÚ[HD\Ù[™\šXÈ A33fRI‡€¶Ð7777dballe-7.21/extra/bufr/pilot-gts4.bufr0000644000175000017500000000042613022043102014543 00000000000000BUFRb€[  4[}Õm HϦi'ì10954 m·žF4€Á  Á Á ÁE   –A A!Ýûî«m¤Ÿ°‘ŸL… ÿþÚ0Ÿÿ‚Æóÿð@b˜ÀBhƒÿÿoÿÁÓâ`ÿø LÜ$?ÿ 茗ÿà¡Ò maÿþDÀF„ HB |hÑ£F4hÑ£F4¸Ñ£K\hÑ£K4¸Ñ£K4¸Ñ¥Æ7777dballe-7.21/extra/bufr/synop-longname.bufr0000644000175000017500000000252613022043102015506 00000000000000BUFRQÚ Û €ˆ#ÇPˆ"‚&´¹µ·¶1 »0¹/¶( •Àòd´¦® `M÷AÆ?ÿÿÿÿøC\{UMP ðdÿÿÿÿþÈt¨P(0xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðSþ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø2ô ý¥`'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ™ª;Ë{‘ƒ+‘ûb€Àhÿ¸¥ºh!J¥¤ò>ÿÿÿÿÿ€d5嵩ܯ>‡ÿÿÿÿÿé‡i†‚# @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿èCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚0@ŸÚ2?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥¡:²0¸2¹º(2¹º9½2·:67¹4·1–µº¶:2¹:¶2º/¶( š*_Û ‰ÎñA3ÒÿÿÿÿøCfË\Í ùÄÿÿÿÿþ4u(`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ŸôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁo Oí;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒÜ‘Xœ™XÙ[ˆÛG,‘3¢; åö' eäÿÿÿÿü!­­'xK?ÿÿÿÿÿ2:Ç”0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁOú@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà'ö¤oÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆsJl.M¬­Œ­d튡"v–kù…B‹ÐPr÷ÿÿÿÿþׂÖWh½ôÿÿÿÿÿ™cÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà'ý?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðBHûU@/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿã:åV72övç’öŀσ KžãíwÉÎh7{KÿÿÿÿÿÈk…jï´_8ÿÿÿÿÿ倱åÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðþ„?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø!$ ýš@%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñž²›Ó+;+![«c£+“«c+¡ûb€Àgô…¦*,€–ä÷”<åÿÿÿÿÿ€d6µÇÙ¯%‡ÿÿÿÿÿã@Xò†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø ÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü’þÓðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø7777 dballe-7.21/extra/bufr/obs1-140.454.bufr0000644000175000017500000000026213022043102014214 00000000000000BUFR²b€Œ4Œ}aE0äbOøLEIB ² ´ŽF€Ç  –A A!DLEIB _XA •‘¶€Ë€ ‚9¤@¤#­2¿'¦ Ïb4hÑ£F4hÑ£F6lhÑ£7777dballe-7.21/extra/bufr/gen-generic.bufr0000644000175000017500000025502613022043102014730 00000000000000BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀîP  ›e“ ±^2d dÈD?ÿW@þ®ƒì™ ÿÕÐ?ÿ« ,™¨(ј@€}VL€F”VjÉ5Š€€*¨ 2d € LÉœ2d° ì™ ]“ T( “ %?R€ @" “ `N H ?Kë#)èðýú‚z7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  I“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«  ™¨Ñ˜@€|¶L€F”VÞÉ5’€(x 2d € |Éœ2d° l™ u“ Te2d,€²dB0 Q@ PA²dL ©@@Pì}de 3ª ,Ð?`7777BUFRrÈÿ  ²ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ¢P  ž]“ ±ô2ddÈD?ÿW@þ®€ ÿÕÐ?ÿ« L™§ðј@€|¶L€F”VÌÉ5|€€(Œ 2d € L€Áj€ $àƒgÖFR Z¡,D}d7777BUFRrÈÿ  ²ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ¢P  e“ ²X2ddÈD?ÿW@þ®€ ÿÕÐ?ÿ« L™§ìј@€{4(@F”VÈÉ5‚€) ¡B € L€Áj€ "Ÿ@JWÖFR\dmãÈÔ7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  ›9“ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«¡ ™§í“ ј@€~vL€F”VÊÉ5”€€( 2d € 2É™2df à Q“ Te2d,€2dB@ vÀ Pd qçÖFR%uí3±ˆü7777BUFRôÈÿ  ôÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  –dÈ*fL€ÇÐÉ“ ÿý]ÿúº2d$ÿW@ÿþ®„2dŸ`F”@XÉ5v2d€( € |Éš²d° Q“ Te2d,€²dB@ Gà P€}§ÖFRB§á"»†7777BUFR$Èÿ  ÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ždÈ*'vL€ÎÉ“ ÿý]ÿúº2d$ÿW@ÿþ®ƒ2dŸ€F”@0É5{2d€( € 2Éœ2dr ì™ m“ Ti2d,€2dB@ d P(A²dL Ä©@@!ß}de 4)„TÊ0ÊÀ7777BUFR®Èÿ  ÐÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÀP  ‘)“ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ¬™§ÔÑ¥€¡2d \`  U@ 2d&l™‚Õ@ðˆ”dÈUl™ (ü/¬Œ¤‚B‚NÄúd7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ™Ý“ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§ìј@€|¶L€F”V²É5q€€*X ²d € dÉ›²dr Œ™ ]“ Te2d,€2dB0 m` P(A²dL ©@@;æ}de 3•åL€W 7777BUFR®Èÿ  ÐÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÀP  ’M“ µÜ2ddÈD?ÿW@þ®€P€ ÿÕÐ?ÿ« ,™§ôÑ¥€œ2d `   %²d&Ì™‚–€@ðˆ›dÈUL™ ( ü﬌¤pPÂ<êªT7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  šù“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™§ôј@€}L€F”VÐÉ5~€€*D 2d € 2É›2dr ™ e“ Te2d,€2dB@ Z  P A²dL ©@@Lë}de 3ÁYOÀ7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  i“ ³è2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§Üј@€|ÆL€F”VðÉ5‘€(È 2d € Éš2d T À Q“ Ti²d,€  ,÷¾²2ÔN Ëh`7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  ž“ ±ô2ddÈD?ÿW@þ®€P€ ÿÕÐ?ÿ« ,™§ðј@€}L€F”VôÉ5r€€*¼ 2d € 2É™2d T À ]“ Te2d,€  -ø>²2ÒZ êX07777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  ž)“ ³è2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§àј@€|–L€F”VÈÉ5Œ€€( 2d € Éš²d T À Q“ Tf2d,€  /ø¾²2Û¡ !Ù˜p7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žÍ“ ³„2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§Üј@€|öL€F”VÌÉ5‚€( 2d € É›²d T À Q“ Te²d,€  1€ú>²2߉ )üè 7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  Ÿ-“ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«  ™§äј@€}L€F”VêÉ5y€€(( 2d € Éš2d T À Q“ Te²d,€  4€ú¾²2Ø6 +Ѩ 7777BUFRrÈÿ  ²ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ¢P  žÉ“ ±ô2ddÈD?ÿW@þ®€ ÿÕÐ?ÿ« ,™§èј@€|VL€F”VæÉ5l€)ô ²d € L€Áj€ $ÀgÖFR<úÁ';m87777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  Ÿ“ ³è2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§ôј@€|”(@F”V´É5”€€*l ¡B € Éš2d T À Q“ Te²d,€  7û¾²2߉ =À€7777BUFRÈÿ  üÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀæP  •%“ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™¨Ñ¥€2d f€   2d' ™,@&@ˆ›dÈU dÈ„€ @} PƒdȘˆR€€äòúÈÊ@f†#Ò¼`ïÀ7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  –E“ ²X2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§øÑ˜@€|4(@F”V°É5„€€(< ¡B € dÉš²d Z À ]“ Te²d,€2dB ¯ Pp×ÖFR5·a JÈ7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  Ÿ!“ ´â2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§üј@€|¶L€F”W&É5‡€(< 2d € 2É™2d° Q“ Te2d,€2dB@ Q@ P€çÖFR4oA )ˆ$7777BUFR¾Èÿ  ØÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  dÈ*2–L€É`É“ ÿý]ÿúº2d$ÿW@ÿþ®²dŸF”@pÉ5u2d€) € € Éš²d T À Q“ Tg2d,€  >¾²2¤t …¨Yð7777BUFRôÈÿ  ôÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  dÈ)ë–L€ß@É“ ÿý]ÿúº2d$ÿW@ÿþ®¡BŸ@F”@ÔÉ5S2d€) € € 2É›2dÛ à Q“ Te²d,€2dB@   P`€gÖFR3'!"ü0 7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žù“ °!B*dÈD?ÿW@þ®ƒì™ ÿÕÐ?ÿ« ,™§ØÑ˜@€|VL€F”V¬É5£€(´ 2d € É™!B T À Q“ Te²d,€  I>²2¤ñ +i€ 7777BUFRÈÿ  „ÀÁÂÀÁ !!À!ÃÀÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀ|P  ž…“ °ÿþ®ÿý]dÈ0? ŒÀá²d4 ¶†L€¬ÐtRÀ“ TL Eõ‘”€ÌÉÈID‚ÀÕ€7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žé“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«  ™§Ðј@€|fL€F”VÊÉ5£€€* ²d € Éš2d T À Q“ Te²d,€  J >²2™¶ +i€`7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žå“ ²X2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™§ðј@€|†L€F”VÌÉ5—€(P ²d € Éš2d T À Q“ Te²d,€  J€ ¾²2o /GÀ7777BUFRrÈÿ  ²ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ¢P  žá“ ³è2ddÈD?ÿW@þ®€ ÿÕÐ?ÿ« ,™§ìј@€|L€F”VÔÉ5ˆ€€(Ü 2d € L€Áj€ $ àgÖFR/ë"€}$7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  ““ ³è2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§øÑ¥€¢2d Y   UÀ 2d&왂€@ó&@ˆ›dÈUL™ @L™†("`”FŒ™¼*@P*YH ŸïŽÉì 07777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  š‰“ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« Œ™§Ðј@€|FL€F”VÜÉ5ƒ€( 2d € É›2d° ™ ]“ Te2d,€²dB@ M€ P(A²dL H©@@¬}de 2ë(KÖ€Q7777BUFR®Èÿ  ÐÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÀP  ”¡“ ´â2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§ìÑ¥€±2d b    2d&Œ™‚Õ@ðˆ”dÈUl™ (`o¬Œ¤]âL,ê(7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žé“ µÜ2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«  ™§Üј@€|¶L€F”V¦É5…€(( ²d € Éš²d T À Q“ Te²d,€  _€¾²2|ç 8nØÀ7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žé“ µÜ2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§ôј@€|6L€F”VÐÉ5‡€(È ²d € É›²d T À Q“ Ti2d,€  g>²2Qï [XP7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  Ÿ“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§øÑ˜@€|–L€F”VàÉ5£€€(Ü ²d € –Éœ2d T Ì™ m“ Th2d,€²dB Ô€ P(B2dL ©@@Ö!}de 2]ŽKnP2`7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  ™y“ ´â2ddÈD?ÿW@þ®€P€ ÿÕÐ?ÿ« ,™§øÑ˜@€|6L€F”VÜÉ5…€€)ô ²d € 2É›²d T À ]“ Ti2d,€  l>²2BÌ (\@+À7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  š“ ²î2ddÈD?ÿW@þ®€P€ ÿÕÐ?ÿ« L™§üј@€{ÖL€F”V¬É5•€(( ²d € |Éœ2d Z À ]“ Ti2d,€  p¾²218 *e)`7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  Ÿ“ ³è2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«  ™§ØÑ˜@€|ÖL€F”VêÉ5v€(( 2d € Éš²d T À Q“ Te²d,€  s>²2BÌ B› 7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žI“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§àј@€|fL€F”VüÉ5 €€(´ ²d € Éš2d T À Q“ Tf²d,€  t¾²2-P L_7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  žÕ“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§ôј@€|ÆL€F”V¶É5‘€€( 2d € dÉœ2d° ™ U“ Te2d,€2dB@ Q@ P@B2dL ©@@ë+}de 2U¾[µ4@7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  “ ±ô2ddÈD?ÿW@þ®€P€ ÿÕÐ?ÿ« l™¨Ñ˜@€|&L€F”VÈÉ5˜€)¤ ²d € 2É›2d Z À ]“ Ti2d,€  w€>²2"’ .Þè!7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ž™“ ²Š2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™¨Ñ˜@€|VL€F”VøÉ5ƒ€( 2d € –É›2d Z Ì™ m“ Te2d,€²dB ¯ PB2dL H©@@ó.}de 2.®ey5 7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  ›½“ ²Š2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§èј@€|fL€F”VðÉ5‰€(ð ²d € Éš²d T À Q“ Tf2d,€  z¾²2? 7ž€$@7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ž“ ³„2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™¨ј@€|(@F”VøÉ5†€€)T ¡B € °Éœ2df Ì™ m“ Tf2d,€²dB ‰€ P(B2dL ©@@õ0}de 28rZP2À7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žÕ“ ³è2ddÈD?ÿW@þ®€P€ ÿÕÐ?ÿ« ,™§ØÑ˜@€|L€F”V°É5Ž€( 2d € dÉœ2d Z À e“ Ti2d,€  ~€>²2ÿj @úX7777BUFR®Èÿ  ÐÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÀP  “ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§ØÑ¥€¡2d Y  Z@ 2d&Œ™‚Õ@ðˆ”dÈUL™ ( @o¬Œ¤GÉÂUýðX7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  ž“ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§ØÑ˜@€|†L€F”VèÉ5’€(´ 2d € Éš2d T À Q“ Te²d,€  ‚€>²2] U˜7777BUFRôÈÿ  ôÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  dÈ*/L€Ñ0É“ ÿý]ÿúº2d$ÿW@ÿþ®²dŸpF”@tÉ5k2d€(ð  € 2É›²dR ` Q“ Th²d,€2dB0 1` PpƒWÖFRíA)ç š7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ©“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«  ™§äј@€{ÖL€F”VðÉ5€€), ²d € 2É›²dr L™ ]“ Te2d,€2dB0 vÀ P(A²dL ©@A!8}de 1ëL‡§=7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  ˜i“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§Ôј@€zæL€F”VøÉ5†€€), 2d € Éš²d T À Q“ Ti2d,€  œ>²2ñA cø¨.7777BUFR®Èÿ  ÐÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÀP  A“ ³„2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§ÜÑ¥€ 2d ]€  i@ 2d&Œ™‚Õ@ðˆ”dÈUL™ ('€¯¬Œ¤3äV2 7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  Ÿ “ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™§ðј@€|æL€F”V¼É5–€( 2d € Éš²d T À Q“ Tg2d,€   >²2ëe paÀð7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žÙ“ ³è2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§èј@€|FL€F”VôÉ5€€) ²d € Éš²d T À Q“ Tg2d,€  ¢€ >²2á$ c\h 7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  1“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§üј@€}L€F”VèÉ5™€€)¸ ²d € Éš2d T À Q“ Tg2d,€  ´"¾²2ÂÞ uCÀ€7777BUFRÀÈÿ  ÚÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÈP  žÁ“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§èј@€|L€F”WÉ5e€€(Œ 8²d € É™²d T À Q“ Te²d,€  µ#>²2•ò [¡@ð7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  šy“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§øÑ˜@€{¶L€F”V¸É5n€*” ²d € –Éœ2d Z À m“ Tf2d,€2dB œ@ P„wÖFR•a&Æ=7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ž=“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™¨Ñ˜@€{t(@F”WÉ5n€€* ¡B € 2É›²d° ™ ]“ Te²d,€2dB@ >€ P0A²dL ©@A•H}de 0å”j[4 7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  œ™“ ³è2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™§ðј@€zöL€F”VøÉ5x€(Œ 2d € |Éœ2d T À ]“ Th²d,€²dB Ô€ P „—ÖFR ÜA&óÐö7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  Õ“ ³è2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ˆP€§Ôј@€{FL€F”W,É5u€)à $2d € 2Éš²d T À q“ Ti2d,€2dB Ô€ P@„·ÖFRˆ!*b¸–7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ž¥“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«¡ ™§èј@€{¶L€F”VÔÉ5“€)ô C2d € 2Éš²dR ™ m“ Te2d,€2dB@ >€ P(A²dL ©@A¦L}de 0ÚÖ¨œ€3`7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀîP  ž¡“ ³ 2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§äј@€{6L€F”WÉ5x€) ²d € °Éœ2d T Ì™ m“ T(“ À%R€ À"“ `™ H  hBkë#)†a€’ݨ—7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ‘“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™§ðј@€{(@F”VÈÉ5‹€(d ¡B € –É›2d Z Ì™ m“ Te2d,€²dB ¯ P0B2dL ©@AÅP}de 0z(…ž03`7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  žÑ“ °ú2d dÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§ðј@€|†L€F”VèÉ5ˆ€€(d &²d € LÉ›²dr ™ e“ Te2d,€²dB@ vÀ P(A²dLYt©@AÌR}de 0¡8™ö€3`7777BUFRBÈÿ   ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀP  šÉ“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™§èј@€y´(@F”V¤É5¤€(´ 1!B € 2Éœ2dR ™ m“ T( “ %©2dR€ " “ `s HÔ0Ù2'Ð2dV€  ë)¾²20b 'WØ$ð7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ñ“ °È2d dÈD?ÿW@þ®‚Ì™ ÿÕÐ?ÿ« L™¨ј@€{†L€F”VÔÉ5¢€€(  !²d € 2É›²dR ™ U“ Ti2d,€2dB@ 5 P(B2dL ©@AàT}de 0S›ÿP7À7777BUFRBÈÿ   ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀP  ›ý“ °È2d dÈD?ÿW@þ®‚Ì™ ÿÕÐ?ÿ« L™§üј@€{&L€F”V„É5‹€)h ²d € dÉœ2d& L™ U“ T( “ À%õ2dR€À"“ `2HÔ12'x2dV€ !0¾²2È= à˜! 7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀîP  œu“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§øÑ˜@€z–L€F”V˜É5•€(Œ $2d € LÉœ2dR ì™ m“ T( “ %©R€ @"“ ``àH  Cë#)‰û`–ù‚7777BUFRTÈÿ  *ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀ P  u“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§ðј@€{4(@F”VÆÉ5œ€(  )!B € LÉ›²dR l™ q“ Te²d,€²dB0 -¦L€ PA²dL ©€F&@áíÆL€ Ð%P†GÖFR1ñ( Ö7777BUFRTÈÿ  *ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀ P  žI“ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™¨ј@€y¦L€F”VÈÉ5•€€)Ì ²d € LÉ›²dŠ l™ Q“ Tf2d,€²dB8 &&L€ PC2dLl©€F&@áíÆL€ Ðð:7ÖFRõa …+*7777BUFR:Èÿ  ”ÀÁÂÀÁ !!À!Ã!!À!Ã*!!À!ÃÀÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀˆP  žÉ“ °´2d^à €Gÿõtÿêè+&@€)ö4f žÉ“ ‘¥„2d _  Z,™ (€~¬Œ¤ßûz8±ð@7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  žÉ“ °–2d dÈD?þ®€ý]¹@?ÿW@þ®l™ ÿÕÐ?ÿ« ¬™§Ù“ ј@€{ÆL€F”VÉ5z€€(ð ²d € Éš2d T À Q“ Tf2d,€ €û¾²2€3¨õ³€@7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  ž}“ °á2d dÈD?þ®€ý]¬?ÿW@þ®‚Ì™ ÿÕÐ?ÿ« Ì™§á“ ј@€|6L€F”V2É5€€(ð ²d € Éš²d T À Q“ Tf2d,€²dB¡íÀ P@?—ÖFRu-Ý€CT7777BUFR¶Èÿ  ÒÀÁÂÀÁÂ!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!ÃÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀÆP  K&@@ÿõtÿêèfñÿý]ÿúºÉ` À €'5$i@bŒ™X8èžk&@¨%€(I“ $ã&@( 2HÕ“ 0;c&@h bÀ3ë#)À/8‡™Š‚7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ž•“ °ú2d dÈD?ÿW@þ®‚Ì™ ÿÕÐ?ÿ« ì™§øÑ˜@€|ÖL€F”VJÉ5‚€(  ²d € É›2df l™ ]“ Tf2d,€²dB0 vÀ P0@2dL°©@(!ý}de 7?áRw5`7777BUFRèÈÿ  îÀÁÂÀÁ !!À!Ã!!À!Ã!!À!Ã>!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÜP  ž5“ °ú2ddÈD€GÿÕÐÿ« UhÇÿêèÿÕÐ-“ #ÿúºÿõt“ Àý²d3OŽÉHÒ€ ÌY2°0ÐöL€P2VL€Áj€ xDJ2d*€ ¶L€‚0?÷ÖFRr)U!:øv7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  ž¥“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«¡ ™§øÑ˜@€|†L€F”VzÉ5~€(ð ²d € É›2d T À Q“ Te²d,€2dB¢K€ P‚P@ÖFRqÒ}!-óL7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  žÉ“ ±2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ¬™§èј@€|fL€F”VzÉ5€€(ð ²d € Éš²d T À Q“ Te²d,€²dB¡µ€ P‚`@ÖFRpè!4u87777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  Ÿ“ °‡2dÿW@?þ®UÀÿÕÐ?ÿ« ì™§é“ ј@€|ÆL€F”VÉ5~€€(È ²d € >²2—Íi¾(@7777BUFR:Èÿ  ”ÀÁÂÀÁ !!À!Ã!!À!Ã*!!À!ÃÀÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀˆP  ž­“ ±2d]À €Gÿõtÿêè3&@€)û4f Ÿ-“ ‘¥‚²d _@  <Ì™ (€€o¬Œ¤ãê‚D²ÚT7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  ž•“ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«¡ ™§ôј@€|¶L€F”V‚É5x€) ²d € Éš²d T À Q“ Te²d,€²dB¡íÀ P‚à@WÖFRq>ù"%X^7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  Ÿ“ °æ2d dÈD?þ®€ý]«@?ÿW@þ®ƒì™ ÿÕÐ?ÿ«¡ ™§ñ“ ј@€}L€F”VVÉ5…€) ²d € Éš²d T À Q“ Th2d,€ €¾²2‘J©[X07777BUFR¦Èÿ  ÊÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!ÃÁ !!À!à !!À!ÃÀÁÀ¾P  ž½“ °2d-dÈD?þ®€ý]«€?ÿW@þ®ƒà ÿÕÐ?ÿ« ì™§Ý“ ј@€~6L€F”UÜÉ5w€)@ ²d € –L€ÐË&@  P…°@§ÖFRsµ''åt7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  žå“ °#2dÿW@?þ®U€ÿÕÐ?ÿ« Ì™§ØÑ˜@€~6L€F”UüÉ5{€) 2d € .€¾²2‰'I9Ûh€7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  ž‘“ ±2ddÈD?þ®€ý]¬À?ÿW@þ®€ ™ ÿÕÐ?ÿ« ¬™§Ù“ ј@€{vL€F”V~É5ˆ€€)@ ²d € É™²d T À Q“ Te²d,€²dB¢@ P‡@ÇÖFRm-M‘x67777BUFR¸Èÿ  ÖÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!ÃÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀÄP  ›q“ µÜ2dQdÈD?ÿ« ÿW@Ù2 Oð£0€ål™(¬a“ kSè@)dÈ@R²dB¼dÈ¥€D©FªdÈ­@ [h}de 8(ôiÐ: 7777BUFR,Èÿ  ŒÀÁÂÀÁ !!À!Ã*!!À!ÃÀÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀ‚P  žM“ ºû\?ÿ« ÿWAY2 OÀ£0€÷ ™(¬a“ kQà@3dÈ@(|}de 6áz‘ñP5À7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  ž­“ ±2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ¬™§äј@€{¦L€F”V’É5†€€(ð ²d € É™²d T À Q“ Te²d,€²dB¢& P‡àA7ÖFRl(á[K07777BUFRTÈÿ  $ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!Ã>!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀÁÂ!!À!ÃÀÁ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀP  žÁ“ °ú2ddÈD € ™GÿÕÐÿ« U›&@ÇÿêèÿÕÐ-“ #ÿúºÿõt“ Àÿõtÿêè €§ÿõtÿêè¶L€F` ïY2 PZ+&@Ö:¤`€>É*€&@jÉ-P/(€ FL€P–ɲ ɇ·)@P @_YH °;Tt ¸7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  žñ“ ±,2dÿW@?þ®UàÿÕÐ?ÿ« Ì™§í“ ј@€|L€F”VxÉ5…€€) ²d € A >²2ziU07777BUFRLÈÿ  $ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!Ã>!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀ P  ž½“ °×2ddÈD €GÿÕÐÿ« UÇÿêèÿÕГ #ÿúºÿõt“ Àý²d3OzÉHÒ€ Ë™2°`ЖL€P26L€Áj€ y“ DK²d*€ ÆL€ L€C”-PJ#dȈL€ „— (`‚﬌¤Ü/R?ÝàT7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  žÅ“ °ú2dÿW@?þ®UÀÿÕÐ?ÿ«¡ ™§õ“ ј@€{öL€F”V„É5‡€) ²d € E€ >²2^Ö )Ø07777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ž™“ ±Â2ddÈD?þ®€ý]«@?ÿW@þ®€ ™ ÿÕÐ?ÿ« ¬™§é“ ј@€|VL€F”V€É5‚€€) ²d € Éš²d T À Q“ Tf2d,€ G>²2w@ ?è7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  žÁ“ °Ã2dÿW@?þ®U€ÿÕÐ?ÿ« Ì™§ý“ ј@€|L€F”V„É5‚€€) ²d € I>²2jÅI éhÐ7777BUFR@Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀP  žÅ“ ±Â2ddÈD?þ®€ý]«À?ÿW@þ®€ ™ ÿÕÐ?ÿ« Ì™§ý“ ј@€|6L€F”VŠÉ5€€)@ ²d € É›2d T Ì™ ]“ Te²d,€²dB¡ À P0@2dLÜ©@(“}de 6ʱ’¬47777BUFRtÈÿ  ²ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!ÃÀÀ¤P  žá“ °ú2dÿW@?þ®U`ÿÕÐ?ÿ« Ì™§õ“ ј@€|ÖL€F”VtÉ5€€) ²d € ˜²d TN¾²2nLiá€à7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  žý“ ±,2d dÈD?þ®€ý]«€?ÿW@þ®l™ ÿÕÐ?ÿ« Ì™§í“ ј@€}FL€F”V2É5~€€(È 2d € Éš²d T À Q“ Tg2d,€ P€>²2w@ üð7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ñ“ ²¼2ddÈD?þ®€ý]«?ÿW@þ®€ ™ ÿÕÐ?ÿ«¡ ™§ñ“ ј@€|ÖL€F”V€É5‡€(Ü ²d € É™²d T À Q“ Te²d,€ Q¾²2f) 8è°7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  žA“ ±ô2dÿW@?þ®U€ÿÕÐ?ÿ« ì™§á“ ј@€}fL€F”VpÉ5€€) ²d € T>²2c¸ À 7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  Ÿ“ ±,2ddÈD?þ®€ý]«À?ÿW@þ®l™ ÿÕÐ?ÿ« Ì™§ñ“ ј@€}FL€F”VZÉ5€€€) ²d € É›2d T À Q“ Tg2d,€2dB¢K€ PŠ B‡ÖFRpu%(7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  ž5“ ±2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ«¡ ™§ìј@€}D(@F”VtÉ5ƒ€(ð ¡B € Éš²d T À Q“ Tf2d,€²dB¡ PŠÀB—ÖFRneÍ%f­p7777BUFR¢Èÿ  ÈÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!ÃÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀ¼P  ŸU“ ±^2dÿW@?þ®U`ÿÕÐ?ÿ«¡ ™§á“ ј@€}ÖL€F”VNÉ5€€(ð ²d € dšdÈ„,J$ˆ”R€QhVúÈÊ@n¤Áþ`eÀ7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  Ÿa“ °}2ddÈD?þ®€ý]«@?ÿW@þ®ƒì™ ÿÕÐ?ÿ« Ì™§Õ“ ј@€}öL€F”VÉ5‡€(Œ ²d € É™²d T À Q“ Te²d,€ \¾²2|" 8× 7777BUFR–Èÿ  ÄÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!ÃÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀ´P  œ“ ²î!BdÈD?ÿ« ÿW@Y2 P £0€挙(¬=“ júSÀ@RdÈ@°²dBº¥€D Ä©@ dk}de 7⤂{03€7777BUFRXÈÿ  ¢ÀÁÂÀÁ !!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ˜P  žÁ“ °ÿúºÿõt ¯xÿþ®ÿý]dÈ0? ™ŒÀÛ2d4 ´&L€¬XtHÀU“ T²d Td¾²2Wƒí\P7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ž‘“ ±Â2ddÈD?þ®€ý]«À?ÿW@þ®€ ™ ÿÕÐ?ÿ«¡ ™§é“ ј@€{ÆL€F”VˆÉ5ƒ€(Ü 2d € É™²d T À Q“ Te²d,€ k€>²2O_¨øôذ7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  žÙ“ ±2ddÈD?þ®€ý]¬@?ÿW@þ®€ ™ ÿÕÐ?ÿ« Ì™§í“ ј@€{ÆL€F”VtÉ5„€€)@ ²d € É™2d T À Q“ Te²d,€2dB¡íÀ PŽCWÖFRi,ñ &7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  •“ ±ô2dÿW@?þ®VÿÕÐ?ÿ« ì™§å“ ј@€|L€F”VžÉ5}€€) ²d € u€¾²2Fl M(Ð7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  “ ±2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« Ì™§àј@€|6L€F”V–É5€€(´ ²d € É™2d T À Q“ Te²d,€2dB¡íÀ PŽàC‡ÖFRg¯ !е¬7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  i“ ±Â2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ì™§Üј@€|&L€F”V¶É5€€) 2d € ɘ²d T À Q“ Te²d,€²dB¡íÀ P`C—ÖFRhKM"2]¶7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  žI“ ²¼2ddÈD?þ®€ý]«€?ÿW@þ®€ ™ ÿÕÐ?ÿ« ì™§á“ ј@€|¦L€F”VlÉ5‚€€) ²d € É™²d T À Q“ Tg2d,€ |€>²2Yô ­hÐ7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  ží“ ±ô2dÿW@?þ®UÀÿÕÐ?ÿ« Ì™§í“ ј@€}L€F”V†É5ƒ€), ²d € ~€¾²2DËi+¨7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  žÅ“ ²X2ddÈD?þ®€ý]«€?ÿW@þ®ƒì™ ÿÕÐ?ÿ« Ì™§èј@€|ÖL€F”V„É5†€€(ð ²d € ɘ²d T À Q“ Te²d,€²dB¢K€ PPCÇÖFRh1A$ÕJ7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ±“ ±Â2ddÈD?þ®€ý]«@?ÿW@þ®€ ™ ÿÕÐ?ÿ« ì™§Ù“ ј@€}FL€F”V„É5„€), ²d € É™2d T À Q“ Tg2d,€ „¾²2Vlé&ï¨7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  ž©“ ±ô2dÿW@?þ®U€ÿÕÐ?ÿ« ì™§á“ ј@€}ÖL€F”VzÉ5‚€€), ²d € …€>²2C*©,Ö€7777BUFR8Èÿ  ÀÁÂÀÁ !!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀŠP  žQ“ °ÿúºÿõt ¬xÿþ®ÿý]dÈ0? ™ŒÀõ²d4 ³L€¬tM U“ T¤0ýõ‘”€Úý3IÀë7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ž™“ ±ô2ddÈD?þ®€ý]«€?ÿW@þ®ƒì™ ÿÕÐ?ÿ« ì™§á“ ј@€}ÆL€F”VzÉ5€) ²d € É™2d T À Q“ Te²d,€ ‡ >²2AŠ 1¸`7777BUFRfÈÿ  ªÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!ÃÁ !!À!à !!À!ÃÀÁÀžP  M“ ³ 2dÿÕÐ?ÿ« ,™¨(ј@€uöL€F”V"É5x€€)Ì 2d € 9€™2!MR€ 7€6¾²2½ÇHO¯€Ð7777BUFR$Èÿ  †ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÀÁÀ€P  ž=“ ±Â2dÿW@?þ®U`ÿÕÐ?ÿ« ¬™§Ñ“ ј@€}¦L€F”VrÉ5u€€ Š€!>²2M¿ 4](à7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  Å“ ±Â2ddÈD?ÿW@þ®ƒì™ ÿÕÐ?ÿ« L™§Üј@€~(@F”VˆÉ5‚€€), ¡B € 2É™²d° à Q“ Tg2d,€2dB@ B@ P‘DGÖFRlw&úS®7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  ž“ ±2dÿW@?þ®UÀÿÕÐ?ÿ« Ì™§Ù“ ј@€~VL€F”VVÉ5†€)@ ²d € €#¾²2Vlé?Y¨p7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  žu“ ²î2ddÈD?þ®€ý]«@?ÿW@þ®ƒèP€ ÿÕÐ?ÿ« ¬™§Õ“ ј@€}öL€F”VlÉ5‡€€(´ ²d € É™2d° à Q“ Te²d,€ ‘€$¾²2H ©@*p7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  ž “ ±ô2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ì™§àј@€{&L€F”V¾É5€(Ü ²d € ɘ²d T À ]“ Te²d,€²dB ÁÀ P“D·ÖFRgÍÒ“F7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  žU“ ²X2ddÈD?þ®€ý]¬@?ÿW@þ®€ ™ ÿÕÐ?ÿ«¡ ™§á“ ј@€{FL€F”V¼É5ƒ€€) ²d € É™²d T À Q“ Te²d,€ ˜€&>²2.Òhî`€`7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  å“ ²î2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« Ì™§ØÑ˜@€{6L€F”VÐÉ5…€€), ²d € ɘ²d T À ]“ Te2d,€²dB Ô€ P“ D×ÖFRd‡Áìp7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  É“ ²î2ddÈD?þ®€ý]¬€?ÿW@þ®€ ™ ÿÕÐ?ÿ« Ì™§í“ ј@€{L€F”VºÉ5€), ²d € ɘ²d T À Q“ Te²d,€ €)>²2ÈóB€7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  “ ±ô2dÿW@?þ®VÿÕÐ?ÿ« ¬™§Ù“ ј@€{fL€F”VºÉ5€€(  ²d € ž€)¾²2!Í÷ˆ@ð7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ž!“ ±2ddÈD?þ®€ý]«À?ÿW@þ®€ ™ ÿÕÐ?ÿ« Ì™§Ý“ ј@€{¶L€F”VžÉ5‡€) ²d € ɘ²d T À Q“ Te²d,€  €+>²22ž(û1Àp7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  œ]“ ±ô2dÿW@?þ®V`ÿÕÐ?ÿ« ¬™§Ý“ ј@€{¶L€F”V¶É5†€)@ ²d € ¢€,>²2z À!p7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  Å“ ±2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ¬™§Ðј@€|FL€F”V¢É5†€€(Ü ²d € É™2d T À Q“ Te²d,€2dB¡íÀ P”àE·ÖFRer!! e’7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  }“ ²X2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§Ôј@€{¶L€F”VÂÉ5†€€)h ²d € ɘ²df ` ]“ Te²d,€²dB0 ‰€ P”ðEÇÖFRd „­¬7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ù“ ±ô2ddÈD?þ®€ý]¬?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™§Ù“ ј@€|VL€F”V¬É5‡€€) ²d € ɘ²d T À Q“ Te²d,€ ©/>²2,ëé ¬€€7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  …“ ±ô2ddÈD?þ®€ý]«À?ÿW@þ®€ ÿÕÐ?ÿ« ¬™§Õ“ ј@€|–L€F”VœÉ5€(È ²d € L€Áj€ "•ÀFÖFRd‡Á"šˆÂ7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  œ)“ ±ô2dÿW@?þ®VÿÕÐ?ÿ« l™§Ôј@€|¦L€F”VvÉ5‚€) ²d € ²1>²2EéÇè# 7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  žA“ ³è2ddÈD?þ®€ý]«?ÿW@þ®€ ÿÕÐ?ÿ« Ì™§å“ ј@€|–L€F”V˜É5w€€) ²d € L€Áj€ "–pF7ÖFReÚM$  ~7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  ‰“ ±ô2ddÈD?þ®€ý]«@?ÿW@þ®€ ÿÕÐ?ÿ« ì™§Õ“ ј@€|vL€F”V˜É5~€€) ²d € L€Áj€ "–FGÖFRcƒY$[À¾7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  žÁ“ ±ô2dÿW@?þ®U`ÿÕÐ?ÿ« Ì™§Ý“ ј@€}¦L€F”V˜É5Š€(È ²d € ¶€3>²2(OÉ)ÈØ07777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  ›¹“ ´~2ddÈD?þ®€ý]«€?ÿW@þ®€ ÿÕÐ?ÿ« ¬™§Ñ“ ј@€|ÖL€F”VÉ5€€) ²d € L€Áj€ "—FwÖFRciI%®K–7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  ža“ ±Â2dÿW@?þ®U@ÿÕÐ?ÿ« ¬™§Ù“ ј@€}¦L€F”VÉ5}€€(ð ²d € ¼4¾²2“‰:€€7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  “ ´â2ddÈD?þ®€ý]¬?ÿW@þ®€ ™ ÿÕÐ?ÿ«¡ ™§Ù“ ј@€}vL€F”V É5v€(È ²d € ɘ²d T À Q“ Te²d,€²dB¡È@ P—°F·ÖFRe ù&˜«Â7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ž“ ³„2ddÈD?þ®€ý]«€?ÿW@þ®€P€ ÿÕÐ?ÿ«¡ ™§Õ“ ј@€}¤(@F”V¢É5y€(Ü ¡B € ɘ²d° à Q“ Te²d,€ ¾€6>²2,ëé7ž€07777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ž©“ ´~2ddÈD?þ®€ý]«@?ÿW@þ®€ ™ ÿÕÐ?ÿ« ì™§Ù“ ј@€}fL€F”V”É5y€) ²d € ɘ²d T À Q“ Te²d,€ ¿6¾²21Ci7Ò˜P7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ž}“ ´â2ddÈD?þ®€ý]«@?ÿW@þ®€P€ ÿÕÐ?ÿ« ì™§Ý“ ј@€}¦L€F”VŒÉ5~€€) ²d € ɘ²d° À Q“ Te2d,€ À7>²2,ëé9  7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  žu“ ³„2ddÈD?þ®€ý]«?ÿW@þ®€ ™ ÿÕÐ?ÿ« ì™§á“ ј@€}–L€F”VŒÉ5|€€(´ ²d € ɘ²d T À Q“ Te²d,€ À€7¾²2(OÉ:C˜ð7777BUFRÈÿ  ~ÀÁÂÀÁ !!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÀÁÀzP  å“ °ÿúºÿõt ²xÿþ®ÿý]dÈ0? ™ŒÀî²d4 ´öL€«Üt¦Áõ‘”€Ùv“IÈXÀÚ€7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  “ ²X2ddÈD?þ®€ý]¬€?ÿW@þ®€ ™ ÿÕÐ?ÿ« Ì™§Õ“ ј@€}ÖL€F”VŒÉ5€€(x ²d € É™2d T À Q“ Tg2d,€2dB¡ P˜G'ÖFRd(2Óä7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  Ÿ%“ ²î2ddÈD?þ®€ý]«@?ÿW@þ®ƒì™ ÿÕÐ?ÿ«¡ ™§á“ ј@€}ÆL€F”VvÉ5€€(  ²d € ɘ²d T À Q“ Te²d,€ Æ:>²20s FàÀÀ7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ž“ µÜ2ddÈD?þ®€ý]¬?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™§é“ ј@€{fL€F”VØÉ5|€)@ ²d € ɘ²d T À Q“ Te²d,€ È:¾²2ójçÝØÐ7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ž“ ³è2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« ,™§Ôј@€{4(@F”VÖÉ5ƒ€) ¡B € É™²df l™ Q“ Te²d,€²dB0 ‰€ P@2dL!4©@)”y}de 6ÆÃîÐ5 7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  œ“ ´â2ddÈD?þ®€ý]¬€?ÿW@þ®€ ÿÕÐ?ÿ« L™§å“ ј@€{fL€F”VÎÉ5z€€) ²d € L€Áj€ "™ G×ÖFR_ IÛR7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  —É“ µÜ2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§Ý“ ј@€{FL€F”VìÉ5”€€)à ²d € ɘ²d T À m“ Te2d,€²dB ÁÀ Pš HÖFR^!TÈ&7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  M“ ³¶2dÿW@?þ®UàÿÕÐ?ÿ« ¬™§Ñ“ ј@€{†L€F”VàÉ5ˆ€€)T ²d € ÔB>²2ohõç˜ 7777BUFRØÈÿ  äÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ŠdÈ*>vL€Ñ0É“ ÿúºÿõt ±xÿý]ÿúº!B$ÿW@ÿþ®²dŸvL€F”@~É5b²d€)| € € ɘ²d Z À ]“ Te²d,€ Õ€C¾²2í·¨üÒhMp7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  ›ù“ ³è2ddÈD?þ®€ý]¬€?ÿW@þ®€ ÿÕÐ?ÿ« ¬™§Ù“ ј@€{vL€F”VØÉ5p€€), 2d € L€Áj€ "šàH‡ÖFRa`u #Z7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  š©“ ±^2dÿW@?þ®U ÿÕÐ?ÿ«¡ ™§á“ ј@€{ô(@F”V˜É5€)T ¡B € Ù€E¾²2ý. ]è'7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  šÁ“ ±ô2dÿW@?þ®UàÿÕÐ?ÿ« ì™§Ý“ ј@€{öL€F”V¦É5‚€)T ²d € ÛG>²2ój Ÿ@'p7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  ›¥“ ±2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« Ì™§àј@€{öL€F”VœÉ5Œ€(ð ²d € ɘ²d T À ]“ Te²d,€²dB ú P›pH÷ÖFR]NÉ ÒÍx7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  ›å“ °ú2ddÈD?þ®€ý]«À?ÿW@þ®€ ÿÕÐ?ÿ«¡ ™§å“ ј@€|FL€F”VŽÉ5Œ€€)à 2d € L€Áj€ "›ÀIÖFR_¥Á!×8n7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  ˜•“ ±^2ddÈD?þ®€ý]«À?ÿW@þ®€ ÿÕÐ?ÿ« ì™§Õ“ ј@€|fL€F”V’É5‡€€(Œ ²d € L€Áj€ "œIÖFR_ "fsè7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  ” “ ±ô2dÿW@?þ®U ÿÕÐ?ÿ«¡ ™§Õ“ ј@€{öL€F”VŽÉ5z€€)h ²d € âI>²2 I©>ð7777BUFR>Èÿ  ÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀP  ˆdÈ**†L€ÊðÉ“ ÿúºÿõt ­xÿý]ÿúº2d$ÿW@ÿþ®€²dŸ°F”@fÉ5e2d€* € € É™2d° ì™ Q“ Te²d,€²dB@ >€ P@2dL„©@)Å“}de 6¨-º0ÀÀ7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  šÍ“ ±ô2dÿW@?þ®VÿÕÐ?ÿ«¡ ™§Ù“ ј@€|vL€F”V´É5„€€(x ²d € ãJ>²2ω±Ø' 7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  —¹“ ±ô2dÿW@?þ®U ÿÕÐ?ÿ« Ì™§Õ“ ј@€|fL€F”V É5x€)h ²d € åK>²2 +¨2@7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  œ%“ ±^2ddÈD?þ®€ý]«€?ÿW@þ®€ ÿÕÐ?ÿ«  ™§Ñ“ ј@€|öL€F”VlÉ5„€€(x 2d € L€Áj€ "œÀIwÖFR^ïy#æh7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  u“ ±ô2dÿW@?þ®U`ÿÕÐ?ÿ«¡ ™§Õ“ ј@€|öL€F”V”É5€€(Ü 2d € éL>²2ýþi'#À7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  œ¹“ ³ 2ddÈD?þ®€ý]«€?ÿW@þ®€ ÿÕÐ?ÿ« ì™§Õ“ ј@€|ô(@F”V’É5€€€(´ ¡B € L€Áj€ "PI—ÖFR_#%S%<7777BUFRrÈÿ  ²ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ¢P  œ½“ ±ô2ddÈD?ÿW@þ®€ ÿÕÐ?ÿ« ,™§Õ“ ј@€}D(@F”V”É5‚€€(  ¡B € L€Áj€ "pI§ÖFR^˜%šÃD7777BUFRlÈÿ  ¬ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÁÀ¢P  m“ ±ô2dÿW@?þ®VÿÕÐ?ÿ« Ì™§Õ“ ј@€}–L€F”VŒÉ5€€€) ²d € FL€ER€ (;@“o¬Œ¤Ä KëÐä7777BUFRrÈÿ  ®ÀÁÂÀÁÂ!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!ÃÁ !!À!à !!À!ÃÀÁÀ¦P  5#&@@ÿõtÿêèhñÿý]ÿúºÉ` „À €'h$i@bÌ™Vøè¡Àk&@¨Z (A“ Z ( d ³ë#)º¸…t›7777BUFRrÈÿ  ²ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ¢P  i“ ²î2ddÈD?ÿW@þ®€ ÿÕÐ?ÿ« Ì™§Üј@€}$(@F”V¨É5}€(È ¡B € L€Áj€ "ÀIÇÖFRaFm&Æ=¾7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  œu“ ±2ddÈD?þ®€ý]«À?ÿW@þ®€ ÿÕÐ?ÿ« l™§Õ“ ј@€}&L€F”V†É5€€(Œ ²d € L€Áj€ "žI×ÖFR^mA&¥°L7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  ší“ ³„2ddÈD?þ®€ý]«À?ÿW@þ®€ ÿÕÐ?ÿ«  ™§Ñ“ ј@€|ÆL€F”VªÉ5€€€( ²d € L€Áj€ "ž€I÷ÖFR]hÙ'£˜ì7777BUFRfÈÿ  ªÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀžP  “ ±Â2dÿW@?þ®U ÿÕÐ?ÿ« ¬™§Ù“ ј@€}FL€F”V¢É5{€€(  ²d € L€Áj€ "ž JÖFR`!'b}â7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ž “ ³è2ddÈD?þ®€ý]«€?ÿW@þ®€ ™ ÿÕÐ?ÿ« Ì™§Ù“ ј@€}VL€F”V É5y€€(È ²d € ɘ²d T À Q“ Te²d,€ øQ¾²2 ©D˜P7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  šÕ“ ²&2ddÈD?þ®€ý]«À?ÿW@þ®€ ÿÕÐ?ÿ«  ™§Ñ“ ј@€|æL€F”VŠÉ5€€( 2d € L€Áj€ "Ÿ0JGÖFR]®=)xXú7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  šý“ ´â2ddÈD?þ®€ý]­@?ÿW@þ®€P€ ÿÕÐ?ÿ« l™§ù“ ј@€zÖL€F”VÖÉ5€)Ì ²d € ɘ²dr à ]“ Te2d,€ ú€S>²2Ú/¨ßº€% 7777BUFRöÈÿ  öÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀâP  œ]“ µÜ2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« L™§ìј@€{VL€F”VäÉ5‚€), ²d € É™2dr à ]“ Te2d,€²dB@ k€ PŸ`JwÖFR[”Ô« 7777BUFR@Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀP  “ µÜ2ddÈD?þ®€ý]¬€?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§á“ ј@€{¦L€F”VÎÉ5y€€)T ²d € LÉ™²d Z Ì™ a“ Te2d,€²dB ¯ PA²dL H©@*­}de 5¼‚‘Ù°=`7777BUFR&Èÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀøP  ›}“ ´â2ddÈD?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§üј@€{ÖL€F”VèÉ5ˆ€€(Ü ²d € É™²dr l™ ]“ Te²d,€²dB0 Z  PA²dL H©@*®}de 5‹®‘Ý)0HÀ7777BUFR,Èÿ  ŒÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀ‚P  œ¥“ ±ô2dÿÕÐ?ÿ« l™§Ù“ ј@€|L€F”V²É5w€€* 2d € €W¾²2ÈHhñÕè ð7777BUFRšÈÿ  ÆÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!ÃÀÂÀ¶P  ™™“ ±,2ddÈD?ÿW@þ®ƒèP€ ÿÕÐ?ÿ« ,™¨¬Ñ˜@€g&L€F”UxÉ5W€)| ;2d € ÈÉœ2d& € (€ ¬Œ¤¬§J Þ*h7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  ›ý“ ±Â2dÿW@?þ®V ÿÕÐ?ÿ« l™§å“ ј@€{ÖL€F”V¾É5z€€)¤ ²d € €Y>²2ØIHí("ð7777BUFRÚÈÿ  æÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ”Õ“ ·Ð2ddÈD?þ®€ý]­@?ÿW@þ®€P€ ÿÕÐ?ÿ« l™§Ù“ ј@€{6L€F”VœÉ5n€)@ ²d € ɘ²d T À ]“ Te2d,€ Z>²2Ô}höƒØ;07777BUFRÈÿ   ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!Ã>!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀöP  ›E“ ²&2ddÈD€GÿÕÐÿ« U€ÇÿêèÿÕГ #ÿúºÿõt“ Àû²d3O†…HÒ€ Ò2¯€Ð2¤(@P ™26L€Á À ŒDK²d*€ ¦L€ 6L€F”0J€T( lúÈÊ@kCØ£ýÞ’€7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  ˜•“ ±ô2dÿW@?þ®V ÿÕÐ?ÿ« Œ™§Ñ“ ј@€{¶L€F”VºÉ5w€* 2d €  €\>²2ÛÐiÁ¨.Ð7777BUFRŽÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!ÃÁ !!À!à !!À!ÃÀÁÀ²P  œÍ“ ³è2ddÈD?ÿW@þ®€ ÿÕÐ?ÿ« ,™¨ј@€uFL€F”V,É5x€)Ì .²d € 3€™2!¶R€ D<¾²2ÁNh]Q 7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  š“ ³R2ddÈD?þ®€ý]«€?ÿW@þ®€ ÿÕÐ?ÿ« Ì™§Ý“ ј@€|t(@F”V€É5†€*X !B € L€Áj€ "¡àK§ÖFR[È)!|È7777BUFRØÈÿ  äÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  ‘dÈ*:&L€ÓˆÉ“ ÿúºÿõt °xÿý]ÿúº2d$ÿW@ÿþ®2dŸVL€F”@žÉ5_2d€*” € € ɘ²d T À Q“ Te²d,€ ]¾²2ÌZ ¹ÀR7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  –Å“ ³ 2ddÈD?þ®€ý]«€?ÿW@þ®€ ÿÕÐ?ÿ« ì™§Ù“ ј@€{öL€F”VšÉ5{€€(ð ²d € L€Áj€ "¢@K×ÖFRYóm"€}¤7777BUFRDÈÿ  –ÀÁÂÀÁ !!À!à !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  B„*9vL€ÇÐÉý]ÿúºW€<ÿW@ÿþ®²dŸvL€F”@fÉ5]!B€)¤ € € _¾²2Ó­ ±ØS7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  ™-“ ±,2d dÈD?þ®€ý]«@?ÿW@þ®€ ÿÕÐ?ÿ« l™§Õ“ ј@€|vL€F”VhÉ5†€(< ²d € L€Áj€ "¢ LÖFR\~u#d[–7777BUFR8Èÿ  ÀÁÂÀÁ !!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀŠP  ™ý“ °ÿúºÿõt ­xÿþ®ÿý]dÈ0>Ì™ŒÀݲd4 ´vL€¬tC )“ T¨¬õ‘”€×HûDÁL7777BUFRØÈÿ  äÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÀÂÀÖP  B„*?FL€×pÉ“ ÿúºÿõt ®xÿý]ÿúº2d$ÿW@ÿþ®²dŸfL€F”@„É5e!B€) € € ɘ²d T À Q“ Te²d,€ €a>²2ÌZ +¨MÐ7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  “¡“ ±ô2dÿW@?þ®V@ÿÕÐ?ÿ« L™§Ù“ ј@€{æL€F”V‚É5z€€) ²d € a¾²2ƧÉÇè@ 7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  –“ ±ô2dÿW@?þ®U€ÿÕÐ?ÿ« ¬™§Ñ“ ј@€|FL€F”V¨É5x€*l ²d € b>²2Ï›i%ƒ8P7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  šy“ ±ô2dÿW@?þ®UàÿÕÐ?ÿ« ,™§Õ“ ј@€|(@F”VŠÉ5ˆ€€(  ¡B € €b¾²2èÕ©&ï¨)`7777BUFRŒÈÿ  ¾ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!ÃÀÀ°P  ™Y“ ²X2ddÈD?þ®€ý]«€?ÿW@þ®€ ÿÕÐ?ÿ« Œ™§Ñ“ ј@€|&L€F”VœÉ5†€(Ü ²d € L€Áj€ "£pLgÖFR[ó…%,Ž7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  —ù“ ±ô2dÿW@?þ®U ÿÕÐ?ÿ« ì™§é“ ј@€|L€F”VÆÉ5w€€)T ²d € €c¾²2ˉ©)`¨1 7777BUFR6Èÿ  ŽÀÁÂÀÁ !!À!à !!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀŠP  dÈ*;æL€À#ÿêèÿÕÐ*´ãÿúºÿõt “ Àû2d4  ³¦L€«1“ tM TT¨ø!õ‘”€ÖMIz8‰7777BUFRFÈÿ  ˜ÀÁÂÀÁ !!À!Ã!!À!ÃÀÁ !!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁÀP  —Õ“ ±ô2dÿW@?þ®U ÿÕÐ?ÿ« Ì™§å“ ј@€|&L€F”VºÉ5u€€*¼ 2d € €d¾²2Ñ< 0˜1p7777BUFRÈÿ  ÀÁÂÀÁ !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÀÁ 3!!À!ÃÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  —q“ ²î2ddÈD?þ®€ý]¬?ÿW@þ®€ ™ ÿÕÐ?ÿ« l™§Ù“ ј@€|FL€F”V¤É5x€€(< 2d € ɘ²dr à Q“ Te2d,€²dB@ \€ P¤L§ÖFR[`&J‹d7777BUFRÈÿ  ÀÁÂÀÁ !!À!à !!À!Ã!!À!Ã!!À!ÃÀÁ !!À!ÃÁÂ!!À!ÃÁ ?!!À!ÃÀ =!!À!ÃÀÁÀÁ !!À!à !!À!ÃÁ !!À!à !!À!ÃÀÁ !!À!à !!À!à !!À!à!!À!à!!À!à!!À!ÃÁ !!À!à !!À!à !!À!ÃÀÁÀðP  dÈ*&öL€ÓˆÉ“ ÿúºÿõt °xÿý]ÿúº2d$ÿW@ÿþ®2dŸvL€F”@JÉ5k2d€)à € € ɘ²d T à Q“ Tf2d,€²dB@ 5 P¤ L·ÖFRY4i&k š7777dballe-7.21/extra/bufr/pilot-gts2.bufr0000644000175000017500000000104413022043102014536 00000000000000BUFR$N€Ó Ù ÿÿ¬D  €„É2„A…ÚÇüÍÿÿÿÿÿÿÿÿÿÿÿÿý~^û>^dzÀð=”ÐÑ鲪‡‰¦ßÿÿÀ€BCÿÿÿÿÿÿÿüwÁkÿÿøçîÿÿÿÿÿÿÿ„ø2ÿÿ<ÒÿÿÿÿÿÿÿðïOÿÿà@•õÿÿÿÿÿÿÿýÿá-ÿÿüòZ¿ÿÿÿÿÿÿÿü¿ÿÿG—ÿÿÿÿÿÿÿù—ÿÿð ÈzÿÿÿÿÿÿÿþÿðFÿÿþy_ÿÿÿÿÿÿÿã¾_ÿÿÀ€›ÿÿÿÿÿÿÿücÀ{ÿÿøã>ÿÿÿÿÿÿÿ}xÿÿ<]/ÿÿÿÿÿÿÿó/ÿÿà@ŠÉÿÿÿÿÿÿÿþàeÿÿüñJ?ÿÿÿÿÿÿÿÂ| ¿ÿÿ'ÿÿÿÿÿÿÿ÷‡çÿÿð Ä’ÿÿÿÿÿÿÿþÿðFÿÿþx‡ÿÿÿÿÿÿÿÞ¾_ÿÿÀ€£ÿÿÿÿÿÿÿü;Á@ÿÿø€ÿÿÿÿÿÿÿÿÿÿÿÿÿð7777dballe-7.21/extra/bufr/cdfin_synop.bufr0000644000175000017500000006337213022043102015061 00000000000000BUFRlN€ Ù ÿÿ¬G  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…þÿÿÿÿÿú °±´2·/²L0¶²7긄 Ð ó“}¿xÿÿÿÿÿÿÿàØ_í`ÿÿÿüúÿÿÿÿÿÿÿäñþ<#|ïøàüxÞ€<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€½þ¼Þ/ÿÿÿÿÿÿÿßëÀÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿþ<^þßhðÿûûÿÿÿÿÿÿÿÿÿÿÿí1ÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø7777BUFRxN€ Ù ÿÿ¬   €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A… ÿÿÿÿÿ ÷&§§*©$£¤²L0³U7×0)Öõ òqý^þøÿÿÿÿÿÿàÕ£íQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàßÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^¿×€ÿÿþþŸÿÿïéðÿÿÿÿÿñâ÷öð÷€§ÿßÛÿÿÿþÓÿð<ÿÿÿiï~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀŒÌÌÈLLŒ È7777BUFRhN€ Ù ÿÿ¬ª  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH718 ÿÿ¥:²¶4±´%¶0²¹0·60³²²L0¸_8¬ð˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFR’N€ Ù ÿÿ¬€  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…$ÿÿÿÿÿZ§ §!¬–§¡¤"¬/²L0›¦‚7‰À« ó8ýÞÿxÿÿÿÿÿÿÿàÙíW¿ÿÿÿü»Ÿÿÿÿÿÿÿÿäñþ<2|ßïøàúù|/Äÿÿ#ÿþOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç¿×«Õÿÿÿÿÿÿÿÿÿÿûýx>ÿ¾ÿÿûú|ÿÿ¿§Àÿÿÿÿÿç‹ßÛÃÞŸÿoÿÿÿûâÿÀçÿÿý¦?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ333 90710 555 60005 93100 7777BUFRŒN€ Ù ÿÿ¬€  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ-&¢ª-£)"©¡ ª,/²L0¡Á8 ó—}ŸøÿÿÿÿÿÿÿàÙ;í\¿ÿÿÿü}ÿÿÿÿÿÿÿ×ñýü2|ïøàûøÞ@<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=þ½^¯ÿÿÿÿÿÿÿÿÿÿßëÀ÷ýðÿÿßÓàÿÿýý>?ÿÿÿÿÿ<^þÞ(ðÿûûÿÿÿßÿþßÿÿí1ÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø!™™™ɹ‰©©©±©É™‰7777BUFR€N€ Ù ÿÿ¬€  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ.¦¢ª-§ §!¬²L0 ˆ‚8cÐðÿÿóm}ÿøÿÿÿÿÿÿÿàÙ'í[ÿÿÿüúÿÿÿÿÿÿÿ×ÿÿü2ÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^¿ï€ÿÿþþŸÿÿïéðÿÿÿÿÿùâ÷öðWŸÿßÛÿÿÿþøŸÿðRÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÌÌÌÈL ÌL MMH Œ H7777BUFR’N€ Ù ÿÿ¬€  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…$ÿÿÿÿÿZ' §!¬–¢©©¢¬/²L0œß8L`’ ô óˆýÿøÿÿÿÿÿÿÿàÙïí_?ÿÿÿüÔŸÿÿÿÿÿÿÿäñþ<#|ßïøàúù¼/Åÿÿ#ÿþOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç¿×«Õÿÿÿÿÿÿÿÿÿÿûýx>ÿ¾ÿÿûú|ÿÿ¿§Àÿÿÿÿÿç‹ßÛÃÞ?ÿoÿÿÿûâÿÀûÿÿý¦?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ333 90710 555 60005 93100 7777BUFRŒN€ Ù ÿÿ¬€  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ!"© §!§§/²L0‹jB7àž Þ óEý~þxÿÿÿÿÿÿÿàÛín?ÿÿÿüáÿÿÿÿÿÿÿËñý¼2|§”àûy@<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=þ½^¯ÿÿÿÿÿÿÿÿÿÿßëÀ÷ýðÿÿßÓàÿÿýý>?ÿÿÿÿÿ<^þÞPðÿûûÿÿÿßÿþ?ÿÿí1ÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø!™™™ɹ‰©©©±©É™‰7777BUFRŒN€ Ù ÿÿ¬€  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ’&*¬"ª¤¦/²L0‘â‚8±ð| % ó]}þøÿÿÿÿÿÿÿàÚ{íbÿÿÿÿü}ÿÿÿÿÿÿÿËñý¼F|~§”àûxÞ,€<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ýþ¼Þ/ÿÿÿÿÿÿÿÿÿÿßëÀ÷ýðÿÿßÓàÿÿýý>?ÿÿÿÿÿ<^þÞð)ÿûûÿÿÿßÿþ ÿÿí1ÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø!™™™ɹ‰©©©±©É™‰7777BUFRhN€ Ù ÿÿ¬À  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH908 ÿÿ¦··9±´0º–¥°¶:2¹42¹12²L0³Yb8C´$†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRˆN€ Ù ÿÿ¬,  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ õ)¨ —¦ ) ª«"§$¢©"²L0²Ø7b!ü: òíýßøÿÿÿÿÿÿÿàÖãíU?ÿÿÿü–ÿÿÿÿÿÿÿäñÿüßïøàù~ü/_ïÂ7‡ñýøOñÿÿäÿÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþd÷ú÷ûÿÿÿÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿO€ÿÿ÷ôøÿÿÿÿÿøñ{û}{À{ÿïíÿÿÿÿiÿøÿÿ´Ç€÷¿GÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàFffd&&Fd7777BUFR|N€ Ù ÿÿ¬,  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ '&*¬"¦¡'ª©#—¦*¬"¦¡'ª©/²L0¨X‚8L`P( ó%ý_yÿÿÿÿÿÿàØ7íIÿÿÿÿü»Ÿÿÿÿÿÿÿÿ×ñýü2|ïøàûøÞ<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=þ½^¯ÿÿÿÿÿÿÿÿÿÿßëÀÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿþ<^þÞðÿûûÿÿÿÚcÿþŸÿÿí1àQïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø™™™ɉ‘¡7777BUFRhN€ Ù ÿÿ¬À  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK300 ÿÿ«´·:2¹9¸2¶:²L0¯Èâ8BØ DÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFR|N€ Ù ÿÿ¬œ  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ ¾!"¢¥—¦  ©ª)$¡¤* ¨¦²L0¸76ô   óÊý^ÿøÿÿÿÿÿÿÿàØëíeÿÿÿý,ÿÿÿÿÿÿÿäñÿü#ßïøàü~À<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=þ½^¯ÿÿÿÿÿÿÿÿÿÿßëÀÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿþ<^þßJðÿûûÿÀ{Úcÿþÿÿí1à=ïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø™™™ɉ‘™7777BUFRhN€ Ù ÿÿ¬œ  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK308 ÿÿ¦0º¸2¹0º4©±´2´²1´2·²L0® 8˜#ÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬œ  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK310 ÿÿ¨9:²¶–«°º=2¹0º4²L0¯>"8¹ü´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬î  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH512 ÿÿ§2º:2º0¶¤:²¶9º²L0¼Ý8><bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ«þ~  5€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK419 ÿÿ§¶9²7¹3²L0¬)8ÆŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàØÃíU?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ«ÿ7  7€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK210 ÿÿ©±´72´³2¶37¹9º40º¹²L0°¥‚8æp(úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÕËíF?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ«ÿ7  7€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH522 ÿÿª7²·4¹»7¹9º²L0¼¾²8ü(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙwíeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ«ÿ7  7€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH606 ÿÿ¤2´·9±2¹3–©±´62´²2·²L0¹µÒ7òLÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙ;ígÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ«ÿ™  8€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK701 ÿÿ¥´¹3¡2º¹2·²L0§˜¢9øRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRŒN€ Ù ÿÿ¬î  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ ¾!"¢¥—¦  ©ª)$¡¤* ¨¦²L0¸76ô   óÊý^ÿøÿÿÿÿÿÿÿàØëíeÿÿÿý,ÿÿÿÿÿÿÿäñÿü#ßïøàü~À<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=þ½^¯ÿÿÿÿÿÿÿÿÿÿßëÀÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿþ<^þßJðÿûûÿÀ{Úcÿþÿÿí1à=ïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø!©©©©‰‰¡©‰‘‘©™™¡ɉ‘™7777BUFRŒN€ Ù ÿÿ¬î  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ ¼¢¦& «©²L0»¢6ìÐÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙ‹ík¿ÿÿÿýQŸÿÿÿÿÿÿÿäñÿü#ßïøàü~À<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=þ½^¯ÿÿÿÿÿÿÿÿÿÿßëÀÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿþ<^þßJð ÿûûÿÀSÚcÿþÿÿí1à=ïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø!©©©©‰‰™©‰‘‘©™¡ɉ‘™7777BUFRˆN€ Ù ÿÿ¬î  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ à©!¢§ «©²L0¿K‚8<À^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙ‹íi?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿñâ÷öú÷€WÿßÛÿþžÓÿð(ÿÿÿiO~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁ MMH LLL È LLŒ ˆ LÌ ÌˆLLŒ ˆ7777BUFR€N€ Ù ÿÿ¬   €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿV¢¨$§ ¦²L0—8ðp óDý^ÿøÿÿÿÿÿÿÿàÙígÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^¿ï€ÿÿþþŸÿÿïéðÿÿÿÿÿùâ÷öð÷€ÿÿßÛÿÿÿþøŸÿð>ÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÌÌÌÈL ÌL MMH Œ H7777BUFR€N€ Ù ÿÿ¬   €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿÃ&'§)–¦"–© ª§$¢©²L0„u6)€ C óSüÿ~ýxÿÿÿÿÿÿàÛ§ís?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^¿ï€ÿÿþþŸÿÿïéðÿÿÿÿÿùâ÷öñG÷ÿßÛÿÿÿþøŸÿðbÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÌÌÌÈL ÌL MMH Œ H7777BUFRhN€ Ù ÿÿ«ÿ™  8€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úJ702 ÿÿ¨2¹6§2·74³²L0§T28Ê<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙÇíVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿûÿøÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬b  :€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH768 ÿÿ¦·²·1´2·3¶0²10±´¤4¶²L0ºÑ’8ºØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿûÿøÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿñâ÷öú€§ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬b  :€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH827 ÿÿ§4²2³³²·©±´6´²:²L0µ;B8ìLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà׫í]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬ï  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK212 ÿÿ©7º412´(9:²¶²L0°·¢8ÎÄ&ÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿñâ÷öñ—€÷ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRˆN€ Ù ÿÿ¬Ó  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ ø"¦)¢§!'©'/²L0²¸Â8- %¨ò ò³}ŸxÿÿÿÿÿÿÿàÖ“íR¿ÿÿÿüWŸÿÿÿÿÿÿÿäñýü|ïøàøøþ|/_‡ïãxOñÿÿäÿÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿëðOÿÿÿÿÿÿÿÿÿÿÿþ÷úòø¿ÿÿÿÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿO€ÿÿ÷ôøÿÿÿÿÿøñ{û}£À{ÿïíÿÿÿÿiÿøÿÿ´ÇG¿GÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàFffd&&F„7777BUFRhN€ Ù ÿÿº¥ø 9€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK400 ÿÿ¢0¹±:¹3²L0­ˆ¢8 °ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿº¤ 5€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH606 ÿÿ¤2´·9±2¹3–©±´62´²2·²L0¹µÒ7òLÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙ;ígÿÿÿÿü}?ÿÿÿÿÿÿÿËÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öøw€§ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿº¤ 5€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH827 ÿÿ§4²2³³²·©±´6´²:²L0µ;B8ìLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà׫í]ÿÿÿÿü2?ÿÿÿÿÿÿÿäÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öú€§ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿº¤ 5€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK210 ÿÿ©±´72´³2¶37¹9º40º¹²L0°¥‚8æp(úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÕËíF?ÿÿÿü}?ÿÿÿÿÿÿÿËÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öú€§ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿº¦` :€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úJ702 ÿÿ¨2¹6§2·74³²L0§T28Ê<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙÇíVÿÿÿü}?ÿÿÿÿÿÿÿäÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿûÿøÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öð€ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿº¥. 7€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH522 ÿÿª7²·4¹»7¹9º²L0¼¾²8ü(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙwíeÿÿÿü}?ÿÿÿÿÿÿÿäÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öú€§ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿº¥. 7€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK419 ÿÿ§¶9²7¹3²L0¬)8ÆŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàØÃíU?ÿÿÿüú?ÿÿÿÿÿÿÿäÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïõÿÿÿÿÿÿÿÿÿÿÿÿþÿ^ÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öûG€§ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿiÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRxN€ Ù ÿÿ¬;^  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A… ÿÿÿÿÿV¢¨$§ ¦²L4—8ðp óD}>ýxÿÿÿÿÿÿàÙ;í\¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿùâ÷öð÷€ÿÿßÛÿÿÿþøŸÿð>ÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀŒÌÌÈL ÌL7777BUFRhN€ Ù ÿÿº¦` :€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK701 ÿÿ¥´¹3¡2º¹2·²L4§˜¢9øRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬&»  8€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK210 ÿÿ©±´72´³2¶37¹9º40º¹²L4°¥‚8æp(úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÕóíDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬&»  8€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH606 ÿÿ¤2´·9±2¹3–©±´62´²2·²L4¹µÒ7òLÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙcíjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬&»  8€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úJ702 ÿÿ¨2¹6§2·74³²L4§T28Ê<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÚíNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿûÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬&»  8€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH522 ÿÿª7²·4¹»7¹9º²L4¼¾²8ü(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙ‹íi?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬'€  :€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH768 ÿÿ¦·²·1´2·3¶0²10±´¤4¶²L4ºÑ’8ºØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿûÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿñâ÷öù·€§ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRxN€ Ù ÿÿ¬;ð  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A… ÿÿÿÿÿ ÷&§§*©$£¤²L4³U7×0)Öõ òr}^ýxÿÿÿÿÿÿàÕËíU?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿñâ÷öðW€§ÿßÛÿÿÿþøŸÿð2ÿÿÿ|Oï~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀŒÌÌÈLLŒ È7777BUFRhN€ Ù ÿÿ¬8  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK212 ÿÿ©7º412´(9:²¶²L4°·¢8ÎÄ&ÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿñâ÷öñG€§ÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFR‚N€ Ù ÿÿ¬7í  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ ø"¦)¢§!'©'/²L4²¸Â8- %¨ò ò³ýžþxÿÿÿÿÿÿÿàÖ»íM¿ÿÿÿüWŸÿÿÿÿÿÿÿäñýü#|ïøàúøþ¼/Âxÿÿ#ÿþOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç¿ÿ«Õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûú|ÿÿ¿§ÀÿÿÿÿÿÇ‹ßÛíßÿoÿÿÿûâÿÀ£ÿÿýñ<½ú?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ333 91203 7777BUFRhN€ Ù ÿÿ¬8Y  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH718 ÿÿ¥:²¶4±´%¶0²¹0·60³²²L4¸_8¬ð˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRlN€ Ù ÿÿ¬8Y  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…þÿÿÿÿÿú °±´2·/²L4¶²7긄 Ð ó“}¾ýøÿÿÿÿÿÿÿàØ×í_?ÿÿÿüúÿÿÿÿÿÿÿäñýü#|ïøàûøÞ€<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿý^¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿþ<^þß^ðÿûûÿÿÿÿÿÿÿÿÿÿÿï‰ÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø7777BUFR‚N€ Ù ÿÿ¬=h  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ õ)¨ —¦ ) ª«"§$¢©"²L4²Ø7b!ü: òíý¾þxÿÿÿÿÿÿÿà×íSÿÿÿÿü–ÿÿÿÿÿÿÿäñÿü#ßïøàûÿ~|/ïÂÿÿ#ÿþOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç¿ÿ«Õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûú|ÿÿ¿§ÀÿÿÿÿÿÇ‹ßÛé^ŸÿoÿÿÿûâÿÀ£ÿÿýñ<½ú?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ333 91203 7777BUFR|N€ Ù ÿÿ¬=h  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ '&*¬"¦¡'ª©#—¦*¬"¦¡'ª©/²L4¨X‚8L`P( ó%}ýxÿÿÿÿÿÿàØ›íP?ÿÿÿü»Ÿÿÿÿÿÿÿÿ×ñýü2|ïøàûøÞ€<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿý^¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿþ<^þÞ(ðÿûûÿÿÿßÿþÿÿï‰à=ïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø™™™ɉ‘™7777BUFRhN€ Ù ÿÿ¬9Ú  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK310 ÿÿ¨9:²¶–«°º=2¹0º4²L4¯>"8¹ü´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬9Ú  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH908 ÿÿ¦··9±´0º–¥°¶:2¹42¹12²L4³Yb8C´$†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬9Ú  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK300 ÿÿ«´·:2¹9¸2¶:²L4¯Èâ8BØ DÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬9Ú  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH512 ÿÿ§2º:2º0¶¤:²¶9º²L4¼Ý8><bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFR‚N€ Ù ÿÿ¬9Ú  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿZ§ §!¬–§¡¤"¬/²L4›¦‚7‰À« ó8}¾üxÿÿÿÿÿÿàÙíW¿ÿÿÿüúÿÿÿÿÿÿÿäñþ<2|ßïøàûy|/Äÿÿ#ÿþOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç¿ÿ«Õÿÿÿÿÿÿÿÿÿÿûÿø?ÿÿÿÿÿÿûú|ÿÿ¿§Àÿÿÿÿÿç‹ßÛž?ÿoÿÿÿûâÿÀûÿÿýñ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ333 90710 93100 7777BUFR|N€ Ù ÿÿ¬9Ú  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ-&¢ª-£)"©¡ ª,/²L4¡Á8 ó–ý~üøÿÿÿÿÿÿàÙŸíXÿÿÿÿü}ÿÿÿÿÿÿÿ×ñýü2|ïøàûøÞÀ<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿý^¯ÿÿÿÿÿÿÿÿÿÿßÿÀÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿÿ<^þÞðÿûûÿÿÿßÿþÿÿï‰ÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø™™™ɹ‰É™‰7777BUFRxN€ Ù ÿÿ¬9Ú  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A… ÿÿÿÿÿ.¦¢ª-§ §!¬²L4 ˆ‚8cÐðÿÿómý>ýøÿÿÿÿÿÿÿàÙ;íR¿ÿÿÿüúÿÿÿÿÿÿÿäÿÿü2ÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüïÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿùâ÷öð÷€×ÿßÛÿÿÿþøŸÿðMÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀŒÌÌÈL ÌL7777BUFR|N€ Ù ÿÿ¬9Ú  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿZ' §!¬–¢©©¢¬/²L4œß8L`’ ô ó‡ýÞüxÿÿÿÿÿÿàÚí`ÿÿÿüÔŸÿÿÿÿÿÿÿäñþ<2|ßïøàûù@<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿý^¯ÿÿÿÿÿÿÿÿÿÿßÿÀÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿÿ<^þÞð.ÿûûÿÿÿßÿþßÿÿï‰ÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø™™™ɹ‰É™‰7777BUFR‚N€ Ù ÿÿ¬9Ú  :€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ!"© §!§§/²L4‹jB7àž Þ óEýžüxÿÿÿÿÿÿÿàÚ?ík¿ÿÿÿüúÿÿÿÿÿÿÿ×ñýü2|ßïøàùù¼/oÅHÿÿ#ÿþOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç¿ÿ«Õÿÿÿÿÿÿÿÿÿÿûÿø?ÿÿÿÿÿÿûú|ÿÿ¿§Àÿÿÿÿÿç‹ßÛÅ¿ÿoÿÿÿûâÿÀ»ÿÿýñ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ333 90710 93100 7777BUFRxN€ Ù ÿÿ¬9Ú  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A… ÿÿÿÿÿ’&*¬"ª¤¦²L4‘â‚8±ð| % ó\ýþûøÿÿÿÿÿÿàÚËíC¿ÿÿÿþîÿÿÿÿÿÿÿÿÿÿüFÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿùâ÷öñGOÿßÛÿÿÿþøŸÿðHÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀŒÌÌÈL ÌL7777BUFRhN€ Ù ÿÿ¬:@  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK308 ÿÿ¦0º¸2¹0º4©±´2´²1´2·²L4® 8˜#ÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬%’  5€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úK419 ÿÿ§¶9²7¹3²L4¬)8ÆŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙ‹íM¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFRhN€ Ù ÿÿ¬%’  5€:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…úH827 ÿÿ§4²2³³²·©±´6´²:²L4µ;B8ìLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàØí\¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿáâ÷öÿÿÿÿÿßÛÿÿÿÿÿÿÿÿÿÿÿÿ|Oÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ7777BUFR|N€ Ù ÿÿ¬:ü  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ ¼¢¦& «©²L4»¢6ìÐÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙcía¿ÿÿÿýEÿÿÿÿÿÿÿäñÿü#ßïøàü~€<ÿùÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿý^¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÓàÿÿýý>?ÿÿÿÿþ<^þß,ðÿûûÿÀ{ßÿþÿÿï‰à)ïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø©©©©™™¹ɉ‘‘7777BUFRxN€ Ù ÿÿ¬:ü  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A… ÿÿÿÿÿ à©!¢§ «©²L4¿K‚8<À^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙŸín?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþãÿÿÈÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþŸÿÿïéðÿÿÿÿÿñâ÷öú€WÿßÛÿþÞøŸÿðÿÿÿ|OO~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀMMH LÌ ÌLLŒ ˆ7777BUFR‚N€ Ù ÿÿ¬:ü  €:€ÁZ„ÂÂ#Â$Â/Â0Â%Â8Â+ *Â,„AÂ-Â.„A…ÿÿÿÿÿ ¾!"¢¥—¦  ©ª)$¡¤* ¨¦²L4¸76ô   óÊý^ýxÿÿÿÿÿÿÿàÙ;ík¿ÿÿÿýEÿÿÿÿÿÿÿäñÿü#ßïøàùÿ~^Ç«ðð=ªT¡èîÈ—‡”<<µÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ€xWžJöÿÿÿÿÿÿÿþ¤»é¾ðŒÿÿþ ÿÿÿÿÿÿÿÿÿÿÿÿü7777dballe-7.21/extra/bufr/temp-gts3.bufr0000644000175000017500000000117213022043102014357 00000000000000BUFRz[  €É4R"nÿÿÿÿÿÿÿÿˆ¨“ìàW˜¿Âx3ÀšÿÿÿÿüÿÿÿÿáðÀ¿ÿìÿÿÿÿÿÿÿÿÿÿÿûè'ÿÿÞÿÿÿÿÿÿÿÿÿÿÿûÔ/¿ÿÑÿÿÿÿÿÿÿÿÿÿÿûü;ÿ†Àÿÿÿÿÿÿÿú“Šzÿÿÿÿ½ÿÿÿÿÿÿÿÿÿÿÿü82ÿ‡¦ÿÿÿÿÿÿÿÿúšjl¿ÿ“ÿÿÿÿÿÿÿÿÿÿÿÿü$¿ÿ†ÿÿÿÿÿÿÿÿú*v/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÔ!¿ÿvÿÿÿÿÿÿÿÿÿÿÿÿûü%ÿoÿÿÿÿÿÿÿÿÿÿÿü$!¿ÿfÿÿÿÿÿÿÿÿÿÿÿÿü!¿ÿ]ÿÿÿÿÿÿÿÿÿÿÿÿü8"ÿÿ†Xÿÿÿÿÿÿÿúž*…/ÿÿÿÿTÿÿÿÿÿÿÿÿÿÿÿü8ÿKÿÿÿÿÿÿÿÿÿÿÿûèÿÿ9ÿÿÿÿÿÿÿÿÿÿÿû¬ÿ3ÿÿÿÿÿÿÿÿÿÿÿûèÿ-ÿÿÿÿÿÿÿÿÿÿÿü8ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿü`&¿ÿ"ÿÿÿÿÿÿÿÿÿÿÿÿü`!¿ÿÿÿÿÿÿÿÿÿÿÿÿÿü%ÿÿÿÿÿÿÿÿÿÿÿÿü%ÿ ÿÿÿÿÿÿÿÿÿÿÿÿûÔ3¿ÿÿÿÿÿÿÿÿÿÿÿÿûÀ7ÿ‡ýÿÿÿÿÿÿÿÿúšj„‹À;@7777dballe-7.21/extra/bufr/ed4.bufr0000644000175000017500000203261013022043102013213 00000000000000BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@0$’I$’JI$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’Im¶Ûm¶Ûm¶Û¶Ûm¶Û`Šˆd)Ž„©iRØ×>”é[\ÈS S_Êt­®ˆd)Ž„©lkŸÊt­®ˆdc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUUUUUUUUUUUUUUUUUUUUUUUPUUð `= 0Ô7 ‚±²| 5˜–ÃçïI—=bUÌtPtPb$øçïÕŸ€± Žçï Ž Žô$çïçï=b ŽÃYáÔ€€,€¤Ë€±€çïb€…ô}ÕøÕøtP±YÕø¥$½ŽÕø½Žn6=b1-=b=bI—UÌn6tPbn6n6UÌÃ$ø€…n6=b=bn6Œº½Ž½Ž˜ïn6I—=bUÌ=bà ŽÉj€áÔY ŽYI—Œº1-Y½5€˜–€s÷€Us$Ÿ 57 s€…‚7 € 5 5$Ÿa¨€,€€,€I> 5j$Ÿ$Ÿ0Ô0Ô 5I>ú—€…ú—‚7 €jç˜ïtPb$øÕŸ1-=b7777BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@(0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶àŠøFS¥mpC!Lt%MsáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð a€…±YŒºUÌ=b=b=b1-1-I—çïUs= g€¤Ë€çïb=bb Ž Žô$ô$çïY$øb1-YÉj€çïÉj€Œa€= I>I>I>I>˜–€ÕŸYÕŸ€ÕŸ€±€¤Ë€±€¤Ë€±€½5€ÕŸ€Œa€Us0Ô= $Ÿ 5ú—ú—‚7 ú—€I>½5€ô$ÃÉj€¤Ë€½5€½5€½5€çïçï Žçï¤Ë€Œa€I>= 0Ô 5±²}ú—€…‚7 ‚7 €Usô$n6ÃÉj€±€ÕŸ€ÉjÃô$çïI—n6b1- Žô$ÕŸ€±€g€Œa€±€˜–€ÕŸ€áÔ Ž1- Žô$1- Žb ŽáÔ€ÕŸ€áÔ€ÕŸ€½5€½5€ÕŸ€ÕŸ€½5€½5€7777BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@@0I$’I$’I$¤’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Ж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUQUUUUUUUUUUUUUUUUUUUUUUUUUð `¤Ë€½5€Œa€€,€€,€˜–€¤Ë€Éj€Éj€ÕŸ€áÔ€ÕŸ€áÔY Ž1-UÌI—=bô$áÔ€±€Œa€€,€g€½5‚±²|0Ô±$øtP½Žb€…tPbtPUÌŒºÉÃ½Ž±YÕøîbŒºbÃáÔ€áÔ€½5€ô$ÃÉj€½5€ô$çïÕŸ€ÕŸ€áÔ€ÕŸ€Éj€ÕŸ€¤Ë€g€I>I>0Ô= Usj0Ôa¨a¨± Žn6˜ï€…I—tPUÌáÔ€ô$ ŽUÌbn6tPbn6I—1-s÷€I>g€g€Œa€I> Ž1-UÌI—bn6I—1-UÌbbtPn6UÌI— ŽÕŸ€½5€¤Ë€Œa€$Ÿ 5jŒa€ÕŸ=b€…n6UÌ7777BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@T0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¹$’I-¶Ûm¶Ûm¶ÛvÛm¶Û`ж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÇÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUTUUUUUUUUUU@UUTUð aI—=bUÌUÌ$ø$ø=b$ø ŽYYçï±€s÷€I>$Ÿ 50Ôs÷€½5€çïáÔI—=bÉj€½5€˜–€±€ô$=b1-I—1-=bô$s÷€g€0Ô7 €…€…€Œa€…‚7 ‚7 €= = I>= I>0Ôg€½5€çïô$$øI—Ys÷€= $ŸjjUs€,€çï$ø Žçï$ø1-ÃÃY Ž$øÃ Ža¨Œa€˜–€Œa€0Ôg€I>$Ÿ7 €O€O€O€O€Œa€…‚±²|Us±€˜–€Œa€€,€˜–€¤Ë€Éj€áÔ Žô$ÕŸ€s÷€j+Ä}ú—€…€Os€O€Œas€Œa‚±²|Uss÷€I>I>0Ô= Us7777BUFR&bÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊBUUUUU]kZÖµ­k{Þ÷½ï{Þ÷½ï{Þ÷½ïœç9Îsœç9Îsœç9Îs½ï{Þ÷½ï{Þ÷½ï{Þ÷Þ÷½ï{Þ÷½ï{Þ÷½ïxŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*\#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUUTUUUUUUUUUTUUUUð `g€½5€¤Ë€0Ôa¨0Ô 5±²}s€…ss€O€Œa€I>0Ô= ½5€ÕŸ€˜–€€,€˜–€˜–€˜–€± Žô$Ã$ø=b$ø=bI—bI— ޽5€UsI>s÷€€,€±€±€±€˜–€˜–€Œa€˜–€0Ôa¨g€$Ÿj 5±²}ú—€…ú—ú—€…€Œa€…€Œas‚±²~±²~±²| 5 5$Ÿ= = 0ÔUs˜–€Éj€±€Œa€s÷€áÔ€áÔ€˜–€½5€a¨I>a¨ÕŸY=b$øYÉj€½5€Éj€ô$$øÃ$ø ŽUÌ=bô$Éj€g€0Ôú—€Œass€I>Éj€çïÕŸ€˜–€½5€±€s÷€s÷€Us0Ô0Ôa¨ 5$Ÿ= 7777BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠ!¦:¦¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUTUUUUUUUUUUUUUUUUUUU `jjOX€Œa ŽŒº‚²ô}=bI—1-€…I—hUÌ[æ[æ[æ[æ1-äˀŒa€[€g€¤Ë€Ûº˜–€Œa€¤Ë€€,€˜–€½5€½5€˜–€çïÃ=b¤Ë€Éj€OX€jZ~6â-hhh‚™H|0Ô€,€Éj€€,€Œa€˜–€¤Ë€Œa€€,€˜–€Ï…çï1-I—ÃÃÛº$ø1-1-ÃÃÃÉj€€,€˜–€Éj€½5€Ï…Ï…YÃ1-ô$=b ŽI—=b=bÃ1- Ž ŽÛº˜–€[€j 5I>I>= OX€[€OX€s÷€[€g€[€Œa€¤Ë€Éj€Ï…ÃÃY ŽYs÷€€,€[€Œa€±€Ûº½5Y1-˜ïèH7777sBUFR¶bÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€0’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹)Ò¶¸!¦:¦¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð _“‡' Ç|RH6+0`!`˜–$øc dpŒ0&% [€ªæ1-1†Ä¤ $ŸUsŒa Žé1†Ið?xÐ#`$Ÿ€,‚“à ë\À1—Pc. ÀBÁ=b’ÕV~¤~ð:] ˜– ŽéV~é¬?x 'À€jj† Æ\À.ŠlV`ž±$øbZ“à¡ Ö -ÆÀlV`ÀBÁn6Ül&\¬ü&% LK@Œa$øzÄ&\ ®`B@„€9ûÀpê@ÕŸ«?%ªKTH!‘À9ûÀpê@áÔzk1† @?x 5ð 0ÔUsªæ²&\~ð™p#`F0Às÷€Ï…²d?xŒ09ûÀLK@Œab1†Ÿ¼€€€ 57777 BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€40$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èKçÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUUUUUUUUUUUUUUUUUUUUUUUUýàb¥}|$Ÿ˜–€g€$Ÿjj 5 5 5j 5= 0ÔI> 5 5¥}}tPtPtPîbtPîb€0ÔUsI>= Us[€[€g€s÷€s÷€Œa€€,€Œa€Œa€Œa€g€[€Us0Ô0Ô0Ô0Ô[€s÷€s÷€Œa€Œa€¤Ë€ÕŸ€çï ŽYUÌ=b¥$Œº=bÃÃ1-ô$Éj€½5€˜–€˜–€Œa€˜–€¤Ë€±€çïÛº$øÃ1-$ø$øUÌ=bUÌI—=b=bÃÃô$ÃÃYY Ž Ž$ø1- Ž ŽYYÃ Ž Ž Ž1-I—=bI—1-1-Yô$ÕŸ€€,€Éj Žô$UÌŒº€…tPŒºâ-èH7777sBUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€H0 $’I$’I$’RI$’I$’I$›m¶Ûm¶ÛrI$’Km¶Ûm¶Ûm¶Ý¶Ûm¶Û`ŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2cŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUTUUUUUUUUð bîbâ-½ŽÕøîbÕø½ŽŒºn6UÌ$øI—UÌbn6n6¥$˜ïÕøÕø±YbÃ1-I—n6˜ï˜ï¥$½Ž˜ï±YtPtP˜ïn6tP˜ï=b¤Ë€s÷€a¨a¨I>UsI>= = I>g€áÔ=bI—I—n6n6U̘–€a¨$Ÿs÷Yô$¥$½ŽtPtP‚=»I—b1-n6±Y‚²1-YÃô$=b$ø=b=b½5€s÷€= 0Ô0Ô±²+Ä+Ä|$ŸUs˜–€±€˜–€±€áÔ€áÔYÃn6tP1- Žô$çïÉj€€,€= = $Ÿjja¨¤Ë€çïçïÕŸ€ÕŸ€áÔ€çïô$ÕŸ€7777sBUFR&bÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê‚UUUUUU[Þ÷½ï|cÆ1ŒcÆ1ŒcÆ1Œç9Îsœç9Îsœç9ÎskZÖµ­kZÖµ­kZÖµ­ï{Þ÷½ï{Þ÷½ï{Þ÷°‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUU@UUUUUUUUUUð `çï1-1-I—btPn6 Ž= €, ŽçïáÔ€Éj€Éj ŽÃçïÉj€½5€ô$ô$çïçïYáÔ€½5€½5€çïÃà Žô$ ŽáÔ€g€= s÷€±€˜–€áÔ1-=b1- Žô$çïçïÃô$ÃYáÔ€çïáÔ€ÕŸ€ÕŸ€ô$˜–€j7 €…€…‚±²~±²|0ÔI>g€a¨Usg€a¨ŒaYÕŸ€½5€½5€½5€€,€$Ÿ±²}ú—‚±²~7 €g€½51-UÌYŒa€±€ÕŸ€çïô$áÔ€Éj€½5€Éj€½5€Œa€g€g€g€0ÔI> 5= = €,€áÔ1-ô$ÃYô$çïçïô$1-UÌUÌ=b=bô$Y±€7777BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠˆd)Ž„±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUAUUUUUQUUUUPUð `g€0Ôj0Ôa¨Us˜– ŽI—UÌáÔ€ÕŸ€ÕŸ€çï$øŒº˜ïô}ÉÀ…UÌ1-˜–€g€s÷€Us0ÔUs˜–€áÔ€çï±€ÕŸ€ç€½5€¤Ë€€,€½5€ô$YYY1-1-UÌ=bô$Œa€€,€±€ô$ÕŸbb1-ÕŸ€ô$½5€½5$øI—1-$øáÔ€½5€½5€s÷€I>= jj$Ÿ+Ä~±²|jI>UsI>a¨Usa¨s÷€ÕŸ€Œa€˜–€˜–€¤Ë€½5€¤Ë€áÔ€ÕŸ€s÷€UsUs0Ô±²|$ŸUss÷€s÷€g€Us€,€Œa€g€a¨¤Ë€g€˜–€¤Ë€g€€,€0Ôj€…ú—ú—€…ú—ƒ+Ä|= ÕŸI—Ã7777 BUFR¶bÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¦5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]’Õ²&\H:5gà†GI—zÄdKTÆ ®`ð O€ @ 5/M`dµ@±I—1†>Æ øP#`LK@Éj«?bZd€ 5jj0Ô† |(™pF0À˜–UÌ1†Ÿ¼dp\À,@ F0Àž±UÌ«˜õˆÆ ÓXð *¹€$Ÿa¨dÐ-ÆÀX€@˜–€ÕŸbôÖ&\ –¨™p5gàªæ½Žƒb³c¾ q°O€#`9ûÀ^šÀg€çïÏÞd L¸:= ^šÀ¤ËYbZ&\Hýà9ûÀzçïÄW0 L¸ã`)2à/M`0ÔUsI>ô$ @ ýà8u LK@ŒaYÏÞ @|( øPð ReÀ½5€7777€0BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ00’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðU@UUUUUUUUUUUUUUUUUUPUUUUUUð `˜–€g€I>= j+Ä~±²~7 sss€…€…€…ú—€j+Ä| 5 5 5j$ŸUsa¨g€g€I>a¨g€$Ÿ 5j0Ô0Ô 5€,€˜–€Us= 0Ô$Ÿ$Ÿ0Ô= g€ç€UsI>0Ôs÷€a¨0Ô0ÔUs= Uss÷€áÔb¥$€…n6ÃÉj€áÔ€ô$ô$Ã$øáÔ€˜–€s÷€s÷€Us+Ä~±²~7 ‚±²|Us±€¤Ë€ÕŸ€Œa€= UsI>0Ô0ÔUs€,€¤Ë€a¨g€= I> 5ú—€…€…€…sú—€Us±€¤Ë€Œa€a¨Usg€a¨Us˜–€ÕŸÃYbŒºU̽5€€,€a¨a¨I>I>a¨7777 BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀH0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS [çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUPUUUUUUUUUUUPUUUUUUUUUTUð `¤Ë€ô$=bn6I— Žô$çïô$I—$øÕŸ€ÕŸ€ô$Œa€€,€s÷€˜–€UsjI>j7 ú—€ 5= ˜–€˜–€s÷€Usg€s÷€a¨a¨UsI>˜–€áÔ€ÕŸ€áÔ€½5€¤Ë€˜–€s÷€Us$Ÿj$Ÿ= 0ÔUs= UsI>0ÔUsg€¤Ë€ÕŸ1-UÌn6Œº$øÕŸ€˜–€Œa€I>ú—€Œa€…€$Ÿ¤Ë€ÕŸ€a¨$Ÿ$Ÿ0Ô$Ÿ€,€½5Y˜ï½Ž±YtP1-Ã$øY¤Ë€€,€= jI>I>Œa€çï½5€Éj€˜–€˜–€½5€áÔ€ô$Yçï¤Ë€g€a¨$Ÿ7 s€…€…ú—ƒ+Ä|0Ôa¨UsUsj0Ôj7777 BUFRbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÂLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ\0 $’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶ÐŠçÂ2+k€d)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðB!B„!B„!!B„!B„!B„!B„!B„!B„!B„!B„!B„!B„!B„!`€,€€,€Éj€˜–ƒ“†ÿtþŸcbZèHn6ô$ô$èHŒa€çïçï½5€½5€˜–€˜–€Ï…Éj€±€ô$I—½Ž±Y‚²±YY$øÉj‚Ÿcn6ô$n6tüŒa€ô$Yô$Ï…¤Ë€Ï…Ûº=b=b=b$øI—=b1-çïÏ…Éj€½5€±€˜–€Œa€¤Ë€Ï…1-I—O±=b=b[æÃ$øô$Ã[æO±h‚²äˀ€,€Œa€½5tP˜ï¥$¥$tP€ô$½5€±€˜–€€,€¤Ë€Œa€¤Ë€¤Ë€Éj€½5€½5€Éj€¤Ë€±€€,€˜–€g€g€˜–€˜–€±€çï ŽÕø‚ ç˜ï½Žh$ø Ž Ž Ž ŽO±=b1-Y½5€±€s÷€€,€7777$BUFR&bÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÂUUUUUUUUUUUUUU^sœç9Îsœç9Îsœç;Þ÷½ï{Þ÷½ï{Þ÷½ï}ï{Þ÷½ï{Þ÷½ï{Þ÷€„!B„!B„!D!B„ Šˆd)Ž…±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUPUUUPUUUUUUUUUUð b7 ‚7 €…€…ú—€0Ô±€Éj€s÷€I>UsUs€,€˜–€˜–€€,€½5€ÉjI—Ã$øô$áÔ€€,€ 50Ôg€áÔ Žô$½5€˜–€áÔ€áÔ€ÕŸ€áÔ€½5 Žô$g€= 5 5 5+Ä~7 €Œa€…€ 5I>˜–€s÷€a¨0Ô= $Ÿ= = a¨˜–€g€s÷€Éj€I>±²~7 ú—€…€…ú—€…s€…ú—€ 5= I>$Ÿ$ŸI>= jUs$Ÿ0Ô 5 5$Ÿ±²}€…€Œa€…ss€…‚7 €= g€$ŸI>a¨I>= Us0ÔI>Usj= €,€¤Ë€= 0Ôj±²~7 ƒ+Ä|g€˜–€s÷€0ÔI>7777BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê 0’I$’I$’I%$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èRØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UTUDUUUUEUUUUUUUUUUUPUUUUð `j$Ÿ0Ô= UsI>j0Ô0Ô= jUs0Ô±²}ss€O€O€…s€ 5= 5= I>= +Ä~±²+Ä}ú—‚7 €$ŸI>$Ÿ= 7 €j+Ä+Ä| 5jUss÷€˜–€¤Ë€Œa€s÷€I>0ÔI>½5€Uss÷€€,€Éj€áÔ€s÷€I>= +Ä|j$Ÿs÷1-Ã1-±€˜–€±€Œa€¤Ë€Œa€ÕŸ€ÕŸYYb€…bÃÃYÉj€€,€I>g€Œa€Éj€ÕŸ=b$øáÔ€±€½5=bô$ ŽYô$ÃYô$Éj€±€s÷€I>j0Ô±²~±²|j¤Ë€ô$Y¤Ë€Us±€çï½5€çïçï¤Ë€˜–Yn6Ã7777>BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê 0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUU@UUUUUUUUUUUUUUUUUUUUEð `0Ôa¨0Ô 5€…s€…‚±²|a¨Usa¨a¨I>a¨g€ô$€,€I>g€a¨Œa€I>$Ÿ 5j 5= $Ÿ€…€Œa€Œaú—€g€ 57 ‚7 ‚7 ƒ+Ä| 5j 5$Ÿ0ÔUsj$Ÿa¨¤Ë€I>$ŸÕŸƒ+Ä~7 s€ÕŸ˜ïÃÃ$ø˜ïŒºUÌ€…UÌâ-‚=»â-îbîb‚ ç1†bZô}±Yâ-îb±Y˜ï˜ï˜ïîb‚²¥$˜ïŒºn6bb1-n6bn61-±€g€a¨g€g€Usj 5= ˜–€ÕŸ€áÔ€¤Ë€Œa€Œa€Œa€Œa€˜–€¤Ë€Œa€€,€½5€Éj€ô$$øáÔ€˜–€Us0ÔI>0Ô+Ä|$Ÿs÷€7777>BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê80 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUAUUUUUPUUUUUUUUUUUUUð `½5ÃYçïáÔ€Éj€Œa€½5€Œa€¤Ë€¤Ë€g€g€s÷€g€a¨a¨$Ÿj$Ÿ 5$ŸŒa€½5€ô$Éj€½5€Œa€g€¤Ë€s÷€a¨g€g€g€g€a¨€,€€,€s÷€= I>I>€…‚7 €ja¨±€ÕŸ€±€˜–€Œa€g€€,€€,€s÷€g€= = ±btP=bÕŸ€s÷€ô$½5€ss‚7 ú—€…€$Ÿs÷€I>Usg€I>$ŸUsg€= I>Œa€€,€0Ô 5jUsUs±1-€…1- ŽÉj Ž Ž¤Ë€çîb‚ 罎Œºô}ÉñY˜ïI—$ø€,€a¨a¨˜–€çï1-UÌ=b Ž=bUÌ1- Ž7777>BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊL0 $’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUTUUUUUUUUUUPUUUð `ÉjY$ø$ø˜ïŒºtPn6bI—çïÕŸ€±€g€˜–€áÔ$ø=bô$ÃÃÕŸ€±€Éj€½5€ô$YI—ÕŸ€¤Ë€¤Ë€˜–€€,€¤Ë€Œa€I>a¨$øçïáÔ€ÕŸ€½5€˜–€±€Œa€±€Éj€çïÉj€g€ô$1-I—Éj€€,€I>I>j+Ä|0Ô±€ÕŸ$øÕŸ€ÕŸ€±€Œa€±€ÕŸ€Éj€˜–€½5€¤Ë€€,€ô$áÔ€g€I> 5±€= g€a¨¤Ë€g€€,€Œa€s÷€s÷€áÔ€¤Ë€¤Ë€Œa€Œa€Œa€0Ôj+Ä}ú—sú—€…ú—ƒ+Ä~±²~±²~7 €= 0Ôj+Ä|$Ÿja¨0Ô½5€áÔäˀ€,€Us7777>BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Êd0I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž…±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUAUUUUPUUUUUUUUUUQEUð b±²|0Ô0Ôg€¤Ë€½5€±€˜–€˜–€€,€€,€˜–€±€Éj€ô$çï½5€€,€€,€€,€$Ÿ+Ä}€…€…‚±²}ssƒ+Ä|s÷€ÕŸ€ç€¤Ë€€,€€,€s÷€ŒaÃÕŸ ŽáÔ€¤Ë€ÕŸ€Us±²}ú—€ 5+Ä~±²+Ä|g€g€½5€a¨I>UsI>a¨g€I>I>a¨a¨g€Œa€g€a¨= sƒ+Ä}ú—ú—€jI>Usa¨= = $ŸI>Us= I>I>= s÷€½5€Éj€çïÕŸ€¤Ë€±€Œa€a¨I>g€±€Éj€çïg€½5€±€Œa€€,€˜–€€,€˜–€ŒaÃbtPUÌÕŸ€Éj€Us+Ä|Us 5±²|= I>˜–€g€€,€7777>BUFR&bÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊUUUUUUUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï@„!B„!B„!D!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œc!B„!B„!@Š¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@U@@UEUUUUUUUUTUUUUUð `s÷€˜–€€,€¤Ë€a¨s÷€g€a¨a¨½51-¤Ëƒ+Ä~7 ú—ƒ+Ä~±²|j= a¨0Ô+Ä|Œa€…€…ú—ú—€…‚7 €…ƒ+Ä~7 € 5g€0Ô$Ÿ$Ÿ+Ä+Ä~7 €…€…€…‚±²|7 ‚7 ú—s€…s€…€…‚7 ƒ+Ä+Ä|$ŸUs0Ô$Ÿj+Ä|±²+Ä| 5I>Œa€¤Ë€Éj€½5€¤Ë€±€ô$ÕŸ€áÔ€±€½5€Œa€€,€˜–€Usú—ú—€…€…€0Ô€,€½5€˜–€˜–€€,€s÷€g€˜–€s÷€˜–€¤Ë€€,€a¨I>= Us$Ÿ$Ÿ+Ä|0Ô= = 5$Ÿs÷€Œa€˜–€¤Ë€Éj€çï=bà ŽáÔ€áÔ€Éj€½5€g€a¨7777BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛnÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUTUUUUUUUUUUUUUUUUTUUU@ð `I>0Ô0Ô 5±²~7 ‚7 ‚±²|$Ÿ¤Ë€áÔ€½5€s÷€Œa€½5€ÕŸ€½5€½5€˜–€€,€áÔ€±1-UÌŒº˜ïäˀg€0Ôj±²| 5jÉj1- Žçïô$Œa€Éj€ô$Y=b1-ÃÃI—UÌbI—$ø1-Éj€€,€= I>I>g€€,€˜–€Œa€$ŸI>Us$Ÿ$Ÿ0ÔI>$Ÿ¤ËYçïŒaYÕŸ€I>a¨ô$çïÉj€çïÃI—ÕŸ€g€Œa€I>áÔ€˜–€€,UÌb$øa¨g€Œa€Us$Ÿ7 ú—ƒ+Ä~7 ‚7 ‚±²~7 €Usa¨= 0Ôa¨I>= 0Ôa¨s÷€= = 0Ô= 0Ô+Ä~±²}ú—‚7 ú—‚7 €7777 BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@,0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUPUUUUUPUUEUU@UUUUð `= ¤Ë€áÔ€˜–€g€I>0ÔI>Usa¨g€a¨I>I>Us$Ÿj 5j$Ÿ0ÔI>g€¤Ë€Œa€a¨Usa¨Ãb˜ï$øÃUÌY€,€ÉjÉÃÕø½ŽtPI— Žj+Ä+Ä|g€çïÕŸ€a¨I>$Ÿ 5 5j 5$Ÿ$Ÿ$Ÿj$Ÿ0Ôjj$Ÿ0Ô€…‚7 €0ÔUsI>= 0Ô$Ÿ$Ÿ+Ä| 5$Ÿ0Ô= Us= 0Ô0Ôjj±²}ú—s€…€$ŸjI>a¨I>Us= I>= g€Usj˜–€˜–€0Ô+Ä~7 €Œass€O€Œa€…‚±²|= Œa€Us= $Ÿ= 0Ô7777 BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@@0$’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@UUUUUUUUUAUUUUU@UUUU@UUUUð `a¨a¨g€a¨0Ô 5jú—€Œa€Œas€Œa€Osƒ+Ä|= a¨UsUsUs= $ŸI>Usa¨a¨= 0Ô= g€a¨j$Ÿ$Ÿ 5= áÔ€áÔ€çïÕŸ€Éj€¤Ë€€,€Œa€Usg€€,€€,€Us= I>I>= 5ú—‚7 € 5$ŸUs½5UÌbçï€,€±€˜–€s÷€€,€Usg€˜–€a¨I>= 5= ú—‚7 ‚7 sú—ƒ+Ä|a¨Éj€áÔY½5€˜–€¤Ë€±€áÔ€áÔ€ÕŸ€±€€,€I>= j0Ôj±²+Ä~±²}ú—ú—€…ƒ+Ä|= s÷€g€€,€g€˜–€¤Ë€±€ÕŸ€±€±€Œa€˜–€€,€g€I>7777 BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@T0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ý¶Û`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡,kŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUPUUUU@UUUUUUð `= I>$ŸUsj$Ÿ0Ô= €,€Éj€ÉjY$øäˀ€,€½5€áÔYô$áÔ€ÕŸ€çïáÔ€Éj€±€½5€Œa€g€s÷€a¨¤Ë€áÔYô$ ޽5€ÕŸYô$ ŽÃô$ÕŸ€±€½5€Œa€€,€0Ô$Ÿ$Ÿss‚7 €$Ÿ€,€ÕŸ€±€˜–€±€Éj€Éj€Éj€áÔ€½5€¤Ë€€,€Œa€a¨I> 5 5 5±²~±²| 5g€¤Ë€ÕŸ€ÕŸ€Œa€€,€€,€g€€,€˜–€˜–€¤Ë€çïÉj€€,€0Ô+Ä~7 €…€…ú—€…sƒ+Ä|UsÉjYáÔ€Œa€½5€Œa€€,€±€Œa€±€±€€,€g€Œa€a¨g€I> 5j= j= ¤Ë€çïáÔÃ7777 BUFR&bÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊBUUUU]kZÖµ­kZÖµ­ï{Þ÷½ï{Þ÷½ï{Þ÷¾sœç9Îsœç9Îsœç9Î÷½ï{Þ÷½ï{Þ÷½ï{ß{Þ÷½ï{Þ÷½ï{Þ÷½àŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð a ŽÕŸ€˜–€€,€¤Ë€¤Ë€¤Ë€s÷€˜–€g€s÷€¤Ë€Éj€s÷€= j 5I>$Ÿ= a¨$Ÿa¨€,€= Us0Ô0Ôjg€Œa€ÕŸ€¤Ë€Us€,€s÷€áÔtPbI—$øçï±€˜–€Œa€½5€a¨j0Ô$Ÿ= a¨€,€= ±²~7 ‚±²|j0Ô= = €,€ô$Y½5€˜–€˜–€€,€áÔ ŽUs$Ÿj0Ôa¨0Ô$Ÿ 5jI>ÕŸô} ç¥$‚²½ŽtPÃI—1-Ã=bçïÉj€Éj€Œa€Œa€s÷€s÷€a¨s÷€áÔ€¤Ë€˜–€ô$˜ï‚1†²ÕøÕø˜ïn6$ø1-ŒºÉÀ…I—UÌUÌ$ø$ø$øUÌtP€7777BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€0I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹Êt­®ˆd)Ž„©l|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUEUUUUQUUUU@UUUUUUQEUUUUð atPb€…€…îbâ-‚Ið¤Ë€ 5+Ä| 5I>±€ÕŸ€çï±€g€¤Ë€¤Ë€˜– Žçï½5€ô$çïÕŸ€Œa€Œa€0Ô+Ä|ú—s‚±²|0Ôs÷€s÷€UsUs0Ô$Ÿ$Ÿ$Ÿ$Ÿ= I>0ÔUsg€I>= 5±²}ú—ú—ssƒ+Ä| 5j0ÔUsI>s÷€€,€çïçï±€Œa€€,€I>€,€a¨= I>= 0Ô 57 ss€Œa€…s€…‚7 ‚±²~±²~7 ‚7 ‚7 ú—ƒ+Ä+Ä| 5= a¨s÷€s÷€= ±²|±²|jUss÷€g€€,€€,€€,€a¨a¨UsI>Usa¨0ÔI>Usg€j+Ä}ú—ƒ+Ä+Ä|7777†BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ!¦:¥±Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð b7 ‚7 €= g€Œa€€,€g€€,€a¨= I>I>a¨g€Œa€çïÃçï±€= 0Ô 5jI>s÷€¤Ë€ÕŸ€Éj€±€¤Ë€€,€Œa€€,€Œa€s÷€±€€,€Œa€Œa€½5€ÕŸ€€,€0Ôj±€±€$Ÿ0Ôa¨˜–€Œa€€,€¤Ë€Éj€Éj€¤Ë€±€±€¤Ë€˜–€€,€g€Us= j±²}ú—ƒ+Ä}ú—‚±²|= g€½5€Éj€áÔ€Œa€±€Éj€ÕŸ€áÔ€áÔY$øô$ô$Y¤Ë€Us±€çïô$±€€,€s÷€a¨Uss÷€Œa€€,€€,€±€ÕŸ€½5€ÕŸ€ô$ ŽáÔ€Œa€€,€¤Ë€½5€ÕŸ€çïçï¤Ë€Éj€a¨0ÔUs€,€s÷€a¨a¨0Ô0Ô7777†BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€00’I$’I$’I)$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUTUUUUUUUUUUð `Us$Ÿ0Ô0Ô= I>UsŒa€½5€ÕŸÃ Ž˜–€¤Ë€Usg€½5€Œa€½5€Éj€ÕŸ€½5€Œa€˜–€¤Ë€½5€ÕŸ€áÔ=bb ŽáÔÀ…¥$tP€ô$Éj€Us= 0Ôs÷€½5$ø1-=bÕŸ€Éj€ÕŸ€ÕŸ€çïçï±€½5€˜–€˜–€s÷€a¨= 5jj$Ÿ= s÷€˜–€˜–€€,€g€s÷€s÷€g€s÷€s÷€½5€Éj€Œa€˜–€Œa€±€½5€€,€$Ÿ$Ÿ±²|UsÉj€±€˜–€g€Usg€Œa€¤Ë€ÕŸ€€,€½5€Œa€Éj€áÔÃ=bn6=b1-$ø½5€Œa€¤Ë€áÔ€ô$ÕŸ€±€Éj€ô$áÔ€±€±€½5€Éj€Éj€½5€áÔ€ô$$ø7777†BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€D0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RÚçÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðU@UUUU@@TUUUUUUUUUUPUUUUUUð aà Ža¨ 5$Ÿ7 ú—‚±²|0Ô= = I>= $Ÿ 5jj0Ô 5 5±²}ú—ú—‚7 s€Œa€O€O€Œas€…‚7 ƒ+Ä+Ä+Ä| 5+Ä+Ä~±²+Ä| 50Ôa¨Œa€a¨ 5+Ä+Ä~7 ‚±²|$ŸUs˜–€Éj€½5€˜–€±€¤Ë€Uss÷€s÷€Œa€±€Éj€g€Œa€Éj€€,€Œa€a¨Us0Ô0Ô0Ôa¨Us˜–€˜–€€,€s÷€Œa€a¨g€g€g€g€s÷€g€UsUsI>= +Ä}ú—€…‚7 ƒ+Ä|j= a¨a¨UsI>= I>UsUsg€a¨a¨Uss÷€˜–€Éj€ô$çïçïô$ô$áÔ€áÔY7777†BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€\0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUUUUUUUUUUQUUU@UUUUUUUUð `áÔUÌ Žg€a¨a¨€,€I>g€½5€ô$˜–€±€s÷€UsUsj+Ä+Ä}ú—‚7 ú—€jI>s÷€g€g€a¨I>I>I>a¨€,€˜–€a¨I>Œa€…b˜ïâ-¥$€áÔ Ž€,€˜–€¤Ë€g€Œa€€,€áÔ€çï±€˜–€Œa€Éj€˜–€€,€€,€Œa€˜–€Éj€s÷€˜–€g€= = 5 50Ô0Ô$Ÿ±²| 5j 50Ô$Ÿ0Ôj$Ÿ$Ÿ= UsUs0Ô$Ÿ+Ä~7 ‚±²~7 ‚±²|$Ÿj= a¨Usa¨s÷€g€s÷€Œa€Œa€Éj€½5€˜–€Œa€áÔbUÌ=b Žçï½5€€,€Uss÷€½5€Éj$øY˜–€½5€½5€½5€ÕŸ€7777†BUFR&bÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê‚UUUUUUUUUUUUUUUUU]ï{Þ÷½óœç9Îsœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{Þ€B„!B„!B„!„!B„!B„!BÆ0ŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%K„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@UUUUEUUUUUEUUUTUUUUUUUUUUUð `ô$çï¤Ë€s÷€½5€±€±€½5€Us±²+Ä}€…‚7 ú—‚±²|j$Ÿ0Ô= $Ÿ0Ô$ŸUs= = Us= I>g€Œa€€,€g€gƒ+Ä|= 0Ô˜–€Œa€±YçïUs= 5j 5 50Ô$Ÿ 5$Ÿjj 5 5€…€$Ÿ$ŸjI>€,€Œa€UsI>0ÔI>j 5j 50Ô+Ä}ú—‚7 ‚±²~7 ‚7 €jUs$Ÿ$Ÿg€Œa€g€¤Ë€€,€0Ôj 5€,€0Ô= = s÷€a¨a¨0Ôj0Ôj 5$Ÿa¨¤Ë€˜–Ø–€g€UsI>a¨Œa€ÕŸI—tPtPâ-‚ çUÌbÕŸ€7777BUFRöbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ@DDEUUUUUUUUUUUVfffffffffffgwwwwwwwwwwwxˆˆˆˆˆˆˆ€Š2ÇBT¶5Ï„e:V×D2ÇBT¶6t­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)އÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUAUUUUUUUUUUUUUUUUUUUUUUUUUð `¤ËÃn6n6Ãô$½5€Éj€¤Ë€ô$½5€Éj ޽5€˜–€˜–€˜–€s÷€g€0Ôs‚±²| 5= I>˜–€±€Œa€s÷€s÷€a¨¤Ë€€,€I>½5‚1†I—=b ŽÉj€Œa€a¨I>€,€˜–€g€±€¤Ë€Œa€Usg€€,€s÷€€,€s÷€˜–€€,€áÔ ŽÕŸ€a¨$Ÿjjj 5 5j+Ä|jjjj= UsI>g€UsI>gÂbbUÌ1- Ž¤Ë€˜–€s÷€€,€¤Ë€¤Ë€±€˜–€¤Ë€Œa€Éj€ÕŸ€çï½5€áÔ1-ÕŸ€˜–à çŒa€Usg€Œa€±€áÔ€±€ÕŸU̘ï1-UÌÉj€½5€¤Ë€áÔ€ÕŸ€Éj€7777€UBUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ00 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUUQ@UUUUUUUUUUUUUTð `g€$Ÿ+Ä|+Ä~±²|0Ôg€¤Ë€˜–€˜–€¤Ë€½5€áÔ€ÕŸ€¤Ë€ÕŸ€½5€±€I>€,€= ±²|7 ú—€…€…€ 5s÷€a¨s÷€±€áÔ€ô$ô$½5€ÉjYÕŸ€Éj ŽçïÕŸÃŒa€€,€€,€= $Ÿ= a¨s÷€0Ô$Ÿg€€,€g€s÷€€,€˜–€±€áÔ€Éj€Éj€Éj€Œa€€,€¤Ë€½5€½5€˜–€s÷€$Ÿg€a¨g€Œa€Œa€I>a¨UsI>Usa¨I>±²+Ä~±²~7 ú—ú—‚7 €j±²~7 ‚±²|7 ú—€…ú—‚7 ‚7 €…€…€Œa€Œa€Œa€Œa€Œa€Oss€…‚±²}ú—ú—ú—‚7 sú—€…ú—ƒ+Ä|= 7777Ô€BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀH0 $’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡+c\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUU@UUQUUUUUUUUUUUUUUEPð `UsI>7 ‚7 ‚7 ú—‚7 ú—€…‚7 €7 ú—‚7 ƒ+Ä|±²}ú—ƒ+Ä|±²~7 €a¨˜–€½5€a¨Usjj$Ÿj= g€$Ÿ 5= = I>Us$Ÿ+Ä~7 ú—ú—ú—ƒ+Ä|js÷€UsUs0Ôj$ŸjUs$Ÿ€,‚±²| 5j0ÔI>= 5 5 5$Ÿ±1-n6îb‚²%Q¥$bÃçïÃn6€…UÌ1-I— ŽI—ÃÉj€ÕŸ€áÔ€½5€¤Ë€±€½5€çïçïÉj€±€áÔ€½5€¤Ë€Éj€áÔI—Ø–€€,€±€çïŒa€s÷€0Ô$Ÿ$Ÿ 5+Ä| 5I>I> 5+Ä|j±²+Ä|7777Ô€BUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ\0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶àŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUQUUUUUUUUUUUUUUQUUUUUUUUUUUð c+Ä|+Ä|j7 ú—‚7 ú—€…€…ú—ú—‚7 ‚±²~±²|$Ÿ0Ôj+Ä| 5I>g€áÔ€½5€½5€±€½5€ÕŸ€½5€¤Ë€¤Ë€½5€½5€ô$ÃUÌ=bUÌbY½5€Éj€Éj€½5€Éj ޱ$øô$½5€€,€Us= = = = I>˜–€áÔYÉj€¤Ë€¤Ë€Œa€€,€˜–€ÕŸ€¤Ë€Œa€Œa€Œa€Œa€a¨0Ô 5 5+Ä| 5I>a¨I>0Ôg€˜–€˜–€½5€±€Œa€½5Y$ø1-1-I—Y±€¤Ë€¤Ë€a¨a¨a¨= s÷€áÔÃI—I—b=bn6b1-ô$çïô$áÔ€½5€ô$±€˜–€±€½5€7777Ô€BUFR&bÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÂUUUUUUUUUUUUUU^sœç9Îsœç9Îsœç9Þ÷½ï{Þ÷½ï{Þ÷½ï{ï{Þ÷½ï{Þ÷½ï{Þ÷¼„!B„!B„!„!B„ Š …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ж5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUEUUUUUUUUUUUUUUEUð `˜–€¤Ë€€,€€,€áÔ€±€áÔ€g€a¨g€s÷€ÕŸ ŽÃÃn6UÌ ŽçYŒa€s÷€€,€±€g€Usg€½5€s÷€g€I>˜–€¤Ë€a¨I>I>$Ÿ0ÔI>I>Uss÷€€,=b Ž˜–€¤Ë€Éj€j 5Œa€= Us+Ä|$Ÿ 5+Ä|a¨ ޽5ÃI—tPŒºb$ø ŽáÔ€½5€±€€,€€,€±€ÕŸ€áÔ€±€€,€Œa€Œa€€,€s÷€ÕŸ€ÕŸ€ÕŸ€½5€Éj€¤Ë€±€áÔ€ÕŸ€s÷€s÷€a¨a¨Us˜–€Œa€˜–€ÕŸ€Éj€½5€ô$YÕŸ€çïÕŸI— ŽáÔ€Éj€˜–€g€0Ô0ÔUs= j+Ä|0Ô= UsŒa€¤Ë€7777BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê 0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUDUUUUUUUUUUUUUUUUUDUEð `˜–€¤Ë ŽI—n6Õø˜ï‚ ç 瀅=bçï7 €j+Ä~±²~±²| 5tPŒº€çïçïÃ$øbtPŒº€…€…UÌ Ž=b1-I—=bô$çïa¨s÷€€,€s÷€¤Ë€¤Ë€˜–€Œa€Œa€Œa€±€˜–€Œa€±€ÕŸYçïÕŸ1-ô$áÔ€½5€½5€¤Ë€€,€= 0ÔUs¤Ë€˜–€€,€¤Ë€˜–€Œa€Œa€s÷€$Ÿ0Ô= I> 5 5 5jI>$Ÿ±²}ú—ƒ+Ä~7 €…€…€…ú—€…€…€…ú—€…ú—€…ú—ú—‚7 ‚7 ƒ+Ä| 50Ô 5±²|±²~±²+Ä|I>€,€a¨0Ô= j+Ä|+Ä|j 57777ŸBUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê 0’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹:V×D2ÇBT¶6”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUE@UUUUPUUUUUUUUUUUUUUUUUUUð `+Ä+Ä| 5±²+Ä|I>s÷€€,€I>= j 5 5+Ä|j±²~7 €…‚7 ú—€…ú—€g€˜–€g€€,€½5€±€g€g€g€Œa€g€I>UsI>Us0Ôj+Ä~±²| 5I>Œa€Éj€ô$ô$ô$áÔà ŽYYô$çïáÔ ŽÃ Žô$¤Ë€Œa€s÷€a¨€,€g€±€çïô$ÕŸ€ÕŸÃ$ø$ø=bÃ$øçïY½5€Éj€ô$çïáÔ€Éj€±€€,€¤Ë€¤Ë€˜–€±€±€áÔ€½5€çïÉj€Éj€½5€±€¤Ë€±€¤Ë€¤Ë€€,€±€Éj€ÕŸ€½5€½5€Éj€±€s÷€Us= $Ÿ7777ŸBUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê80$’I$’I$’JI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUTUUUUUUUUUUUUUð `$ŸI>0Ôj 5$Ÿ= 0Ôjj$Ÿj= I>ÉjÃUÌbUÌ$øYÉj€½5€±€±Yb1-bô$¤Ë€½5€½5€áÔ€çï ŽY$øô}%Q1† çîbtPbtPb1-$øtPîbn61-Éj€áÔ$øYÃÃÉj=bÉÂ1†áÔ€0ÔŒa€+Ä~±²~±²|jUsg€UsI>g€g€€,€s÷€a¨s÷€s÷€¤Ë€˜–€¤Ë€½5€˜–€Us= = $Ÿj 5Us¤Ë€s÷€½5€½5€Œa€€,€g€I>I>I>g€Œa€¤Ë€Œa€¤Ë€±€˜–€Usg€= I>0Ô+Ä|j$Ÿa¨€,€€,€g€s÷€Œa€¤Ë€€,€g€7777ŸBUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊL0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’Km¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡,kŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUTU@UQUUUUUUUUUUUUð `Usa¨a¨s÷€g€¤Ë€Œa€Œa€a¨€,€˜–€¤Ë€€,€a¨UsI>s÷€= I>a¨Us¤Ë€Œa€s÷€Œa€Œa€çï½5€ÕŸY ŽÃYáÔ€½5€±€˜–€Œa€€,€€,€¤Ë€g€j±²~±²|I>$Ÿ±²+Ä|$Ÿ 50Ô$øṲˀ$Ÿ+Ä}ú—‚7 ss‚±²|$ŸI>I>I>= 5+Ä| 5 5$Ÿ0Ôj= s÷€0Ô 5+Ä~7 ‚±²+Ä~±²~7 ƒ+Ä|= ½5 Ž=bY˜–€¤Ë€áÔ ŽáÔ€Éj€çï1-Éj€ô$ÕŸ€€,€I>a¨Us$Ÿ= €,€˜–€Œa€Éj€Œa€s÷€€,€˜–€±€±€ô$áÔY1-UÌ$øÃô$½5€7777ŸBUFRæbÿ« fÊ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Êd0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUTUUUUUPEUUUUUð `Œa€0Ô= I>s÷€±€±€±€½5€¤Ë€Œa€½5€áÔ€±€áÔ€ô$Yçïn6îb½ŽtPtPI— ŽáÔ€Éj€˜–€Éj€½5€ç€½5€Éj€Œa€Œa€˜–€€,€s÷€˜–€˜–€±€Éj€ô$=bô$ÕŸ€˜–€Usg€ 5+Ä|0ÔI>I>$Ÿ$ŸI>= $Ÿj0Ô0Ô= 5s÷€a¨a¨Us= $Ÿ+Ä~±²~7 ‚7 ‚7 ‚±²~±²~±²}ú—ú—‚7 ‚±²~7 ú—ú—ú—ú—‚7 ‚±²| 5j±²+Ä~±²~7 ‚7 ‚±²~±²|$Ÿ 5 5±²| 5 5j0Ôg€˜–€½5€ÉjYbb=bYÕŸÃYô$Éj€áÔYb7777ŸBUFR&bÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï{ß{Þ÷½ï{Þ÷½ï{Þ÷€„!B„!B„!D!B„!B„!B†1ŒcÆ1ŒcÆ0Š„©lkŸÊt­®ˆd)Ž„±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUAUUUð aîb½ŽtP€áÔ€±€Éj€áÔ€ÕŸ=báÔUÌÃUÌô$Œa€Œa€Œa€±€¤Ë€¤Ë€s÷€ÕŸ€áÔ€Éj€Éj€Œa€a¨s÷€¤Ë€¤ËÃô$áÔ€ô$ÕŸ€ÕŸ€¤Ë€0Ô 5j+Ä+Ä|I>½51-b1-Ãô$ô$ô$ Ž=bn6UÌô$ÕŸYÕŸ€áÔ€ÕŸ€Œa€= €,€a¨a¨±€çïÕŸ Ž Ž ŽY$ø$øçïçï$øUÌ=bÉ ç çô}½Ž±YtPUÌI—Ã$øYI—tP‚=»UÌçïÃ$øáÔY$ø1-1-$ø$øY½5€¤Ë€s÷€s÷€Us±²~±²|0Ôj 5$Ÿ$Ÿjj$Ÿg€s÷€7777BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÛmÛ`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±¯„e:V×D2ÇBT¶5Ï„e:V×D2ÇBVƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUýà`g€[€[€I>Us= 5 5 5 5$Ÿs÷€½5€Éj€Éj€½5€½5€½5€Œa€s÷€¤Ë€ÕŸÃ=bÃUÌtPh=b$øçïçïÕŸ€¤Ë€¤Ë€˜–€ÕŸ€ô$Yô$ÕŸ€½5€˜–€s÷€˜–€±€±€çïÃ$øYô$ÕŸ€Éj€½5€±€±€¤Ë€˜–€ÛºÕŸ€çïÛº€,€€,€€,€Œa€Œa€¤Ë€çïçïYô$±€¤Ë€Œa€Œa€g€$Ÿ~¥}|= Ûºô$˜–€€,€g€s÷€Us[€€,€Œa€çï=bÃ Ž ŽÛºÉj€±€g€€,€€,€¤Ë€€,€g€½5€±€˜–€Œa€[€g€g€[€s÷€Œa€¤Ë€˜–€Œa€±€¤Ë€s÷€ 5¥}~¥}}îb€ú>€7777÷€BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@(0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUUUUUUUUUUUUUUUUUUPUUð aú—€ 5a¨UsI>UsUsa¨g€s÷€a¨ Ž˜–€a¨€,€s÷€áÔ€±€g€s÷€Usj+Ä~±²~7 ú—‚7 €+Ä| 5+Ä| 5 5= s÷€ŒaY=b Ž$øçïs÷€$Ÿ$Ÿ$Ÿjj= €,€˜–€¤Ë€Éj€Œa€½5€±€¤Ë€±€½5€Éj€±YI—YÕŸ€áÔ€€,€s÷€0Ô= I>0Ô˜–€çïô$ÕŸ€½5€¤Ë€ÉjYáÔ€ÕŸ€Éj€g€çïô$¤Ë€˜–€±€˜–€¤Ë€Œa€g€$Ÿ 5= €,€±€€,€±€g€€,€ÕŸ€±€ÕŸ€Éj€€,€I>$Ÿ 5j7 €…€…€…€$Ÿ˜–$ø€…€…n6tPI—1-7777÷€BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@<0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈSKc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUýàa1-Ã$ø1-=bI—$ø$øÛº±€g€~¥}|j˜–€çïYÛº¤Ë€˜–€˜–€˜–€¤Ë€½5€ÕŸ€ÕŸ€ÉjÃÃÛºÉj€€,€g€g€€,€[€g€Œa€Éj€ÕŸ€Éj€Éj€¤Ë€Éj€½5€¤Ë€çïÛºçïô$ô$Ûº1-1-$øô$ÛºÕŸ€çïÉj€€,€Œa€˜–€Éj€ÕŸ€s÷€s÷€Us= [€Œa€¤Ë€±€½5€çïUÌ€…bI—=bYŒa€±€[€I>Us½5€ô$ô$YYô$Ûºô$Ûºô$Éj€Éj€ÕŸ€çïçïÃ$øÃô$˜–€€,€¤Ë€±€±€¤Ë€½5€Éj€±€ÕŸ€¤Ë€Œa€½5€ÕŸ€ô$Éj€ÛºÕŸ€¤Ë€±€0Ô7777÷€BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê@P0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUU@UUUUUUUð b±²~7 ú—ú—ú—€ 5$ŸUs˜–€¤Ë€€,€I> 50Ô0Ôj= g€g€±€Éj€Œa€g€$Ÿ€…ú—‚7 €…€…‚7 €= áÔ€˜–€Œa€˜–€= 0Ôjjj0Ôs÷€s÷€±€½5€s÷€g€Us7 s€…€Œa€Œa€…€= g€¤Ë€˜–€= 0Ô0Ôjj0ÔUs€,€g€s÷€Us= 0Ô= j+Ä~±²}ú—€…ú—€ 5$ŸUsg€s÷€Us= $Ÿj$Ÿ$Ÿ$Ÿ$Ÿ$Ÿ$Ÿ$Ÿ 57 ú—‚7 €Œa€O€Œa€Œa‚7 ‚7 ‚7 ƒ+Ä| 5$Ÿ 5 5 5j$ŸI>0Ôjú—sú—€…s‚±²|I>˜–€7777÷€BUFRöbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊBUUUU\ç9Îsœç9ÎsœëZÖµ­kZÖµ­kZÖµ­o{Þ÷½ï{Þ÷½ï{Þ÷¾sœç9Îsœç9Îsœç9Î÷½ï{Þ÷½ï{Þ÷½ï{Њt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%KcŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýà]1-“. 'À~ð F0Às÷YIð&\ ë™pýà9ûÀdµ@¤ËÃa¨c  @ øPð @@±b²dÆŒ0 ReÀ±’ÕŸ¼KT Yø &% X€@¤ËY1†Ÿ¼|(Œ0 LK@ô$zÄ28KT –¨Ð9ûÀ9ûÀ±èHdÝÐÈŒ0ýà$Ÿja¨ÃP¡ LK@½5bÏÞ«˜Æ&% ReÀ±I—Ĉ –¨ &% ReÀ±bôÖé¬ ™p)2àdµ@ÕŸ·tÄÄ´ÆÐ,@ dµ@½5«?nèÝÐ Yø¦°,@ dµ@½5b²IðIð“àã`3á@˜–I—1†&\ ÓX¦°,@ mÝÛº7777|BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUýàaY ŽYçï½5€˜–€½5€Œa€s÷€s÷€s÷€[€$Ÿj[€$Ÿ0Ô[€Usg€€,€Œa€Éj€±€±€ÕŸ€ÛºÉj€¤Ë€[€Usj~¥}~¥}~¥}|Us½5Y$øô$ ŽçïÛº½5€ÛºÉj€ô$Ûº$ø$øçïÕŸ€ÕŸ€ô$½5€˜–€¤Ë€Éj€½5€ÕŸ€çï Ž=bYÕŸ€Éj€±€ÉjY=bhb=b$øô$s÷€0ÔUs= 0Ô0ÔŒa€Éj€ô$UÌ$øÃô$ÛºÕŸ€çï ŽY1-bI—I—b1-$ø Žçïô$ÕŸ€ÕŸ€½5€ÕŸ€ÛºYçï½5€Éj€¤Ë€˜–€˜–€¤Ë€ô$ÃUÌbbbbÃÕŸ€€,€7777@ BUFRÆbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$–Ûm¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ж5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@,@ `[€*¹€6î€[€€,€˜–€·ÃPçïÏ…·Œa€ªæÛºçïÃC|+[æO±+7GÃçïô$ÛºÃP·ۺυۺçïÛºY$øçïO±Ãçï ŽYÛºÛºYÃ$øÃP€,€€,€OX€C#€OX€g€s÷€€,€ž±YÞ±6î€j„€jŒa€Œa€ž±·Ï…ªæž±Ï…ÃP·ž±g€€,tP‚+k‚·ÍÐ7·Ûºs÷€ž±ÃPÃP7G·t·t¥$7G7GÃ[æ7G€çïۺυ·ÃPô$Ã[ætP˜ïO±€ÃPh€…+€ô$Y7G+÷Ï…ÛºÛºÛºçïY+C|+C|+€7777UÌBUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€00’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð aI—tPtPn6tPb½Ž¥$¥$€…tPbÃY$øYô$Œa€s÷€ô$ô$UÌYçï¤Ë€½5€½5€¤Ë€çïb±YÉÃŒºÕøtP$øô$ÃÃô$çïáÔ€ô$YáÔ€½5€½5€Éj€áÔ ŽI—1-1-=bUÌUÌUÌÃI—1-ô$ÕŸ€çïáÔ€ÕŸ€áÔ€ÉjY$ø²nnIðÖQ‚V%Iðîb˜ï=b=bÃÕŸ€½5€¤Ë€€,€¤Ë€jjj0Ô0Ô$Ÿ 5$Ÿ$Ÿ$Ÿj$Ÿ0Ô= 0Ô0Ô= = jj+Ä~7 ‚±²~±²~7 € 5˜–€±€Éj€±€g€= Us$ŸUsUs€,€Éj€½5€Éj€7777@ BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€D0’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹:V×D2ÇB–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUPUUUUUUUUUUUUUUUUUUUUUUPUUUUPýà`±€¤Ë€€,€€,€= j~+k‚¥}|I>Œa€g€[€[€g€g€s÷€[€˜–€Ûºç€ÕŸ€ô$Yô$çïÛºÛº¤Ë€Œa€s÷€s÷€˜–€€,€g€g€[€Œa€¤Ë€±€±€ô$ÃYçïçïÛºÛº±€Œa€[€s÷€[€Us€,€s÷€˜–€ÕŸ€˜–€Œa€˜–€½5€ÛºçïçïÛºçïô$Yô$çïô$ô$YY½5€˜–€€,€I>[€˜–€¤Ë€˜–€˜–€s÷€s÷€s÷€s÷€˜–€±€ÕŸ€ÕŸ€½5€½5€Œa€g€= $Ÿ0Ô$Ÿ~¥}|$Ÿ= g€s÷€s÷€˜–€[€g€g€±€¤Ë€Éj€˜–€€,€±€[€= j~+k€7777@ BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê€\0$’I$’I$’II$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ˜×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUU@UUUU@UUUUUUUUUUUUUUð c+Ä~±²|$Ÿ$Ÿ 5 5 5jjj$Ÿ= ÉjI—=bô$ô$çïÉj€Éj€I>0Ô+Ä|$ŸŒa€ô$$ø ŽÕŸ€±€˜–€¤Ë ŽYb˜ïI—UÌ ŽY½5€s÷€0Ô+Ä~±²}ú—‚7 €0ÔÉj€áÔ=b=bYáÔ€½5€Éj€ô$bn6I—1-ô$ÕŸ€çïÉj€s÷€= +Ä~±²+Ä|I>g€՟ Žô$çïÕŸ€Éj€Éj€ÉjY=b€…UÌUÌ$ø$ø$øô$áÔ€¤Ë€a¨˜–€€,€¤Ë€ô$Y1-$øYô$Éj€ÕŸ€Éj€çïUÌtPb=b1-$øYçïÕŸ€Éj€Œa€Œa€g€¤Ë€ÕŸ€ô$à ŽáÔ€˜–€˜–€7777@ BUFR&bÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê‚UUUUUUUUUUU]ï{Þ÷½ï|ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷¾÷½ï{Þ÷½ï{Þ÷½ï{À!B„!B„!BŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUTUUU@UUUTUUUUUUUUUUð `€,€˜–€áÔ=bbtP˜ïUÌI—ÃYYÕŸ€I>0Ô= Us˜–€¤Ë€¤Ë€g€a¨çïbUÌçïbn6$ø=bÃÃÕŸ€s÷€½5€= j 5 5€…ƒ+Ä|ja¨0Ô= €,€ 5I>s÷ñ€Éj=b±€Œa€a¨0Ô±²~±²}€…€…ú—€…€…ú—€Œa€Éj€±€¤Ë€Œa€˜–€Œa€¤Ë€½5€çïY½5€˜–€½5€˜–€I>= ú—€…€Œas‚±²| 5UsçïYô$UsI>g€g€Éj1-b=bb±Y±Y¥$n6YçïÕŸ€ÕŸ€½5€Éj€ô$bŒº$øáÔ$øUÌ$øY1-ô$Éj€˜–€€,€˜–€Œa€7777BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `I>= = 0Ô= j$Ÿ= I>I>Usa¨s÷€€,€˜–€˜–€±€¤Ë€±€Éj€ÕŸ€áÔ€ÕŸ€½5€Œa€Œa€€,€ 5s‚7 €0Ô+Ä|s÷€±1-˜–€½5€±€ô$Ãô$bI—1-à ŽYY½5€€,€s÷€s÷€¤Ë€½5€¤Ë€Éj€ÕŸ€¤Ë€½5€¤Ë€±€Éj€ô$çïYà Ž1-YÃ$øYçïçï1-ô$˜–€a¨= 0Ôa¨˜–€€,€Éj€€,€Œa€˜–€±€Éj€±€½5€áÔ€çïáÔ€áÔ€çïÉjYYáÔ€áÔ€áÔ€½5€˜–€s÷€€,€a¨g€s÷€s÷€UsŒa€±€½5€±€±€±€Éj€Éj€ÕŸ€áÔ€ÕŸ€Éj€±€±€˜–€Œa€7777Ÿ€BUFR¶bÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ 0 $’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*kŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ ]Y“.d?x q°ã`9ûÀ˜–bÄé¬  /M`ReÀ±1-ÏÞŸ¼?x ë @€[€’|Ÿ >¸Ø~ðýà@@€,I—“.ˆ –¨-P,@ X€@ŒaYbZd|( 'Àð F0ÀÏ…²oš )$˨+|ÐOX€ÀBÀô$ÏÞ1†ˆ L¸Ðýà9ûÀI>a¨ÃPa¨ÃP†  'À'¬@s÷€çï²c ÓXw@= mÝÉj1-ôÖÄ´ L¸™p)2àReÀ¤ËI—“.&\ ‰h™p)2àReÀ±Ã²c ‰h™p)2àg€çï’ÕŸ¼?x øPÐð O€0Ôj$øzĸء 5= ’|’|ÃP“à q° 'À„€0Ô7777€±BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ40I$’I$’I$”’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„­sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUDUUUTUUUUUUUUUUUUUUUUUUUUUUð `I>= 0Ô= $Ÿ+Ä|+Ä~7 ‚7 €…ú—sú—ƒ+Ä|a¨˜–€˜–€¤Ë€±€˜–€¤Ë€€,€€,€Œa€½5€Œa€s÷€a¨$Ÿ±²~±²~7 ‚7 ‚7 ƒ+Ä|= g€˜–Y½5€s÷€€,€a¨Œa€½5€ô$ Ž=bÃáÔ€½5€±€±€Œa€˜–€s÷€= I>= Éj1-=b=b1- Ž Ž ŽÃ$øI—UÌ$ø=bYYçï¤Ë€±€±€s÷€€,€Us¤Ë€áÔY=b1-$ø=bçïáÔ€çïÃUÌUÌI—Ã$ø$ø½5€˜–€s÷€g€0Ô$Ÿ0ÔI>½5Y$øb1-I—UÌÃÕŸ€ÕŸ€çïô$ô$áÔ€áÔY Žçï½5€7777Ÿ€BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀL0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$–Ûm¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUTUUUUUUUUUUUUUUUUUUUUUUUUð `Usj±²~±²|$ŸUs˜–€¤Ë€Éj€±€½5€±€±€Éj€±€¤Ë€˜–€Œa€˜–€˜–€$Ÿ±²~±²~7 ú—€…€…‚7 ‚±²~±²|$ŸI>= a¨±€áÔ Žô$YÃà ŽÃ1-1-YáÔ€ÕŸ€ÕŸ€çïÉjYÃ$ø$øY$ø=b1-1-$ø=b1-Yô$áÔ€çï±€Éj€Éj€ô$ÕŸ€½5€½5€¤Ë€ÕŸ€áÔ€çï½5€áÔ€ô$Yô$ Žô$ÃÃçï¤Ë€ÕŸ€áÔ€ÕŸ€Éj€¤Ë€Œa€a¨= a¨s÷€¤Ë€ÕŸ Ž ŽY ŽÃ Ž Žô$ Ž ŽçïÉj€Éj€€,€I>I>I>$ŸUs±€ô$ Ž=bbtP€7777Ÿ€BUFRæbÿ« fÊ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÀ`0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUU@UUUUUUUUUUUUUUU a$ø1-$ø$ø1-ÃÃÃ1-$øÃY1-[æ1-Yô$ۺۺυυ$øY ŽÃÃ$ø1-Ã1-1-ô$±€Œa€OX€I>OX€I>Œa€OX€jI>€,€¤Ë€±€Ï…½5€Éj€Ï…çïÏ…çïYۺυ½5€¤Ë€€,€g€OX€= = 0Ô0ÔZ}h‚™H| 5I>s÷€Œa€Œa€±€˜–€˜–€±€±€±€¤Ë€¤Ë€¤Ë€Œa€€,€g€OX€¤Ë€½5€Éj€±€±€Ûºçïçï1-U̘ïUÌÃI—€…tPtP¥$€…ô}t©‚€Þô}t©½Ž€…UÌÉj€±€½5€çïI—èHŒºI—çïÛºô$ô$ô$ô$7777Ÿ€BUFR&bÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊÂUUUUUUUUUUUUUUUUUUUUUUUUU^sœï{Þ÷½ï{Þ÷½ï{Þ÷½B„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œc!@‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUPýà`ô$YYô$çïYY ŽY Žô$çïçïÛºÕŸ€Éj€ÕŸ€ÕŸ€ÛºÛºÛºÉj€ÛºÕŸ€çïçïô$ÕŸ€Éj€½5€½5€Œa€€,€€,€[€€,€Œa€çïYYô$à Ž$øÃÃ$øI—Ã1-1-UÌ1-=b$ø ŽY$øUÌ$øçïÛº±€½5€ÕŸY1-=bUÌbhUÌ1- Žô$ÛºÕŸ€½5€¤Ë€[€j$ŸI>0ÔI>g€Usg€˜–€½5€±€½5€ÛºYÛº½5€˜–€çïÕŸ€¤Ë€±€±€€,€j~¥}~¥}|$Ÿj 5I>˜–€¤Ë ŽÉj€¤Ë€g€= ~+k‚+k‚+k‚¥}~+k€7777BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê0$’I$’I$’II$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUTUUUUU@UUUUUUUUUUUUUð b7 €jÕŸ1-I—I—1-ô$Yô$½5€Éj€ô$Éj ŽÕŸ€€,€g€$Ÿ0Ô 5+Ä~±²+Ä|= ŒaY$ø=b1-1-ÕŸ€ô$1-=bÃô$ô$áÔ€±€a¨0Ô±²~7 ‚7 €…€0Ô= gÂI— ŽÃáÔ€ô$½5€Éj$øÃ Žô$áÔ€ô$ô$¤Ë€€,€= 7 ssú—€ 5Us˜–€±€±€çï1- Ž Žn6±Y€…UÌ1-I—I—ô$˜–€€,€±€˜–€g€€,€s÷€áÔ Ž$ø=btP¥$$øÃ=btP±Y˜ï€…I—UÌn6$ø ŽÉj€a¨€,€Œa€= = I>a¨Œa€¤Ë€˜–€Œa€Œa€7777|BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê(0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@UUUTUUUUPUUUUUUUUUZUUUUUUð `s÷€˜–€a¨g€g€= $Ÿj7 ‚7 ú—ú—sss€…€…ú—‚±²|$ŸUs€,€g€a¨Usg€a¨UsI>= $Ÿj7 ‚7 ú—ú—‚±²|j= ˜–€ô$Éj€½5€½5€Éj€½5€¤Ë€½5€ÕŸ€ÕŸ ŽÉj€€,€Us$Ÿ+Ä~7 ƒ+Ä~7 ‚7 ‚±²|j±1-n6tP˜ïÉÃ½Ž€…UÌÃÃô$±€½5€Œa€€,€Éj€áÔ€ÕŸ€çïYYÃ$øUÌUÌ€…ÉñY˜ï½ŽÉýŽîb‚%Q¥}ƒ € Äô}îbîbÉÃŒº1-Ã1-UÌUÌ¥$tP€…n6Œºb€…btP1-Yô$YáÔ€7777|BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ê<0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `¤Ë€¤Ë€˜–€½5€¤Ë€¤Ë€s÷€ÉjÃUÌtPbUÌUÌI—UÌbtPŒº±YÉÃŒºI—I—Ã Ž Ž$ø ŽçïÕŸ€áÔ€áÔ€ÕŸ€½5€Éj€Éj€½5€½5€½5€Éj€±€½5€½5€€,€Œa€s÷€UsI>= ±²+Ä~±²|s÷€s÷€˜–€½5€áÔ€˜–€˜–€±€Éj Ž1-UÌÃà Žô$ô$±€s÷€I>= 0Ô$Ÿ0Ô±€ÕŸÃ=bUÌI—$ø ŽUÌn6€…Œºbn6tPUÌb1-Ã$øÃçïÕŸ€¤ËYI—˜ïbUÌ1-=b$ø=bn6tP±YtPŒºtPn6€…n6=b=b1-ÃáÔ€¤Ë€7777|BUFRÆbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÊT0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠc¡*[øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ `çïÃI—UÌ[æh±Y½Ž€…Œº±YŒº[æ=bI—=b1-$ø1-Ã$ø$ø$ø1-U̱Y½ŽÉÃ¥$±Y±Y½ŽÜ\?‚€ÞƒuV~h̓V~€Þ‚1†1†ht‚1†²ÉñYŒº˜ïÉÃô}Ið=»ÜÕøŒºUÌ=bUÌI—[æUÌ1-hI—=b$ø$øÃI—à Ž1-1-Ã$ø Ž ŽÃ=b[æ$øÃ Ž Ž Žô$ô$çïÏ…½5€˜–€OX€= I>s÷€g€[€[€g€[€I>= j$Ÿ0Ô0Ô0ÔI>g€€,€±€Œa€Œa€= 5$ŸjjI>I>= s÷€s÷€7777€…BUFRæbÿ« fÊ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Êh0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUUUDUUUUUUUUUUUUð `Œa€g€ 5jj 5±²~7 ‚7 ú—‚7 ‚7 ú—ú—‚±²| 5s÷€Éj€Éj€ÕŸ€Éj€½5€áÔ€ô$çïô$ ŽáÔ€ô$¤Ë€s÷€0Ô$Ÿj$Ÿj 5 5 5I>a¨a¨g€s÷€s÷€g€g€Usa¨= j$Ÿ= jj+Ä|+Ä~±²}ú—€0ÔI>s÷€UsUs€,€s÷€g€¤Ë€±€ç€g€a¨= $Ÿ 5ú—‚7 ú—€Œas€…ú—€ 5a¨€,€g€a¨g€a¨s÷€g€±€½5€˜–€€,€UsUs= ±²~±²}ú—ú—ú—‚7 € 5s÷€±€s÷€˜–€±ÃYáÔ€ô$ô$ô$Éj€UsI>s÷€s÷ÉÀ7777|BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@0I$’I$’I$”’I$’I¶ÛmÉ$’I$’I$–Ûm¶Ûm¶Ûm»m¶Û`Šˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©ljáN•µÀ …1Е-te:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUU@UUUUUUUUUTUUUUUUUUUUUUð `Us[€[€UsI>0ÔjUsg€$Ÿ 5jUs= = g€[€I>= I>= = $Ÿ 5+Ä~7 ‚±²+Ä+Ä|j0Ôs÷€Éj€½5€¤ËYô$Y=b[æh[æhUÌ€…tP=b1-1-Ã$øÃ Ž1-[æ˜ï½Ž‚²[æ=bô$ÃÛºô$çï±€Œa€s÷€[€0Ô+Ä+Ä}ú—€…ú—ú—€ 5Us€,€g€g€s÷€€,€Œa€Éj€ô$1-çïÛºÛºçïÕŸ€ÕŸ€ÛºÛºÉj€= = s÷€Ûº1-1-$øçïçïÕŸ Ž$ø1-=b1-ÃY$ø$øYÛºÉj€¤Ë€±€±€½5€ÛºÛºçï Žçï7777|BUFRöbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@@"""""UUUUUVfffffffffffgwwwwwwwwwwwxˆˆˆˆˆˆˆˆˆˆ€Š¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBZçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUAUUUUUUUUUUUUUUUUUUUUUUUUUUUýà`Ï…½5€¤Ë€¤Ë€±€Ï…çïÏ…ô$Ï…˜–€±€€,€g€OX€I>j~¥}|s÷€I>$Ÿ[€Œa€˜–€g€s÷€±Y ŽçïÛº±€Ûº½5€jjI>I>0Ô= s÷€Ï…ÃçïçïI—=b=b[æhtPŒºh€…hh=bÃô$˜–€s÷€±€±€ô$À…hI—O±=b1-ÃÃO±Ã ŽYçïYçïÉj€OX€= $Ÿjj= ¤Ë€Éj€±€Œa€¤Ë€˜–€€,€±€Œa€±€Ûº¤Ë€s÷€s÷€€,€g€[€j0Ôs÷€g€0Ôg€[€€,€I>I>I>= [€g€s÷€€,€Œa€[€I>0Ô 57777˜BUFRbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÂLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@<0 $’I$’I)$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛm¶Û`‹k€" c¡*\e:V×D2ÇBT¶5ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@àB„!B„!B„!B„!B„B„!B„!B„!B„!B„!B„!B„!B„!B„!B„!`Œa€gÂèHô$ô$zbZŒa€ÛºÃÃY Ž$øçï¤Ë€Œa€Œa€€,€±€±Ãۺυυçï=bhhO±€çïÃPÛºçïۺۺυÃPô$çï$øçïŒa€s÷€gƒ“†ÿ“†üs÷€±Y¥$èH²[æ$ø$ø1-±Y½Ž‚1†ô}èH½Ž¥$Œº[æ ŽÛº±€˜–€¤Ë€¤Ë€ÛºÃ[æÃC|O±½Ž˜ï ޽5€ÃP ŽÛºÏ…YC|C|YÛºs÷€½5€˜–€±€˜–=b Ž1-±YhYçïYçï=bÃO±˜ïŒº=b ŽÃô$$øçïY ޽5€s÷€˜–€±€½5€ÛºÃP±€½5€7777k‚BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@T0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I%¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƺ”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUDUUUU@UUUUUUUUU@UUUUð `= = s÷€I>Usg€I>Us0Ô= $Ÿ0ÔI>+Ä~7 ú—ú—sú—€[€= [€€,€Œa€s÷€Ûº½5€½5Y˜–€½5€çï€,€I>0Ô+Ä|7 ú—€ 5[€ÛºÃçï±€g€Us0ÔI>I>Us€,€s÷€0Ô0Ôj7 ú—ú—‚7 ƒ+Ä|I>±$øI—$øçïô$ÕŸ€ÕŸÃ[怅[æh=bUÌ Žô$¤Ë€0Ô 5js÷€Œa€¤Ë€€,€Éj€Ûº¤Ë€Éj€½5€Éj€½5€ÕŸ€ÛºÉj€½5€0Ôj±²~±²}ú—€…€g€jjjI>€,€½5€çïÛºô$=b$øÃÛºÛº1-$ø Ž$ø7777$BUFR&bÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËBU\ç:Öµ­kZÖµ­kZÖµ­k[Þ÷½ï{Þ÷½ï{Þ÷½ï|ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷¾÷½ï{Þ÷½ï{Þ÷½ï‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS S\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUU@UUUE@UUUUUUUUUUTUUTð a ŽYÛº¤Ë€Œa€€,€Œa€½5€ÛºÕŸ€çïY1-Éj€±€Éj€Ûº1-=b˜–€Éj€çïŒa€˜–€±€±€s÷€j$Ÿ+Ä}€…€O€…€j[€€,€g€g€[€¤Ë€I>[€˜–€½5€½5€¤Ë€Œa€Us$Ÿ+Ä|j 5$Ÿ7 s€O€Œa€jg€˜–€½5€ô$½5€½5€¤Ë€¤Ë€ÕŸ€Éj€±€½5€±€s÷€[€[€s÷€= = = Us[€Œa€ô$1-UÌ[æhI—1-$øUÌŒº˜ï¥$[æ$ø1-Ãô$ÕŸ€Ûº€,€0Ô7 ƒ+Ä|$Ÿs÷€Éj€¤Ë€€,€[€g€s÷€Œa€ÕŸ€s÷€UsUs0Ô+Ä}ú—€Œasƒ+Ä+Ä| 5g€Éj€7777BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUPUUUUUUUUUUUUUUUUDUUð a1-UÌ1-1-1-$ø$øYÃUÌI—1-Ãà Žô$çïÛºŒa€±€€,€€,€Œa€Ûº Ž€…‚ ç±Y€…1-YÛºI—1-=b1-1-ÃÉj€¤Ë€€,€0Ô+Ä}ú—€…€…€ 5Us½5äˀg€¤Ë€Œa€±€ÕŸ€ÕŸÃ=b=b=bÃô$¤Ë€½5€€,€0Ô€,€s÷€Usg€±€ÕŸ€Ûºô$ô$çïÕŸ€ÕŸ€Éj€¤Ë€ÕŸ ŽY ŽY Ž1-1-YÕŸ€s÷€˜–€[€UsUsg€˜–€€,€€,€Œa€Us[€[€€,€Œa€Œa€Œa€¤Ë€˜–€€,€g€ 5+Ä|ss‚±²+Ä|[€ÕŸ€ô$ÕŸ€€,€˜–€= Uss÷€7777,€BUFRöbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€@DDDDUUUUUUUUUUUUffffffffffffwwwwwwwwwwwwˆˆˆˆˆˆˆˆˆˆ€ŠøFS¥mpC!Lt%Kc\ø>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUPUUUTUUUUUUUUUUð `s÷€˜–€½5€±€½5€Éj€s÷€= ±²~±²}ú—s€Œasƒ+Ä|UsÛº=b ŽÛº½5€˜–€Œa€¤Ë€± Ž$ø=b=bI—UÌ[æ=b$øÕŸ€±€±€±€±€˜–€¤Ë€Éj€ô$ô$Éj€˜–€˜–€±€˜–€€,€¤Ë€Œa€¤Ë€0Ô 5 5 57 ú—‚±²~7 ú—€…sú—‚7 €I>[€0Ô 5 5 5= $ŸI>˜–€¤Ë€Œa€s÷€s÷€g€0Ô±²~±²}ú—€…‚7 €[€½5€çïçïçïô$Ãô$ÃÉj€ô$I—hh[æ$øYÛºÉj€jUs0Ôg€0Ô˜–Y Žñ€ÕŸ€½5€ÕŸ€çïYÉj€ô$Éj€˜–€g€7777€sBUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€80$’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUQUUUUUAUUUUUUUUUUTUUUUð `€,€0Ô$Ÿ+Ä|±²+Ä|[€[€ô$ý5€Éj€½5€¤Ë€½5€¤Ë€ÛºÛºÉj€Éj€Œa€s÷€[€[‚7 € 5±²~±²~±²| 5gÂY ŽÕŸ€˜–€˜–€˜–€¤Ë€±€Ûº1-ô$€,€= 5j0Ô 5 57 ‚±²|s÷ Ž=bY¤Ë€€,€s÷€€,€±€ÉjÃŒºtP=bUÌUÌ1-ÃÉj€€,€[€UsI>[€ŒaÃ=bYÉj€s÷€s÷€[€€,€Œa€Œa€˜–€¤Ë€¤Ë€Œa€I>= jú—ú—ú—ú—‚7 € 5[€€,€s÷€[€€,€s÷€Œa€¤Ë€€,€Éj€Ûº±€Éj€g€$Ÿ+Ä}ú—‚7 ‚7 ‚7 ‚±²|j= 7777j€BUFR¶bÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€P0 $’I$’I$’RI$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[èFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]bc L¸Ð$Ÿ@@s÷€ÕŸ‚²28 ‰hX3ðReÀ˜–UÌbZdˆ¸Ø€ 'ÀjI>Yd @Ü™p#`5gàdµ@ÕŸI—1†ˆ –¨ 9ûÀ^šÀ¤Ë€çï²èHIð @€ 5$ŸªæbZ鬯~ð,@ ReÀ€,Y²?xB@ýà9ûÀdµ@€,’ÕÏÞÃP€O€¤Ë‚Iðc ÝÐ L¸Ðð F0À½5ÏÞÄ´ ‰hÐ-pF0À­óA=bèHĈÈÐ)2àjÏÀçïzÄö: ŠÌ¾h'¬@I>’|Œºƒ1ßÅf eÔ¸.ŠZàÀBÁUÌzÄc È \ÀReÁY1†d?x~ð!‘ÀC#€†Gçï7777€ÛBUFR&bÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë‚UUUUUUUUUUUU\cÆ1Œg9Îsœç9Îsœç9ÎsœëZÖµ­kZÖµ­kZÖµ­o{Þ÷½ï{Þ÷½ï{Þö„!B„!B„!B ŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%MsáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUU@UUU@UUUUUUUUUUýà`½5 ŽO±=b[æI—I—ÃÃçï¤Ë€¤Ë€±€Œa€€,€s÷€±€€,€s÷€˜–€½5€¤Ë€Éj€g€s÷€½5I—½Ž±Y€…h[æ1-ô$O±=b½5€[€Œa€Éj€ô$ ŽÃÛºô$çïÛºçï1-ô$±€ÛºÏ…±€€,€= 5+k‚¥}}tP€ú>tPƒ|$Ÿ±€Éj€½5€±€˜–€˜–€€,€g€€,€g€= 5$Ÿ}îbtP€ú>€ú>€€,€ú>€I>±1-€…1-±€s÷€0Ô= jg€υ½5€Œa€€,€s÷€OX€ 5 5îbîbîb‚¥}| 5Œa Ž1-Ï…˜–€g€I>Œa€€, Ž1-€…$ø˜–€±€¤Ë€¤Ë€0Ô0Ô7777BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀ 0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’Ûm¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUTUUUUUUUUUUUUUUUUUð c+Ä|7 ƒ+Ä|€,€ô$1-à ŽÛºçïçïçïI—1-˜ïÉ ç=»1†ÉÃŒºŒºŒºUÌ=b$øI—hUÌI—1-UÌŒºI—˜–€Éj€½5$ø=bÕŸ€˜–€s÷€Us0Ô 5= [€$Ÿ±²}ú—‚±²|j0ÔI>Us= $Ÿjj= [€UsI>g€0Ô 5+Ä|+Ä}€…€I>ô$ô$Y½5€˜–€g€g€s÷€±€Ûºçï1-Yô$ ŽÕŸ€Œa€[€= $Ÿ0ÔUs= ˜–€ÕŸ€Éj€½5€…[æ[æ$øçïhŒºtP$øô$=bhI—ô$Ûº¤Ë€±€ÕŸ€½5€ô$Y=bY7777aBUFRÆbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀ 0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@)2à`ÃPs÷€Œa€[€6–€s÷€Ï…YÝ[æO±O± Ž·€,€ž±˜–€Œa€Œa€·çïYž±ÃPÏ…Œa€·Ï…ªæž±ÛºÃPž±ž±˜–€Ï…Ï…·€,€6€ 56î€[€g€C#€[€€,€g€g€€,€g€ªæYtPtP€…Ý7GÝÝYçï·ž±·ÃPçïÏ…çïÃçïÛºÃhC|h˜ï[æ€çïô$ÃPªæÛºÏ…ÃP·OX€„€g€ÃPŒa€Œa€6î€6a€˜–€çïO±7G€çï ŽhŒº˜ïŒºhŒº·t˜ï7G€çïž±çïO±‚è¡PcÏÞh Žô$÷t²«?7777¤ËBUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀ40’I$’I$’I%$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¦¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUPUUUPUUUUUð aâ-˜ïŒº˜ï±YI—[æ Žçïô$Ûºô$ ŽI—%Q=»²²%Q1-1-UÌh˜ïhh=bI—tP[æ€çïÉj€ 5g€ۺ[æ[怅 ޱ ŽYÕŸ€±$øY1-I—çïçï¤Ë€Œa€Us0ÔUsUsÉj€çïtP=b1-˜–€€,€˜–€Œa€½5€±€ÛºY ޽5€±€Éj€½5€[€ 5$Ÿ+Ä~7 ‚±²|0Ô 5€,€±€Œa€I>UsUs= [€= Uss÷€Us= $Ÿ7 ú—ú—ú—ú—s€…‚7 € 5UsUsI>= g€I>I>I>I>= ˜–€ÕŸ€ÕŸ€±€±€jI>= I>s÷€$Ÿ7777aBUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀL0$’I$’I$”’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B©lkŸÊt­®ˆd)Ž„©msáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUUUUUUUUUUUUUUUUUUUUUUUUýàb¥}~¥}|= $Ÿjjj$Ÿg€= j[€0Ô€,€˜–€˜–€€,€I> 5~¥}|$Ÿ¤Ë€˜–€¤Ë€±€ÛºÏ…çï[æO±tP1-=b1- ŽçïYô$çïçïô$YI—ÉÃŒºO±ÃÏ…1- Ž1-tP€…½ŽÜèHÉÃÕø¥$hO±I—1-$øO±hÉÃtP€ô$çïÉjYçï ŽO±±Y‚%Q1†%QÕø¥$I—$øYçïۺυÀ…½Ž¥$=bçïÏ…Ûº½5Ãô$Ãɲ ç çÜ€…€Éj€¤Ë€Éj€˜–€OX€0Ô€,€Éj1-I—=bÃÛº½5€±€˜–€Œa€¤Ë€7777aBUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀ`0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’Ûm¶Ûm¶Ûm·`‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-Ž|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUPUUU@UUUUUUUUUUUUUUUUUð `Éj€ÕŸ€¤Ë€Œa€I>= $Ÿ 5 5+Ä+Ä| 5I>s÷€±€±€g€¤Ë€€,€s÷€€,€Œa€€,€[€€,€[€= 0Ôj0Ô 5= 0Ô+Ä~7 ‚±²|j0ÔUs[€€,€0Ôj0Ô= 0Ô$Ÿ= = $Ÿj+Ä~7 ú—ƒ+Ä| 5+Ä|$ŸI>ÛºÛº˜–€±€Éj€½5€¤Ë€ÕŸ€±€½5€çï Ž1-UÌ€…I—ÕŸ€Éj€¤Ë€ô$ÕŸ€¤Ë€˜–€±€Ûº[æUÌI—Ã$øUÌtP ŽtP€…$øÛºÕŸ€±€[€$Ÿ[€0Ôs÷€¤Ë€˜–€ô$hŒºUÌ1-$ø ŽYçïۺå$˜ï±YÕø‚²ô}èH˜ï˜ï€…€7777aBUFRöbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÂUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï{Þ÷½ï}ï{Þ÷½ï{Þ÷½ï{Þ÷€„!B„!B„!D!B„!B„!B†1ŒcÆ0Š!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýà^Ÿc n }Œ¾h-pOX€¤Ë1-Iðc ƾh.ŠlV`º(Ah‚è¡ n 'À » -PÖ O€0Ôja¨ÃP|(!‘Àf;à¤Ë€çïèHc ¡ ýà6î€zçï1†õˆ 'À » -P)2à'¬@OX€’|a¨ @ q°#`9ûÀs÷’Õ²>|( q° @@g€υŸ > ýà/M`ReÀ€,€Ï…1†d¸Ø~ð F0Àg€·$øèH“à¡ O€'¬@½5’Õ%ªé¬ ÓX™pð j 5I>a¨†  „€F0Àg€±‚²nèKTŒ0„€I>†GÛº·tbZKT?xýàj= 0Ôa¨zÄ L¸!‘ÀOX€ž±ô$7777€IBUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠ¥±ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUð `€,€˜–€½5€Éj ŽÃÃ1-=bÃô$ô$ ŽhUÌ$ø$ø$øÃI—=bÉj€Éj€±€¤Ë€½5€Éj€±€±€½5€Éj€¤Ë€±€½5€Œa€I>= I>[€Uss÷€¤Ë$ø=b$ø½5€Éj€ô$çïçïÕŸÃUÌâ-˜ï=bUÌhI—I—$ø1- Ž Žg€ۺ Ž ŽYÛºçï€,€Œa€½5€±€ÕŸ€ÛºÕŸ€çïŒa€UsUsUs$Ÿ 5+Ä~±²~±²|0Ôg€€,€g€Œa€s÷€Uss÷€Œa€±€ÕŸ€Éj€Œa€¤ËY0Ôj0ÔI>= ½5€€,€[€g€½5€ÛºÕŸ€½5€±€Éj€˜–€±€€,€˜–€˜–€±€±€¤Ë€±€7777X€BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë$0$’I$’I$’II$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ç>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUQUUUUUUUUUUUUUUUUUUUTUUUUUUU@ð `±€Œa€g€= 5±²|jUs½5Ã1-UÌ1-=bÃۺà ŽÃh$øÕøèH ç1†ô}˜ïI—I—ÃÛºÕŸ Ž1-˜ï1-1-ÕŸ€˜–€€,€s÷€±Ãô$ÉjÃ[æ=bÉj€˜–€[€I>I>¤Ë1-tPI— ŽÉj€€,€[€Us€,€[€½5€çïŒa€I>Us[€¤Ë€s÷€g€I>0Ô= Us€,€çïçïç€I>±²~7 ƒ+Ä~±²}ú—‚±²~±²| 5s÷€[€s÷€0Ô= Éj€˜–€±€Ûºô$$øtPhÃÛº½5€¤Ë€€,hYô$Éj€¤Ë1-à ŽY˜–€s÷€[ƒ+Ä}ú—ú—€7777X€BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë<0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×B2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUPUUUPUUUUUUUUUUUUUUð ` 5[€g€g€˜–€g€¤Ë€½5€½5€= ˜–€¤Ë€ÕŸ€Éj€˜–€±²|Œa€I>s÷€I>$Ÿ±²~7 ‚±²|j±²+Ä| 5$ŸI>= Us0ÔUs€,€I>= 0Ô±²}€…ú—sssƒ+Ä~7 ‚7 ƒ+Ä|j$Ÿjj0Ô0Ô$ŸŒa€€,€g€€,€I>j±²}€…ú—€…sú—€jÉj€ô$ÛºÃh=b[æ€ô$˜–€˜–€ç€¤Ë1-[ætP=b=b1-Y ŽYô$=bUÌtP€çï½5€ÕŸ€çï€,€¤Ë€€,1-ۺÀ…±YhUÌ$ø½5€˜–€±€¤Ë€ô$Ã=bÃY¤Ë€±€¤ËY¤Ë€7777X€BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËP0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’Im¶Ûm¶Ûm¶àŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2¥mpC!Lt%sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@ýà`¤ËI— ޽5€ÉjI—Œº¥$¥$ŒºtP=bô$ô$ô$çï[怅˜ï Žô$çï¤Ë€[€0Ԥˀ[€˜–€Éj€Ûº±€¤Ë€¤Ë€Œa€g€= 0Ôj$ŸOX€¤Ë€Éj€[€I>[€g€g€€,€s÷€Ï…ô$ Ž$øÏ…˜–€g€$Ÿj 5j¥}~¥}~¥}|$Ÿ$Ÿ 5jOX€[€s÷€[€0Ô 5j[Ãô}€,€j$Ÿ 5= jI>¤ËY[怅tPO±O±=bŒºŒºŒº˜ïÉñY=bô$¤Ë€±€g€$Ÿ$Ÿ 5$ŸŒa€Ï…Ï…±€˜–€0ÔOX€0ÔI>OX€g€[€€,€= j}îbtP€7777X€BUFR&bÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËUU\ç9Îsœç9Îsœç9Îs­kZÖµ­kZÖµ­kZÖµ½ï{Þ÷½ï{Þ÷½ï{Þ÷Îsœç9Îsœç9Îsœç9Þ÷½ï{Þ÷½ï{Þ÷½ïzŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUQUUUUUTUUUUU@UUUUUUUUUUUUUð b±²~±²|±²|jŒa€Éj€½5€€,€˜–€¤Ë€¤Ë€s÷€[€˜–€˜–€g€Us0ÔI>$Ÿ[ƒ+Ä|j$Ÿ= I>çïÃÕŸ€Œa€¤Ë€½5€€,€€,€UsUsUsI>= I>[€€,€s÷€[€j+Ä+Ä}ú—€$Ÿ˜–UÌh¥$€çï= Us 5$Ÿ 5j 5I>0Ô= Éj€½5€±€Éj€¤Ë€= 5+Ä~7 ƒ+Ä|$Ÿ0Ôs÷€g€€,€g€€,€€,€€,€Œa€˜–€¤Ë€Éj€ÉjYÃÛº½5€¤Ë€€,€€,€s÷€s÷€[€¤Ë€˜–€€,€s÷€Œa€¤Ë€Éj€˜–€ÛºÉj€±€¤Ë€ÛºÉj€çïÕŸ Ž ŽYÕŸ€½5€±€Œa€¤Ë€ô$$øÕŸ€Ûº7777BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@0I$’I$’I$¤’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN•µÀ …1ж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðBžP`ù¢A @³Àá8@‘ßÀ‘ßÀ³ÁAA A @³ÀÎèÀ…ªÀ‘ßÀªIÀªIÀím@Õ@¶~Àm@À¶~ÁadÁ¶×Á†ÁOABàABà@³Àím@ímABàA†ÁAA†ªûÃ7]B·0Á×@ù¢A×AyÎÁBàAadÁyÎÁžmÂz'À+(@ªIÀá8@Õ@TÖÀ³À³Àm@ÀžÁBàAU/Á×@á8@ù¢@¶~ÀÎèÁ A*vAžmšB·0Ãz€Ãz€Â*ÏAU/ÀímAU/ÁAA*vA*vAª¢Á¶×ÁadÁ’8ÁžmÃ7]COÇBOnAÏAžÆÂC9AíÆAÏAÁá‘Ba½Ãó@©ƒC’AÏAÁAA†Á*vA†ÁíÆAíÆAÏAÂ*ÏC¾BžÆÂÛÏÂÏšÁùûA AžmÁà ÁžmÁU/Á6«A’8Ám™ÁyÎÁm™Âa½Âa½ÁO@á8@ù¢A6«A*vA×ABà@7777j€BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBX×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUTUUUUUUUUUUUUUUUPUUUETUð a¥$tP€ÕŸ€s÷‚1† ç ç˜ï=bÛºÛº ŽtPäˀ˜–€s÷€Us= = Uss÷€= UsUsŒa€˜–€±€UsI>$Ÿ±²~±²~±²~±²| 5 5jj0Ô= = = 0Ô0Ô= UsUs[€s÷€g€I>= $Ÿ$Ÿj$ŸUs½5$øY ŽçïÛºÛº½5€±€±€ÕŸ€Éj€ÛºÛºÃUÌ=bô$½5€[€[€[€g€g€±ÃÛºÉj€Éj€ÛºÛºÕŸ€½5€±€˜–€[€Us$Ÿ$Ÿ 5+Ä~7 ‚7 ú—‚7 ‚±²|I>I>I>0Ô$Ÿ0Ô0Ô= g€j= 5±²|$Ÿ0Ô0Ô0Ô$Ÿ+Ä|UsUs7777j€BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@00$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUTDUUUUUUUUUUUUU@AUUð `±€ÕŸ€¤Ë€€,€[€s÷€Œa€s÷€g€Usg€I>Uss÷€€,€I>$Ÿ= 0Ô[€˜–€Œa€g€s÷€s÷€s÷€Œa€g€[€€,€= Us±€Éj€s÷€˜–€ô$±€ÛºÉj€ÛºÉj€s÷€Us$Ÿ[€[€jú—ƒ+Ä| 5 5±²|j±²| 5$Ÿg€çïÛºUÌ Ž€,€±€ÛºŒa€±€Ûº$øÃÛºÛº±€±€ÕŸ€±€g€¤Ë€Éj€±€[€˜–€±€g€0Ôj 5jj 5$Ÿ= Us[€I>$Ÿ0ÔUs[€= Us€,€= $ŸUss÷€0Ôú—sƒ+Ä|j±²~±²|jg€ô$YÛºÕŸ€Éj€ÕŸ€çï7777j€BUFR¶bÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@D0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×B2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýà]ÏÞŸ¼?x øPýà= €,€çï²>鬦°@@†G[æ‚Ið“à 'À~ð!‘ÀC#€†GÃzk> @Ü ÓXð OX€¤Ë€½5zkŸ¼Ÿ¼Ð @ @j€,·tÐÝÐ ð 3á@^šÀ½51-Ð?x ‰h-PC#€ÌwÀÛº·tnèc |(¡ B@$Ÿg€·ÏÞc –¨¦°,@ ReÀ˜–I—1†Ä´ÆÐ6ËI—bZ“à ‰hŒ0 'ÀB@ 5jÃPèH¸Ø~ðã`„€Œa€ž±²ˆ –¨¦°2Z g€½5zkôÖÝÐ~ð„€&% 9ûÀ¤Ë·tc Æ-P6î€^šÀ¤Ëzk28 'ÀB@Ð&% ReÀ€,€7777ƒ+BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@X0 $’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»m¶Û`‹k€" c¡/„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `Œa€g€0Ô0ÔjI>Œa€çïh=bŒa€€,€[€çïs÷€€,€ô$Y€,€g€I>$Ÿ= $ŸUsÛºU̘ïâ-YÉj€±€½5€½5=bI—˜ïhY1-UÌŒºtPhÃUs= [€[€€,€˜–€çïÛºô$Éj€ÕŸ€½5€˜–€¤Ë€Œa€Œa€Ûº±€±€ô$Ûºô$çï±€s÷€˜–€$ŸI>€,€˜–€Œa€s÷€[€[€±€Œa€½5€±Y½5€Éj€ÕŸý5€Ûºg€Usg€½5€Œa€Œa€€,€I>= I>€,€Œa€¤Ë€˜–€˜–€Uss÷€I>I>[€g€I>0Ô$Ÿ 5+Ä+Ä|7 €…s€…€…€ 5j7777j€BUFR&bÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËBUUUUUUUUUU]ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½ï½ï{Þ÷½ï{Þ÷½ï{ÞðB„!B„!Bж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇB–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUUUUUUUUUUUUUUUUUUUUUUUUUð `0Ô$Ÿ= $Ÿ$Ÿ= 0ÔŒa€€,€˜–€˜–€½5€s÷€$Ÿú—ú—‚7 ‚±²|j7 €±²| 5 5j$Ÿ0Ô$Ÿ[€I>s÷€s÷€Uss÷€s÷€= j0Ô= s÷€Œa€±€çïçïçïÉj ŽÕŸ€ÉjUÌhY±€Œa€s÷YUÌÛºŒa€Œa€[€˜–€˜–€½5 Ž ŽÉj€±€¤Ë€±€ÕŸ€Ûºçï ŽUÌ1-$øÃ1-$øô$½5€˜–€¤Ë€Œa€˜–€s÷€ÕŸ€ÛºÛºô$½5€ÛºçïÛºÃô$ Ž¤Ë€¤Ë€½5ÃUÌ$øÛº€,€±€±€[€Œa€½5€Ûºô$Éj€¤Ë€Éj=b½5€½5€¤Ë Žô$ÛºÛºÃ7777BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€0$’I$’I$’II$’I$’I$’m¶Ûm¹$’I$’I$¶Ûm¶Ûm¶ÛmÛm¶Ûm¶Û`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†BÆT­®ˆd)Ž„©lk§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUEUUUUUUU@UUUUUUUUUUð a€…[æY$øô$hI—YÕŸ€¤Ë€˜–€±€˜–€g€Us˜–€€,€˜–€Œa€Œa€Œa€¤Ë€Œa€±€ô$ÛºÛº±€I>UsI>+Ä~±²~7 ‚±²~±²|0ÔUs= j 5jj$ŸUsg€€,€˜–€€,€j$Ÿ+Ä|$Ÿ 50Ôçïô}$ø±YÃÛº±€˜–€¤Ë€€,€˜–€s÷€Œa€½5€½5€Ûº¤Ë€˜–€s÷€€,€˜–€±€Éj€½5€¤Ë€˜–€I>j+Ä~7 ‚±²|= s÷€Éj€½5€±€¤Ë€±€±€ô$ÃÃà ŽÕŸ€˜–€Œa€g€Éj€¤Ë€0Ôj0Ôg€I>Us€,€¤Ë€¤Ë€±€˜–€¤Ë€½5€½5€ÛºÕŸ€Éj€¤Ë€¤Ë€±€7777€BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€ 0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛnÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ç>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUQUUUUUUUUUUUPUUUUUUUUUUUUUUUð `Éj€˜–€s÷€= 0Ô+Ä|j0ԤˀÉj€˜–€˜–€s÷€˜–€¤Ë€˜–€¤Ë€˜–€ÕŸ€ÕŸ€ÛºÛºÛºÕŸ€€,€[€0Ôs÷€€,€I>I>0Ô= [€g€[€s÷€€,€€,€g€€,€±€±€±€ÕŸ€Éj€ÕŸ€ÕŸ€Éj€€,€[€= $Ÿ+Ä~±²~7 ‚±²| 5$Ÿ 5$ŸjI>€,€0Ôjj0Ô$Ÿj 5+Ä~±²}ú—ú—‚±²|[€˜–€Éj€Éj€Œa€€,€g€˜–€¤Ë€¤Ë€Éj€ô$±€Œa€€,€Œa€¤Ë€g€$Ÿj$Ÿj€,€±€çï½5€ÛºÛº½5€½5€ô$ÕŸ€ô$ÕŸ€çï½5€±€Éj€Ûº¤Ë€I>jI>Us[€g€7777€BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€80$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUP@PUUUUð a=bUÌ=b=bYY Ž Ž$ø˜–€½5€Éj€½5€±€½5€ÕŸ€Éj€ÛºÕŸ€€,€s÷€s÷€s÷€˜–€¤Ë€½5€±€Éj€½5€±€ÛºY Ž ŽYÃI—Éj€±€˜–€±€±€±€s÷€s÷€= $Ÿ= g€˜–€¤Ë€¤Ë€Éj€¤Ë€ÕŸ€Ûº½5€ÕŸ€çïçï±€˜–€˜–€€,€€,€Œa€¤Ë€g€I>j0ÔjUs€,€[€˜–€˜–€±€s÷€I>Us[€˜–€g€0Ô0Ôg€g€՟€±€I>$Ÿú—‚±²|$Ÿ+Ä~7 ‚7 €j7 ‚7 ú—‚7 ‚±²}ú—ƒ+Ä~7 €$Ÿs÷€˜–€çïô$Y$ŸjUs¤Ë€¤Ë€g€Us[€Usg€7777€BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€L0$’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUTUUUQUUUUUUUUUUUEUUUUUð `s÷€Us€,€€,€g€g€g€s÷€±€¤Ë€s÷€I>g€$Ÿ0Ô0Ô[€g€g€[€[€= Us= [€$ŸUs0Ô$Ÿg€= I>g€j= +Ä}ú—€$ŸUsÉj€ÕŸ€€,€s÷€€,€Us¤Ë€Œa€±€½5€ÛºÉj€Éj€gƒ+Ä|g€g€UsI>Us€,€UsŒa€½5€çï Ž$ø¤Ë€s÷€˜–€s÷€€,€g€½5€Éj€s÷€= I>j$ŸUs= = [€ 5= ˜–€€,€g€= I>0Ô$Ÿ= I>0Ô0Ô= j 5+Ä|jj$Ÿ 50Ôú—€…€…€$ŸI>j[€[€g€Œa€€,€s÷€˜–€€,€Us[€I>$Ÿ7777€BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€`0 $’I$’I$’RI$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’Ûm¶Ûm¶Ûm·m¶Û`‹k€" c¡*[çÂ2+k€" c¡*sáN•µÀ …1Е-sáN•µÀ …1Е±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUAUUUUPUUAUUUUð b7 ‚±²}€…ú—€Œa€…‚±²| 57 ƒ+Ä}€…‚±²+Ä| 5+Ä|+Ä|±²|I>€,€çïÉj€$ŸUsg€$Ÿ±²}ú—ú—€ 5= [€g€[€[€0Ô$Ÿj7 ƒ+Ä|j= 5 5+Ä|Œas‚±²+Ä|= s÷€UsUs[€g€= Us0ÔUsI>j 5$ŸI>Us0Ô7 sss€…‚±²|½5€Éj€Ûº¤Ë€I>0Ô7 ƒ+Ä+Ä~7 ‚±²+Ä|jj+Ä+Ä|j7 €0Ô[€½5€ÕŸ€Œa€0Ô+Ä~±²~±²~±²~±²+Ä|j 5+Ä|g€I>Œa€Ûº€,€˜–€[€s÷€s÷€±€ô$ ŽI—ô$½5€7777€BUFR&bÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë‚UUUUUUUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï@„!B„!B„!D!B„!B„!B†1ŒcÆcÆ1Œcç9Îsœç9Îsœç9ÎpŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUUUPð `çïçïYI—UÌ[æ€ô$Œa€ 5 5±²}ú—€…s€O€…€Œa€O€O€Œa€…ú—ƒ+Ä+Ä}ú—ú—‚±²~7 ‚±²~7 ‚±²}ú—ú—ú—‚7 ‚7 ‚±²}ú—ú—‚±²~±²+Ä~±²~7 €…€O€Œa€Œas€…€…ú—€$Ÿ€,€= jUs±€j$Ÿ[€[€Usg€0ÔjI>Œa€Éj€€,€Éj€Œa€s÷€¤Ë€€,€= jjs÷€s÷€½5€€,€˜–€ÛºI>Usj0Ô$ŸI>I>Éj€½5€Ûºô$0ÔI>I>I> 5js÷€ÕŸ€ÕŸ€½5€s÷€g€˜–€[€0Ô+Ä~±²+Ä|$Ÿ$Ÿ7 s€Œa€Œa€Œass€Œa€Œa€Os€…€7777BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀ 0 $’I$’I$’RI$’I$’I$Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ý¶Û`‹k€" c¡*[çÂ2+k€" c¡*c\øFS¥mpC!Lt%LkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUð as€Œa‚7 ƒ+Ä}ú—€…‚7 ú—ú—€…€…ú—ú—ú—ú—€…€…ú—‚7 ‚±²~±²+Ä+Ä~7 ‚7 ú—€…ú—€…€…‚7 ƒ+Ä|$Ÿ[€¤Ë€I>jj 5j$Ÿ= $Ÿ$Ÿ$Ÿ0Ô$Ÿú—‚7 ‚7 ú—‚7 ‚±²|jg€՟€Œa€˜–€¤Ë€$Ÿ$Ÿ[UÌŒº=bçïÃÛº$ø€…UÌô$Éj€s÷€s÷€˜–€±€±€Œa€s÷€s÷€[€s÷€˜–€½5€¤Ë€ÕŸ€çï±€Éj€ÕŸ Ž=b=b=bŒa€˜–€½5€Œa€Éj€çïçïI—=b±€Éj$øçïtP¥$±Y€…€Éj€€,€s÷€Œa€˜–€ô$ô$Ûº[€UsI>$Ÿ$Ÿ€,€Œa€7777ÔBUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀ80I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’[m¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„­sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUð `Éj€±€˜–€˜–€€,€±€Œa€Œa€[€UsŒa€Éj Žô$˜–€Œa€I>0Ô+Ä~±²+Ä|I>g€s÷€s÷€I>I>I>I>Uss÷€Us$Ÿj$ŸUsI>±€ÛºYçïg€Us0Ô[€[€$Ÿj$ŸUs$Ÿj$Ÿ0Ôs÷I—½5€çïÃUÌI—çïs÷€€,€= j0ÔI>Us€,€€,€s÷€Œa€˜–€Œa€½5€€,€Œa€Œa€Œa€˜–€€,€s÷€€,€Œa€çï¤Ë€[€= 5 5[€s÷€g€g€Us= = 0ÔUsUsI>I>I>= UsI>$Ÿ0Ô$Ÿ 50Ô= 0Ô= I>UsI>Us€,€g€˜–€g€g€Œa€7777ÔBUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀL0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUQUUUUUUU@ð `Œa€€,€±€Éj€½5€±€ÕŸ€Éj€±€±€Œa€g€€,€€,€˜–€g€g€s÷€g€€,€˜–€€,€€,€±€g€Us€,€ô$h ŽY Ž¤Ë€Us[€˜–€±€€,€g€€,€s÷€g€¤Ë€±€˜–€ÕŸÃ$ø±€Éj€ÛºÉj€ÛºÕŸ€ÕŸ€ÕŸ€¤Ë€I>0ÔI>g€g€[€g€g€€,€s÷€˜–€€,€€,€˜–€˜–€s÷€€,€Œa€çï1-[æ€ô$çï$øÛºÉj€±€€,€I>0Ôjj 5 5 5±²| 5 5I>g€€,€[€€, Ž Ž¤Ë€€,€½5€ÕŸ€ÛºY$øäˀ[€s÷€= $Ÿjj 5jg€I>j+Ä+Ä~7 €7777ÔBUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀd0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ …1Е±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUUUUUUUUUUUUUUð b±²~7 ‚7 ‚±²| 5$Ÿ$Ÿ 5$Ÿ0Ô+Ä| 5+Ä| 5I>I>0Ô7 ‚7 ‚7 ‚7 €I>UsI>UsUs0ÔI>I>Œa€ÕŸ€ÉjUÌ Ž€,€çïÃ=b½Ž±Y$ø¤Ë€j0ÔÉj€ô$=b$øg€0ÔI>g€Us½5€ÕŸ€Ûºô$Œa€ÕŸUÌ1†²1†ô$Œa€˜–€€,€[€€,€½5ÃÃô$ô$ô$˜–€ÕŸ€ÕŸ€±€ÕŸ€˜–€¤Ë€ÕŸYÛºÕŸ€çïÉj€˜–€[€$Ÿj[€½5I—$øÛº¤Ë€[€[€s÷€I>[€$Ÿs÷€[€= g˜ï‚t©Õø=bÕŸYô$ÕŸ€ÛºÛºô$tPUÌçï7777ÔBUFR&bÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÂUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï}ï{Þ÷½ï{Þ÷½ï{Þ÷€B„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ0Š¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTDUUUUUUUQUUUUPUUUTUUUPPUTUð `Œa€[€7 €+Ä|0Ô±²|= g€UsŒa€Œa€[€j 5±²+Ä|s÷€˜–€½5€Éj€˜–€g€I>jj 5$ŸUs€,€±€Us[€s÷€0Ô$Ÿ= ˜–€= ±²|g€˜–€ÕŸ€½5€±€±€€,€ 5$Ÿ€,€Œa€s÷€s÷€Œa€€,€g€$Ÿ 5+Ä~±²|I>Œa€€,€Œa€Œa€Usj$Ÿ 50Ô= 0Ô 5+Ä|$ŸI>0Ô±²|±²~±²|jŒa€Éj€½5€g€= 5±²+Ä+Ä| 5$Ÿ+Ä+Ä|j 5±²}ú—ú—ú—ss€…€$ŸUs= = j 5+Ä| 5 5j7777BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUQTTU@TUUUTUUQUUUTUUUTð `= 5j 5 5±²|jUsgƒ+Ä~7 ú—‚7 ‚7 ú—ú—ú—ú—‚7 ú—‚±²~±²|$Ÿj7 €0Ô[€ 57 ‚±²|+Ä~7 ƒ+Ä| 57 ‚7 ‚±²~±²~7 ƒ+Ä|0Ô±²}ú—‚±²}€…€…ú—€$Ÿg€I>0ÔI>I>0Ô$ŸI>I>[€€,€0Ô$Ÿ$Ÿ 5j 57 ‚7 ú—‚7 ‚±²| 5€,€Éj€Ûºs÷€$Ÿ 5$Ÿ 5±²| 5$ŸI>€,€s÷€[€ 5I>UsI>s÷€½5€çï[æ€g€ 5+Ä|$Ÿ= 0Ô0Ô= I>I>= UsUs[€ 5 5+Ä~±²|[€ô$I—7777—BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë(0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%LkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž…-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUQUUUUUUUUUUUUUTUUUUUUUUUUUUUUð atP€±€j+Ä|jj= $Ÿ$Ÿ˜–€[€0Ô 5±²|= ±²|I>[€½5€çïYçï€,€s÷€= Œa€= Ûº¤Ë€[€[€ô$±€Œa€€,€ÛºUÌ¥$€ÕŸ ŽŒº½ŽŒº€çïÛºÕŸ€Œa€I>I>Us= 0Ô0Ôjs÷€g€Œa€I>g€Us 5j 5±²+Ä|$Ÿj 5 5$Ÿ$Ÿ$Ÿj 5 5[€Uss÷€Œa€¤Ë€½5€Œa€I>Éj€¤Ë€±€€,€€,€½5€çïÉj€Œa€±€Œa€±€±€½5€çï1-ô$ÕŸ€ÕŸÃ ŽÉj€˜–€˜–€Œa€€,€g€€,€Œa€ÉjYYÕŸ€±€Ûºçï½5€Ûº1-7777—BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë<0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUPTUUUPUQETPUTð `ÛºÕŸ€Éj€½5€½5€ÕŸ€½5€˜–€s÷€€,€˜–€¤Ë€½5YUÌô$=bI—ÕŸ€ô$çïÉj€¤Ë€Œa€±€Us€,€[€€,€s÷€g€[€[€I>[€s÷€ÉjÃÉÀ[€$Ÿ 5 50Ôj 5 5$Ÿ 5 5+Ä~7 ‚±²~7 sú—ƒ+Ä|j$Ÿjjj+Ä|I>= $Ÿ= = = = = = = 0Ô$Ÿ= ú—€…‚±²| 5I>I>I>Usj 5 5±²|+Ä| 5j$ŸUsj+Ä|Œa€$Ÿú—ú—s€…s‚7 €…‚7 ‚7 €…ú—€+Ä+Ä|0ÔI>s÷€çïÕŸ€g‚±²|7777—BUFRæbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËT0I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ …1Е-sáN•µÀ …1Е-Ž|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUQUð `€,€[€g€½5€Éj$øÕø½Ž€Éj€˜–€ô$[€€,€çïÉj€Éj€ô$Œa€…€Usg€0Ô 50Ô€,€˜–€½5€¤ËÃh‚ht‚½ç[怽5€$Ÿ= ˜–€= ÕŸ€g€0Ô€,€±Õø‚%Q$øI—¤Ë€s÷€s÷€¤Ë€Ûºô$ÛºÉj€½5€çï Ž$ø$ø$øY=bÉj€çïà Žô$YÕŸ€½5€Ûº±€s÷€[€˜–€ÕŸ€Ûº1-[æ€ô$¤Ë€g€s÷€[€˜–€Éj€€,€Œa€€,€±€˜–€s÷€g€0Ô 5ú—‚7 €0Ô[€s÷€Œa€s÷€Uss÷€g€Œa€Œa€˜–€Œa€= = g€I>$Ÿj+Ä|j±²~±²~±²|= €,€€,€€,€g€7777—BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ëh0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¦5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUAUAUTUUUUEUUUUUUUUUUUUUUUð `Œa€Us[€Œa€g€UsUs$ŸI>s÷€Œa€€,€[€ 5 5I>$Ÿ[€[€Us0Ô±²+Ä|0Ô$Ÿ+Ä~±²| 5$Ÿ¤Ë€€,€½5€€,€j+Ä~7 ‚±²}ú—‚±²+Ä|0Ô$Ÿ0Ô$Ÿ$Ÿ 5$Ÿ$Ÿ0Ô[€g€s÷€€,€€,€€,€= $Ÿ0Ô7 €0ÔŒa€½5€Éj€˜–€Œa€Ûºçïô$ô$çïçïÛºY ŽYô$Éj€[€g€¤Ë€±€Éj€Éj€ÉjÃtP$øÕŸ€ô$±€Éj€çïçï1-½Ž±YYÉj€¤Ë€½5€€,€[€€,€€,€s÷€€,€˜–€Éj€ÛºYÛº½5€ÕŸ€½5€ÛºÕŸ€Éj€çï¤Ë€ÕŸ€7777—BUFRöbÿ« fË2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_{ÞðB„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1ŒcB„!B„!B„!JP‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýà]Ã1†ˆÈ€ 'À'¬@0Ô0ÔÃP&\Èàýà&% dµAY28 ëÐ#`] §ØÁO±‚è¡2ê }ŒŒ0#`6î€z$ø·t>¡ ÈàýàF0À†Gô$èHÐ|(?x,@ ^šÀ˜–ÏÞŸ¼é¬È øPO€^šÀs÷€zÃP† õˆ ë 5 50Ô’|a¨Ð 'ÀýàF0ÀÛº²dÆ = €,€ÛºŸ ÄKTÈà'¬@OX€§ØÁI— “àÈO€&% lV`ÌwÁ½Ž‚·Íõˆ L¸Ö w@9ûÀ^šÀ¤Ë€Ï…Ÿ ˆŒ0!‘ÀF0À’|ô$²28ÝÐ øP 3á@^šÀÏ…1†Ä´dp~ðð ã`jj7777UBUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@0’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶6”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUU@UUUUUUUUUUUUUUUUUUTUTUUð `$Ÿ0Ô±€ô$ô$çïÉj€ÕŸ€Éj€€,€Éj€ô$çïŒa€Éj€˜–€˜–€s÷€Œa€Us0Ô±²~±²~7 €…‚7 ‚±²|j= = 0ÔUsUsUsUsÉj€ÕŸYÕŸ€ÉjYŒa€s÷€Œa€g€0ÔUs€,€±€ÛºYçï½5€Éj€ÕŸ€€,€Éj€ÕŸ1-ô$¤Ë€Éj€Éj€s÷€€,€I>I>Us= 5= Œa€½5€˜–€s÷€s÷€[€[€s÷€[€g€˜–€±€˜–Ã¥$€…€…[æUÌ=bÃ Ž€,€g€€,€¤Ë€¤Ë€˜–€g€Us= +Ä}ú—ƒ+Ä|s÷€s÷€s÷€±€½5€I>I>Us= +Ä+Ä|j 5 5UsI—1-1-Ãô$¤Ë€½5€7777ã`BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@,0$’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUU@UUUUUUUUUU&% `€,€¤Ë€s÷€Ï…7G ŽtPŒº7G+€ô$Ûº˜–€[€C#€6,€ªæÏ…ÃP[€g€$Ÿ6î€C#€€,€ªæOX€Œa€s÷€[€˜–€·Œa€˜–€OX€C#€€,€Œa€Œa€¤Ë€ªæY+C|€Ûº7GYC|tP÷Ï…±Y€…˜ïŒºC|$øY·ÃP¤Ë€ªæ$ø€…‚ô$ÛºŒa€OX€j6î€C#€ÃP ŽäˀOX€ 5úð~Ì‚úð~€Þ~Ì‚úð|¤Ë€ªæô$Y ŽÃPô$ô$Ã$øC|Ã$ø+ ŽÏ…ÛºŒa€˜–€çï··ªæÛºÛºÛºÛºÏ…ÃPÃPçïçïÃYÃÃPÛºç€s÷€7777ã`BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶Ý¶Û`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `€,€g€I>[€I>$Ÿ$Ÿj0Ô0Ô= I>= UsŒa€½5€Œa€Ûºçï1-€…€½5€˜–€g€= 5±²~±²+Ä|I>Éj€Éj€Œa€€,€[€[€Us= Uss÷€Œa€[€= $Ÿj+Ä}ú—€…ƒ+Ä}ú—ú—‚±²|= Œa€Œa€€,€s÷€g€0Ô= = = s÷€s÷€Us±€[€g€I>$Ÿjj$ŸI>±€ô$Ã$øçï¤Ë€Œa€Œa€½5€Ûº$øI—˜ï½ŽŒºŒº˜ïÉÀ… ŽYÉj€Éj€±€¤Ë€±€±€¤Ë€Éj€Ûº ŽÉj$øUÌ$øI—$øYYçïô$Éj€½5€€,€Usg€˜–€¤Ë€Éj€7777ã`BUFRæbÿ« fË  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë@X0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Ûm¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž…±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUTUUUUUUUUUTUUUUUUUð `½5€ÕŸ€ÕŸ€Éj€˜–€ÕŸ€Éj€ÛºçïçïÛºÕŸ€ÕŸ€¤Ë€˜–€€,€I>Éj€ÕŸ€Éj€±€±€±€Œa€¤Ë€€,€s÷€[€[€[€½5€˜–€g€Œa€ÕŸ€½5€Œa€Œa€s÷€Us= Us 57 s‚7 ‚±²|$Ÿ$Ÿ0Ô$Ÿj 5= = 0ÔI>¤Ë€¤Ë€[€0ÔI>[€s÷€€,€±€½5€½5€±€[€[€= Usg€g€s÷€€,€€,€s÷€s÷€I>j±²}€…€…€…€…ú—€js÷YI—$øô$ Ž Ž Ž$øÃ$ø ŽYYô$çïçïs÷ƒ+Ä~7 € 5UsŒa€Œa€[€I>= $ŸI>0Ô$ŸUs€,€½5€7777ã`BUFR&bÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËBUUUUUUUUUUUU]kZÖ·½ï{Þ÷½ï{Þ÷½ï{ÞùÎsœç9Îsœç9Îsœç;Þ÷½ï{Þ÷½ï{Þ÷½ï@„!B„!B„!D ‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUDUUUUUUUUUUUUUUUUU@UUUUUUUPð `˜–€[€Us0Ô$Ÿ+Ä|+Ä}€…‚±²| 5g€±€Éj€ÕŸ€¤Ë€¤Ë€±€½5€¤Ë€˜–€ÛºYÕŸ€ô$Ûº±€Éj€ô$ô$Éj€½5€±€±€½5€¤Ë€¤Ë€ô$Yô$Ãô$YçïÛº ŽI—hUÌ[æI—UÌI— ŽÛºÕŸ€ÕŸ€½5€±€¤Ë€ÉjI—=b Žs÷€[€€,€±€±€±€ÛºÉj€ÕŸ€±€g€I>[€= j0Ô€…€…ú—‚±²~±²}ú—‚7 ‚±²~7 ‚±²}ú—€…ú—ú—€jg€ô$ÛºçïŒa€Us0Ô$ŸjUsÕŸ€Ûºô$Œa€€,€UsI>= [€€,€ÛºYô$±€Œa€s÷€Us 57 ‚±²|7777BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€ 0’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥²S¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUUUUUUUTUUUUPUUUUEUUð aú—ú—ƒ+Ä|UsÕŸY±€½5€ÕŸ€¤Ë€˜–€˜–€ÕŸ€½5€ÕŸ€±€˜–€Œa€€,€g€I>±²}€…€…€Œa€Œa€…‚7 €Us€,€±€g€Us= = ±€ô$ÕŸ€Éj€˜–€I>= Us= $Ÿg€Œa€Éj€Éj€½5€¤Ë€s÷€Us€,€[€[€±€ô$$øI—Yçï±€s÷€j 5 5+Ä~±²+Ä| 5s÷€Œa€€,€s÷€€,€€,€Œa€¤Ë€±€±€½5€Œa€s÷€g€s÷€g€= j 5+Ä~±²+Ä| 5g€˜–€½5€ÕŸ€±€¤Ë€¤Ë€±€½5€¤Ë€½5€ÕŸ€€,€€,€Œa€s÷€UsUsj+Ä|$Ÿ7 ‚7 ƒ+Ä|I>Us€,€€,€Œa€Œa€s÷€g€s÷€7777ºBUFRÆbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€ 0I$’I$’I$’’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶àŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ `€,€˜–€Ï…Y˜–€±€[€[€[€C#€= $Ÿ 5s÷YÃ1- ŽÏ…s÷€€,€s÷€s÷€± ŽC|hC|$ø¤Ë€Ï…Ï…˜–YÃP¤Ë€¤Ë€¤Ë ŽçïYÃP¤Ë€±€ÛºYhŒº€…½ŽŒºO±tPŒº€ô$Ûº€,€Œa€Œa€Œa€˜–€¤Ë€˜–€s÷€€,€±$ø[æ[æ1-ɲܱY€çï€,€[€OX€OX€$Ÿ0Ô0ÔgÂtP[æO±1-çï Žçï½5Yô$$ø1-C|€Ï…˜–€˜–€[€C#€j$Ÿ= $Ÿ$ŸOX1-±Y¥$$ø$ø$øC|$ø[æh€…½Ž‚²¥$[æô}²ÉÃ½Ž€7777UsBUFRÆbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€80I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýàa±Y˜ïtP1-Éj€[€= I>s÷€€,€s÷€¤Ë Ž$ø=b¥$ÉÃèHÕøô}ô}²˜ï ޽5€s÷€= 5OX€¤Ë€˜–€˜–€OX€0ÔI>OX€[€= [€Ï… ŽY$ø$øçïçïÉj€Œa€˜–€€,€€,€OX€Œa€ÛºYô$Éj€ô$Ï…Ï…çïÉj$øÃ Žô$½5€±€Œa€g€I>= I>$ŸjOX€˜–YÉj€¤Ë€±€½5€¤Ë€±€çïÃŒa€Ï…=b¤Ë€I>j 5$Ÿ 5OX€½5 Ž1-ÃÛº±€Œa€¤Ë€€,€¤Ë€ÉjYÛº¤Ë€±$ø1-ô$¤Ë€[€[€g€s÷€I>Œa€½5€çïô$çïÏ…7777UsBUFRæbÿ« fË  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€L0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5ÐŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUEUUUð `Ûº±€¤Ë€Éj€ô$=bI—$ø$øI—1-ÕŸ€€,€[€Œa€¤Ë€€,€±€ÕŸ=b1-=b$ø=b½5€s÷€Œa€˜–€˜–€çïÛºÛº Žçïô$à Žô$ Žç€¤Ë€Éj€ÕŸ$ø¥$‚ôÖ$ø[€Œa€±€çïô$=bUÌ$ø$øÃ=b ŽÉj€Œa€Éj€Œa€€,€€,€¤Ë€½5€¤Ë€s÷€Œa€˜–€¤Ë€€,€Œa€€,€ô$Ã1-ô$ô$çïÕŸ€ÕŸ€€,€I>= 0Ô$ŸI>±€ô$ÃYÕŸ€½5€ÛºÛº ŽI—I—UÌ1-ô$ÛºÉj€¤Ë€s÷€= $Ÿ$Ÿ±²|= Uss÷€±€€,€[€Usg€€,€€,€g€I>= 7777ºBUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë€`0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `I>$Ÿ$Ÿjj[€= I>Œa€½5Y½5€Œa€g€g€g€€,€€,€±€ÕŸh1-ÕŸ€¤Ë€Œa€[€I>+Ä|+Ä~±²+Ä| 5[€±€½5€½5€Éj€ÕŸ€ÛºYÉj€çïô$çïÕŸ€½5€½5€ÕŸ€½5€g€€,€s÷€I>= +Ä|$Ÿ˜–€¤Ë€ô$ç€€,€g€½5€½5 Ž1-UÌUÌI—I—=b1-Ã Ž ŽçïYÛºÉj€ÕŸ€çïÉjI—h[æ€çïÕŸ ޤË$øI—=bh[怅€ô$Éj€€,€Œa€g€[€= I>I>Uss÷€Ûº˜ï$ø[€g€s÷€€,€¤Ë=b$øÃ=bI—Yô$ô$çï±€Éj€7777ºBUFRöbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë‚UUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï{Þ÷½÷½ï{Þ÷½ï{Þ÷½ï{ÀB„!B„!B„"„!B„!B„!CÆ1ŒcÆ0ŠB˜èJ–ƹðŒ§JÚà†B˜èJ˜×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@= \I>ÃPèHõˆ 'À&% „€[òĴ » „€3á@X€@˜–Ó.é¬ ‰h¦°/M`X€@˜–€çïn6&\~ðw@I>Œah‚·Í&\È!‘À= mݽ5b²d?x q°ð $Ÿ 5I>ô$Ið“à ëã`@@±Ã%ªÄ´ ÓX™p/M`X€@˜–1-ôÖ&\ ‰hB@O€ 5ž±²&\B@-P/M`g€ۺYôÖ|(~ðw@2Z dµ@˜–1-²dõˆ 'À 'Àjz$øKT ÓXÐýàF0ÀŒaÓ.ˆ L¸&% dµ@½5ÃÄKT L¸-P/M`LK@ŒabÄ|(#`6î€3á@ 57777=BUFR¶bÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀ0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS SçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@)2à\ q°#Û°F0ÀnÀÏ…Ÿ ÐÈ\À*¹€g€υ·t>€ øP\Àð @@[€Ï…bZ> øP#`F0ÀnÁ Ž1†nè€ » j3á@g€ۺ·tÐöìE#`9ûÀ€,ÃèHd }ŒE-pZàÀBÁ¥$ƒ >Æ X”Èà#Û°@@g€υn6>¡ #`@@€,C|ƒ >Æ ß4Œ0#`@@€,€ÛºÏÞŸ¼€ 5\À F0Àž±=bzÄW0 øPð = †G Ž28ÈÈà#`3á@a¨·† «˜|(B@ã`*¹€OX€ž±ÃzÄ X”w@9ûÀmÝô$28ÆÈà%bPF0ÀnÁ+€7777&BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀ$0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUEýàa[æ1-ô$Yۺυ˜–€˜–€½5€˜–€½5€½5€Éj€½5€Éj€Éj€Ï…Ï…Ï…çïÛºÛº½5€Éj€Ï…Ï…±€½5€¤Ë€Œa€I>OX€€,€Œa€½5€±€Œa€s÷€s÷€g€s÷€g€g€€,€s÷€OX€g€g€[€OX€[€[€[€OX€[€[€Œa€¤Ë€˜–€s÷€s÷€€,€˜–€½5€±€±€½5€Éj€Éj€Ï…ÛºçïÛºÛºÉj€Ï…½5€±€±€¤Ë€¤Ë€Ï…Ã=bYÏ…çï Ž1-YÃ1-$øYçïÛºô$ô$ô$ Ž Ž ޽5€½5€½5€½5€Ûºçï1-[æ ŽYô$$øçïÛº ŽYÉj€s÷€˜–€s÷€$Ÿ|I>7777î€BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀ<0 $’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÆS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUAUUUUUUUUUUUUUUUUUUUUUUUUUð `½5Y1-çïçï½5€Éj€½5€ÉjY Žô$Ûº˜–€½5€¤Ë€€,€= 0Ôj7 ƒ+Ä|j˜–ÃYô$ÃYI—[æI—1-1-UÌ1-$øô$Ûº±€˜–€Us= [€€,€ô$=bI—1-ô$ÕŸ ŽÉj€ÛºÃ=b$øÃÃY Ž ŽÕŸ€ÕŸ€½5€ÕŸ€ÕŸ€Éj€ÕŸ€ô$UÌI—UÌ$øYô$ÕŸ€ô$Ã1-Ã1-=b$øY˜–€g€I>I>= +Ä}ú—€…ú—€0Ô= I>[€I>[€[€€,€½5€ô$Ãô$çïÕŸ€±€Éj€ÕŸ€Éj€Éj€Éj€Éj€±€¤Ë€±€çïÃ1-çïÕŸ€ô$ô$Éj€7777î€BUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÀP0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc_Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUð a Ž$øUÌ¥$ÕøUÌ1-1-Ûº¤Ë€g€Usg€I>= g€½5€ÕŸ€ô$ÕŸ€ô$1-$ø Ž=b=b$øô$ô$Éj€€,€˜–€˜–€[€s÷€Œa€Uss÷€¤Ë€çïô$Ã1-à ŽY ŽÃUÌUÌUÌUÌ€…ŒºUÌ=bÃÉj€ÕŸ€¤Ë€€,€€,€€,€±YçïÉj€Éj€Éj€½5€±€ÕŸ€ÕŸ€ÛºYçïÉj€Éj€±€€,€I>I> 5= g€ÉjYÕŸ€½5€Éj€½5€±€ÕŸ€ÕŸ€½5€˜–€Œa€Œa€s÷€[€Usj7 ú—ú—ƒ+Ä|[€çïà ŽYYô$Œa€ÕŸ€çïÛº±€¤Ë€¤Ë€€,€±€¤Ë€½5€7777î€BUFR&bÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËÂUU\ç9Îsœç9Îsœç9ÎskZÖµ­kZÖµ­kZÖµ­ï{Þ÷½ï{Þ÷½ï{Þ÷Îsœç9Îsœç9Îsœç9Þ÷½ï{Þ÷½ï{Þ÷½ïzŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUUUUUUUUUUUUUUUUUUUUUUUUUUU `Ï… 5Z|j™H|[€= g€$ŸjOX€Œa€s÷€C#€¤Ë€g€ۺ±€˜–€s÷€ÃPOX‚6‚6â-‚6â-ƒZ|OX€g€= ¤Ë€s÷€C#€˜–€g€g€Œa€±€ÃP½5€ÃP±€[€€,€Ï… Ž ޱ€= 0Ô0ÔC#€s÷€€,€€,€€,€˜–€±€±€±€±€¤Ë€˜–€˜–€˜–€˜–€˜–€Œa€Œa€¤Ë€˜–€¤Ë€Œa€€,€€,€¤Ë€¤Ë€˜–€Œa€¤Ë€±€ÃPÃPÏ…çïô$ô$ô$ô$çïÃP½5€½5Y$ø1-ÃÛº¤Ë€ÃPô$ô$Y$øYÛºÃP½5€Ûº½5€±€½5€ÃP±€ÃP½5Y$ø1- ŽYYô$Ï…±€7777BUFR¶bÿ« fË  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ж5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]’ÕÄ&\ -P5gàjÏÀÛºÏÞŸ¼ÝÐ~ðw@6î€mÝÛºèHV~é¬ ÓX¦°)2àLK@Œa€çï²dÈŒ0,@ X€@ŒaI—“.&\ L¸Ð)2àLK@ŒaI—1†Ä´  ,@ X€@Œa€Ï…ÏÞdÈŒ0)2àX€@±I—“.Ä´ ‰hŒ0&% F0Às÷bbZc Ðã`F0À¤ËI—“.dÈ&% X€@½5’ÕÐdpB@-P2Z F0À= ’|a¨a¨ÃP† ã`-ÆÁYIð“.Ä´ ‰hŒ0ã`ReÀÕŸ1-bZŸ¼“à øPð $Ÿ$ŸI>ô$†  'À)2àmÝ Ž·t“.?x Yøw@/M`LK@Œa€7777PBUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðBU@ìp`§@„r@œÜ@§@„r@l@_Ó@Sž@MƒÀSž@_Ó@l@§@œÜ@©@„r@œÜ@œÜ@Ͱ@µF@ÓÊÀßÿÀÁ{@Á{@Ͱ@Ͱ@ÓÊÀøiÀøiÀøiÁžÁžÁžÁžÀøiÀßÿÀßÿÀßÿÀì4ÁžÁ)=ÁÓÁ5rÁMÜÁS÷A‘A‘Ax–Ax–A`,AMÜÁS÷A„ËAx–A„ËA`,A`,A‘Ax–AÎ AàXÁàXÂlºBµøB…$BBÁÁÔA©jAÚ>B,ÂN5ÁìÁÁÔAøÂÂBÁøÂÁøÂÁÎ AÎ A„ËAžÀøiÀøiÀÓÊÁ)=ÁA§Á©jA©jB÷Â5ËÂlºB…$AøÂÁ5BŽC)ïÀS Ä ˜Ã…}CNŽÂÚ—BÚ—BÎbBZjÁ5AÁÔBlºB`…BÚ—BÂ-Bà±ÂÎbBlºBBÁàXÁx–AS÷AS÷A`,A‘A„ËA5A`,AS÷A5rÀ7777PBUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ë00$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠ2ÇBT¶6”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUU@UUUTUUUUUUTUUUPð a1-$ø1-I—tP[æUÌI—=b$øô$Ûºô$çï±€˜–€±€¤Ë€€,€= j7 ƒ+Ä~7 ‚7 €€,€Ûº=bI—I—1-çï Žçï1-1-[æ$øY±€˜–€[€ 5€…‚±²}€…€…€…ú—€g€¤Ë€Éj€Éj€g€¤Ë€s÷€= ½5€€,€€,€Us$Ÿ 5±²~±²}ú—‚±²~7 s€Œaú—‚7 €0Ô[€g€s÷€Us0Ô$Ÿ0Ô0ÔUs˜–€[€Us= I>= 5±²}ú—s€Œa€…ú—‚7 € 5j 5j 5j$Ÿ0Ô$Ÿ= I>$Ÿ$Ÿj±²~±²~7 ú—ú—€…€…ú—‚±²+Ä+Ä| 5$ŸI>7777PBUFRæbÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËD0$’I$’I$’JI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×B2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `$ŸUsUsUsg€s÷€Us˜–€˜–€Œa€Œa€€,€±€½5€±€±€½5€ô$ ŽI—1-tP1-=bI—I—UÌ[æUÌhh=b1-$øÃÃ$øYÃÃ$ø$ø$øÃ1-hUÌUÌ$ø$øYYÃ1-YÕŸ€s÷€Us 5j7 ‚7 ú—€€,€çïUÌhI—UÌ ŽÃ1-tPŒº˜ï[æ[æ=b1-Ãà Ž$ø±€[€I>Us¤Ë€Ûº$øÃÃYÕŸ€ÛºÛºYY$øÃ Ž Žô$ô$çïÕŸ€Ûº½5€½5€±€Éj€ÕŸ€çïY$øY ŽçïY1-I—tP€…=bUÌ$ø½5€7777PBUFR¶bÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËX0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]I—Ÿ IðÐ @ @€j’|ÏÞ&\ ÓX¦°5gàdµ@Éjb%ªÈ  q°ð ^šÀÉjI—ÏÞd?x øPã`*¹€UsYôÖÆ¾h.ŠI>X€@½5‚1†Ÿ¼ÝÐ » !‘À= jÏÀçïÏÞÐ?x –¨ ð X€@ÉjbÄŸ¼¸Ø¡ B@-ÆÀ0ÔI>$ødÆŒ0/M`^šÀ¤Ë€çï$ø† † €I>I—“.?x ÓX„€,@ LK@ô$«?c 'À\À&% I>˜–$øIðÄ´ÆŒ0³ð5gàjÏÀÉjèH28 ë¸+|ÐLK@zÕŸ‚Iðõˆ L¸ C#€ReÀ˜–ÃbZc |( 'ÀO€jI>7777$BUFR&bÿ« fË 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ËUUUUUUUUTD»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»]ï{Þ÷½ï{Þ÷½ïœç9Îsœç9Îsœç9Îs½ï{Þ÷½ï{Þ÷½ï{Þ÷Þ÷½ï{Þ÷½ï{Þ÷½ïx!B„!BŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k„C!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@3á@XÐB@UsÃPW0jmÝÏÞÝÐw@˜–‚1†“àj€,‚²?xj= a¨jUÌÝÐ)2àÕŸƒÐ –¨ýàa¨²Æ)2às÷UÌÐO€a¨† ÝÐjUsô$Ið 'Àj’| @ 50ÔÃP“àB@I>† ÈýàI>ÃPÐB@$Ÿa¨† €$Ÿ0Ô0ÔÃP @ 5a¨Ið 'À$ŸÃPÐB@= ÃP @ 5$Ÿ’| @ 5$Ÿ’|Ið€ja¨†  50Ôô$ÐB@0Ôô$ÐjmÝèHW0O€I>† “à 5ja¨ 'À= $øÝÐ5gàáÔƒ%ª Yø;‚`½5€7777BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@0I$’I$’I$¤’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`ŠøFS¥mpC!Lt%Kc]N•µÀ …1ЗÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUQUUUUð aYÕŸ€½5€Éj€½5€¤Ë€±€¤Ë€¤Ë€Œa€˜–€˜–€˜–€¤Ë€½5€ÕŸ ŽYà Ž$ø$ø$ø$øáÔ€ÕŸ€áÔ€çïô$½5€ÕŸ€ÕŸ€¤Ë€Éj€Éj€±€ô$ Ž ŽçïÕŸ€Éj€ÕŸ€áÔ€±€ÕŸ€ô$çïÉj€s÷€a¨˜–€g€g€s÷€€,€½5€±€±€˜–€¤Ë€½5€ÕŸ€Éj€ÕŸ€çïÉj€çïáÔ€áÔ€Éj€½5€Éj€±€¤Ë€½5€¤Ë€¤Ë€±€¤Ë€±€½5€çïÉj€½5€½5€±€Œa€€,€s÷€g€= = $Ÿ0Ô= j 5+Ä| 5+Ä+Ä+Ä+Ä+Ä+Ä+Ä|ja¨a¨s÷€s÷€Œa€¤Ë€áÔ€áÔ$øçïÃYŒa€Usa¨±²+Ä~±²+Ä|7777èBUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@ 0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUTUUUUUUUUUUPUUT@QUUð ` 5= a¨€,€g€g€g€I>˜–€±€˜–€¤Ë€a¨I>0Ôj±²~±²}ú—ú—‚7 ‚7 ‚7 ƒ+Ä|j¤Ë€ô$Éj€Éj€Éj€çïçïáÔ€áÔÃYÕŸ€¤Ë€s÷€€,€a¨0Ô+Ä+Ä+Ä~7 ƒ+Ä| 5€,b=b Ž Ž ŽçïÃ$øÃb1-Ã1-ÃÃà Žý5€= áÔÃ Ž ŽáÔ€½5€Éj€áÔ€Éj€Œa€s÷€Œa€˜–€˜–€˜–€Œa€a¨a¨$Ÿ7 ‚7 €…€…€…€…‚±²|jUs€,€€,€g€Us= UsŒa€Éj€¤Ë€g€= $Ÿ+Ä|±²~7 ‚±²|±²|= Œa€¤Ë€¤Ë€¤Ë€¤Ë€±€çï7777èBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@40 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUDUUUUUUUUUUUUUUUUUUUUUUUUUUUð `±€ÕŸ€½5€˜–€g€UsI>0Ôj+Ä|+Ä}ú—€…ú—€…‚7 ƒ+Ä| 5 5j= I>a¨g€Œa€g€g€˜–€Éj€ÕŸ€çï½5€áÔ€áÔ€½5€±€½5€±€çïô$Ãô$Y ŽÃ1-$ø$ø Ž Ž Ž$ø Ž1-çïç€±€Œa€Œa€Œa€Œa€˜–€€,€¤Ë€ÕŸ€±€Éj€Éj€¤ËYô$çïáÔ€çïYY ŽÃ$ø$øÃ$øÃY$ø1-Ãçï ŽçïY$øbUÌI—I—1-=bn6n6$øÃÃY ŽÕŸ€¤Ë€±€Éj€Éj€½5€±€Œa€±€˜–€¤Ë€½5€Éj€çïYY$øI—UÌ=b7777èBUFRöbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@L@"""""""""""#33333fffffwwwwwwwwwwwwˆˆˆˆˆ€Šˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUTAUUUUUUUð aÃô$áÔ€áÔ€ÕŸ€±€±€˜–€¤Ë€±€Éj€½5€˜–€˜–€Œa€¤Ë€¤Ë€˜–€˜–€¤Ë€¤Ë€áÔ€çïÉj€½5€½5€±€±€½5€ÕŸ€ô$ ŽÃçï½5€ÕŸ€áÔ€áÔ€çïô$ô$çïçïYYáÔ€Éj€±€Éj€g€a¨a¨a¨UsUss÷€a¨= = = = $Ÿ0Ô= 0Ô= 0Ôj0Ôjj+Ä|+Ä| 5 5j0ÔI>g€g€a¨$Ÿ0Ô= s÷€a¨I>= $Ÿ$Ÿjj+Ä|+Ä+Ä|0Ôs÷€±€½5€s÷€€,€I>a¨g€˜–€€,€€,€¤Ë€€,€Usj0ÔI>jj 5$Ÿj$Ÿ= = a¨g€s÷€7777à BUFR&bÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌBUUUUU]kZÖµ­kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½ï½ï{Þ÷½ï{Þ÷½ï{Àж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUE@UUUUUUUUUUUUUUUUUUUUUð `˜–€s÷€˜–€ÕŸ€ô$$ø1-ÃçïáÔ€áÔ€çïçïô$ô$ÕŸ€¤Ë€g€I>= 0Ôj$Ÿ0Ô0Ô$Ÿ$Ÿj0Ô$Ÿ$Ÿ$Ÿ 5+Ä| 5 57 ‚±²}ú—‚7 ‚7 ƒ+Ä|jI>Éj€¤Ë€g€a¨s÷€Œa€s÷€s÷€˜–€½5€Éj€Us$Ÿ= = $Ÿj$Ÿ$Ÿ$Ÿ0ÔI>Œa€½5€çïÉj€Éj€½5€Éj€Éj€Éj€áÔ€ÕŸ€ÕŸ€±€€,€˜–€Œa€g€I> 5j$Ÿj 5$Ÿa¨Œa€½5€±€Œa€çïáÔ€ÕŸ€½5€Éj€˜–€s÷€a¨I>= $Ÿ 5$Ÿj$Ÿj0Ô€,€Éj€áÔ€áÔ€ÕŸ€ÕŸ€ÕŸ€çïáÔ€ô$$øý5€Éj€±€7777BUFR¶bÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýà\Ï…n6Ä´W0 ®`O€-ÆÀÛº«?nèÆŒ0!‘À6î€mÝÛº²Ð¡ Èà„€9ûÀs÷€ÉjzkÄé¬ Yø @@dµ@ÉjzkV~¡ ýà= €, ŽÐÈÖ )2àOX€¤Ë Žb“.é¬È¦°#`s÷ ޲dKT Yø!‘À= z ޲dÈw@6î€mÝÛº·tЬü L¸™p)2à„€= ·²Ä´È q°ã`3á@€,€çïÏÞc Æã`3á@Œa€·ô$«˜Æ q°\ÀO€ 5’|«˜|( ®`&% ^šÀ½5ÏÞ“.KTB@#`F0ÀŒa$ø“.“àdpO€!‘ÀC#€€,Y77775€BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUU@UUUUPUUPUUð aÃ$øçïáÔ€Éj€áÔ€ÕŸ€ÕŸ€çï$ø$øI—$øÃÃY ŽYô$ Žô$YÃ1-1-I—Œº€…I—1-UÌ€…ÃÃn6ÉÃâ-Õø½Ž¥$tPI—áÔ Ž ŽÉj=b=b$øáÔ€Œa€Œa€˜–€a¨a¨€,€˜–€¤Ë€Éj€¤Ë€g€€,€Œa€g€Us0Ô 5j7 €…‚±²|$Ÿ0Ôa¨˜–€Us€,€g€s÷€I>g€Œa€Éj€±€s÷€= 0Ô 5±²~7 ú—€…s€Œa€…‚7 €±²+Ä|0Ô= 5= s÷Yô$˜–€½5€€,€$Ÿs€Œa€O€Œa€Œaƒ+Ä|a¨1-UÌô$ÉjY$ø¤Ë€7777jBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€00 $’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*c\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUEUUUUTUUUUð `ô$$øçïÉj€Œa€Us$Ÿ$Ÿ$Ÿ 5j$Ÿj 5jI>Œa€±€±€˜–€½5€Éj€ô$ Ž$ø1-áÔ€çïÉj€Éj€˜–€s÷€= 0Ô= I>¤Ë€áÔ$øn6Œºn6€…bY$øbb€…˜ïŒºtPŒº˜ïŒº˜ïtP=b1-I— Ž=bUÌn6€…b=b$øÃ$øô$ÕŸ€ô$1-ô$Éj€˜–€Œa€a¨= +Ä| 5a¨0Ôj= I>¤Ë€áÔ€¤Ë€¤Ë€˜–€¤Ë€Œa€Œa€˜–€˜–€s÷€s÷€g€g€0Ô+Ä~7 ú—€…sss‚±²| 50Ôa¨Uss÷€€,€Œa€€,€±€€,€½5€±€˜–€¤Ë€s÷€s÷€I>7777jBUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€D0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@UTUUUPUUUUUUUUUUUUUUUUUUýà` 5~+k€€,€€,îb€€ú>tPîbƒ| 5$Ÿ= I>Us[€= I>}îb€ú>îbtP€€,€€,‚+k€$Ÿs÷€˜–€€,€€,€ÛºŒa€˜–€±€Éj€¤Ë€€,€[€= 5}îbîb€ú>‚+ktP€ú>tP‚¥}| 5[€€,€Us0Ô= = jj$Ÿ[€½5€˜–€˜–€Éj€çïÕŸ€s÷€g€€,€½5€Éj€Éj€Éj Ž=bUÌI—I—ÃÕŸ€±€ÕŸ$ø€…½ŽÕøÕø½ŽÕø±Y˜ï¥$=bÕŸ€Œa€˜–€¤Ë€ô$1-UÌbI—1- ŽÃbI—btPhUÌ=b=b$øÃÃ$ø$ø$ø Ž Ž$ø7777jBUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€\0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’[m¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc]N•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUEUUUUUUUUUTUUUUUUUUUUUUUUð ab˜ïtP=b=bY Ž=bÃI—ÃÉj€¤Ë€˜–€g€a¨s÷€UsI>UsI>+Ä|$ŸI>s÷€ô$áÔ€ô$Yçï½5Y€,€çïbÃô$±€g€I>= $Ÿj7 € 50Ô€,€g€I>$Ÿ0Ôs÷€˜–€¤Ë€½5€gÂÃ$øÃ¥$tPtPUÌáÔ€Us+Ä+Ä|I>¤Ë€½5Ã1-I—ñ€Œa€˜–€±€˜–YUÌÉÃ¥$˜ï¥$˜ïtP¥$n6I—Ã$ø$ø$ø€…‚=»1†ô}n6Yô$1-¥$‚²ÉÃâ-Õø€…€…ŒºUÌ=b1-$øÃI—˜ïÉÃâ-˜ï=bçïs÷€áÔ€ÕŸb7777jBUFRbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!²LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì‚UUUUUUUUUUUUUUUUUUUUUUUU]ï{Þ÷Îsœç9Îsœç9Îsœç8„!B„!B„!B!B„!B„!B„1ŒcÆ1ŒcÆ1ŒcÆ@‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýàaô}%Qô}IðV%²ô}t©‚ÕøÉÃhhô}ht‚½ç‚V%Œº¥$ŒºI—tP¥$½Ž‚ çht‚%QèHâ-˜ïŒºhI—Y¤Ë€ÕŸ$øh½Ž±YbUÌbh€…b€…½Ž½Ž¥$tP$øÃÃô$¤Ë€€,€[€I>[€¤Ë€Ûºçï$ø$ø$øÃ$ø=bI—bb$øô$Éj€çïUÌÃÛºs÷€I>$Ÿj 5$ŸI>g€¤Ë€Œa€Usg€˜–€¤Ë€€,€¤Ë€±€€,€˜–€¤Ë€±€¤Ë€ 5jj 5$ŸÉjYI—hÃÉj1-h€…ŒºŒº˜ï€…htP1-UÌ1-Ûº7777çïBUFR¶bÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð \çï²ÃP†  ®`/M`†GI—zĈ ®`Ð&% Us·UÌb³Åf )$X3ð] Æ]AŒºƒ ¸Ødp ÓX-PLK@ªæn6 õˆ¤O€3ðUs±tPƒ1ßÑB q°™pýà8u ^šÀ˜–€Ï…$ø$ø @ýàjÏÀ½5YÃPIð @“à 5jUsªæô$IðС O€„€0Ôa¨a¨$øÐ ®`ýàF0À˜–ò&\ ‰hÐ2Z zI—Ä¸Ø q°™p = †G€,€’|Ÿ Ið“à ®` dµ@˜–1-bZˆÈàýàF0À˜–èHˆ ë™p 5gàdµ@ÉjéôÖÄ´ÆÐ,@ ReÀ¤Ë€7777jBUFR¶bÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ(0I$’I$’I$¤’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN•µÀ …1Е-|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@#`\Ï…1†Ÿ¼?xdpð @@¤ËÏÞ>?xŒ0j#`@@s÷€Ï…ÏÞ>|(= ž±tP‚“.&\È » $Ÿ@@˜–[æƒJIc¾ ìtj,@ 3á@= a¨ô$Ÿ¼õˆ ëð @@±zkbZé¬ ‰h øP 9ûÀ˜–bbZ>|(dp 'À0ÔI>a¨ÃPIð¡ Ö 3á@C#€†G’|† Ð€Èà@@¤Ë·t @&\ ‰hÖ '¬@[€ž±=bÜlƦ°/M`ReÀ˜–Yn6Ül28 q°#`a¨$ø1†dÝÐ Ðã`!‘ÀC#€I>ÃPÜl|( 3á@mÝçïŸ nè?x »  I>­óA[æ€7777jBUFR¶bÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ<0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýà^“.õˆ L¸™p$Ÿ5gàLK@s÷€çïŸ Ül¸Ø~ð#`LK@½5bÄc Æ™p&% X€@Éjzk“.d –¨ #`3á@¤Ë1-UÌ«˜W0 ®`O€LK@Œa’Õ1†> L¸ &% ^šÀ½5bbZÄ´È øP#`9ûÀŒa€ªæ0Ô$øÐ 'À,@ X€@¤ËÃÏÞÄ´?x5gàdµAYIðôÖ&\ ð 9ûÀ˜–€çï²d?xŒ0#`^šÀÕŸ’ÕŸ¼KT Yø™p,@ €, ŽèHŸ¼ÝÐ ÓXÐã`*¹€$Ÿ0Ô€\À@@s÷€Ï…ÏÞ«˜|( 'Àã`9ûÀg€υŸ «˜“à 'ÀB@j[€7777jBUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀT0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUQUð `UsUsg€Œa€½5€áÔ€ô$ô$áÔ€çïÉj€±Ã=b Ž ŽÃ Žçïô$çïYÃô$ÕŸ€±€Éj€½5€ÕŸYÃI—=bÃáÔ€ÕŸY±€ô$1-UÌ$øYYô$Éj€ÕŸÃÕŸ€Éj€Éj€áÔ€ô$ Žô$$øYô$Yô$ Ž=bUÌ$ø$ø ŽÃÃý5€s÷€I>$Ÿ0ÔI>= Usa¨a¨g€a¨= = UsI>UsI>a¨UsI>$Ÿj+Ä| 5j 5+Ä~±²| 5jI>g€¤Ë€g€a¨g€Œa€g€s÷€Œa€½5€±€Œa€g€I>I>Us$Ÿ+Ä| 5±²~7 ‚7 €0Ôg€Œa€Œa€7777˜ïBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀh0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÐЦ5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUT@@UUUUUUUUUUUUUUUUUUUUUUUUð `˜–€a¨s÷€UsI>= UsUsUs 5+Ä|0Ô±²+Ä|Œa€Œa‚7 €Œa€a¨+Ä+Ä}€…‚±²~±²|$Ÿ±²+Ä|˜–€ô$ Ž˜ï¥$€…bUÌ=b1-=bçï¤Ë€ÕŸÃ ŽÕŸ€€,€a¨g€Usa¨½5UÌŒºÉØïtPI—n6I—ÕŸ€½5€Éj€€,€g€Œa€ÕŸ€áÔ$øô$ÃÕŸ€½5Y$øáÔ€± ŽŒº¥$˜ï˜ïn6ÃáÔ1-=bUÌ1-¤Ë€Us±€¤Ë€±€½5€¤Ë€¤Ë€½5€½5€çïáÔ€½5Ã$ø ŽUÌb=b ŽÕŸ€Œa€±€Éj€ÕŸ€½5€ÕŸ€çïáÔ€a¨$Ÿg€= I>g€= a¨g€±€7777˜ïBUFR&bÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÂUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_{ÞðB„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1ŒcB„!B„!B„!JP‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUAUUUUUUUUUUUUEUUUUUUUUUUUð `½5€±€Œa€s÷€Us+Ä+Ä| 5a¨ÕŸ€½5ñ€a¨I>$Ÿj0Ô= Usg€I>Uss÷ؖÀ…bbn6I—I—1-I—Œº¥$tP1-1-=bÕŸYô$½5€g€¤Ë€€,€˜–€€,€Usú—€…ú—ú—€…ƒ+Ä|€,$øÕŸ€j 5 5±²| 5$Ÿ 5j$ŸUsg€¤Ë€I>$Ÿ0ÔI>0Ô0Ô0Ôa¨áÔ Žs÷€ 5jj= $Ÿj= = = g€±€áÔ€áÔ€±€¤Ë€Us0Ô 5= áÔ1- ŽáÔ€= 5±²~±²}ú—s€…‚7 ‚7 €…‚7 ƒ+Ä~±²~±²}ú—ú—€ 5 57777BUFRöbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@""""#33333333334DDDDDDDDDDDEUUUUUUUUUUffffffffffffwwwwwwwwwwpŠ2ÇCŸÊt­®ˆd)Ž„©n|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUýàc~¥}|j[€s÷€Œa€ 5I>Œa€±€€,€˜–€Œa€I>I>g€[€Uss÷€€,€¤Ë€ÕŸ ŽçïÛº˜–€¤Ë€¤Ë€ÕŸYI—€…˜ï€…hbÀ,€I>Uss÷€Œa€ÕŸ€ô$bbh=bbYUÌô$ÃbtPâ-˜ïhÉØïÃI—UÌI—çïÉjtPÉØU̱€½5€±€Éj€ÕŸ€ÕŸ€Éj€Œa€s÷€s÷€[€g€€,€s÷€Us[€s÷€€,€˜–€Œa€Œa€€,€Œa€¤Ë€˜–€¤Ë€±€çïÕŸ Ž Žô$Éj€¤Ë€Œa€[€€,€[€I>g€±€½5€Éj€¤Ë€€,€s÷€[€I>Usg€= I>I>Œa€±€˜–€7777BUFRÆbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì40$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@,@ `C#€6î€j6î€C#€6î€6î€ 5C#€OX€C#€[€€,€OX€OX€OX€€,€g€[€€,€˜–€çïô$ô$ ŽY+¥$7G Ž Ž7G«?ÏÞ€…h7G[æ$øÃô$YY+Ã[æ[æY€,€OX€*¹€j„€[€ÃPà ŽÃô$ô$ô$ô$Ã[æhh+hܘï[ætPtPhhO±+tP˜ï·t¥$O±€˜–€ÃPô$ž±˜–€˜–€Ï…·YhC|€Ûº Ž[€C#€g€„€„€6î€[€·ô$·ªæž±ž±g€Œa€ô$·Ûº·s÷€˜–€ô$Ï…ªæg€C#€s÷€g€[€ªæ7777€¤BUFRÆbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌL@""""""DDDDDDUUUUUUUUUUUUffffffffffffwwwwwwwwwwpŠS RØ×>”é[\ÈS+k€" c¡*[¶>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ _ Åf ,\À'¬@= g€çïzkd ,™p'¬@ReÀº(A1-d¡ Œ0w@#`ReÀ½5‚²Ä´¡ È-piI Æ]AUÌ1->|(ÐÖ 3á@€,Y“.Ÿ¼|( øP#`F0ÀÉjb“.dp øP&% = €,€çïèHŸ¼d† €$Ÿ·ÄÝÐ L¸Œ0ð $Ÿs÷€çïŸ dÆ#`F0À½51-Ÿ zÄÐ q° 9ûÀÛºŸ ÐÝÐ øP #`3á@s÷€çïn6é¬ øP q°#`LK@½5ÏÞŸ¼c Œ0ð ýà-ÆÀÉj’Õd?x~ðýà)2àReÀ±1-1†KT øP/M`º(A1-7777€¤BUFR&bÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌUUUUUUU\ç:Öµ­kZÖµ­kZÖµ­k[Þ÷½ï{Þ÷½ï{Þ÷½ï|ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷ B‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUAUUUUUUUUUUUUUUUUUUTAð `½5€±Y˜–€½5€áÔYô$±€ÕŸ€˜–€¤Ë€±€ô$YÉj€Éj€±€¤Ë€½5€˜–€˜–€Éj ŽáÔ€¤Ë€˜–€˜–€s÷€g€I>= s÷ƒ+Ä~±²|Us= j+Ä+Ä~±²~7 ú—ú—ƒ+Ä~±²~7 ‚±²|Us 5Usjj$ŸUs˜–€½5€ç€˜–€s÷€€,€g€a¨½5€çï¤Ë€¤Ë€Œa€ÕŸbtPbI—1-$ø ŽçïáÔÃô$áÔ€¤Ë€g€s÷€˜–€€,€˜–€çïI—1-1-Y¤ËYg€g€s÷€g€I>I>Us€,€Éj€ÕŸ€ÕŸ€±€s÷€s÷€˜–€Œa€¤Ë€˜–€Éj€±€Œa€UsŒa€g€I> 5+Ä| 5+Ä+Ä| 57777BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RÜÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUT@UUð `I>Éj€çï½5€±€¤Ë€Œa€˜–€€,€¤Ë€±€±€s÷€s÷€I>= g€= = $Ÿ0Ô 5 5$Ÿ€,€áÔ€áÔ€Œa€±€Œa€s÷€g€s÷€˜–€Éj€±€Œa€±€Éj1-n6I—ô$ÕŸYg€¤Ë€½5Y½5€Éj€˜–€Éj€Œa€Œa€s÷€±€˜–€±€±€Œa€½5€˜–I—ÕŸ=b€…tPI—ÃÕŸ€áÔ€çï ޱ€Us$Ÿ$Ÿ0Ô$Ÿ$Ÿj0Ô$Ÿa¨€,Ã½Ž±YÕøŒº=b=báÔ€ô$ÕŸ€ÕŸ1-$ø= Œa€˜–€I>0Ô0Ô$Ÿj$ŸUss÷€g€s÷€= = j+Ä|7 ú—‚7 €jŒa€€,€0Ô$Ÿj 57777÷€BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUPUUUUUUUUUUUUUUUUUUUUð `jjj 5j$Ÿ= = +Ä|= jjI>ÕŸY˜–€s÷€a¨I>a¨UsUs$ŸI>I>$Ÿ0ÔI>g€g€g€$Ÿ±²+Ä|js÷€¤Ë€ÕŸ€¤Ë€Œa€I>= I>= = Us= I>0Ô= $Ÿa¨ 57 s‚7 €…ú—ƒ+Ä|Us˜–€½5€¤Ë€s÷€I>I>I>s÷€I>€,€ô$UsI>€,€a¨I>0Ô$ŸjI>j$Ÿ= €,€½5€Éj€¤Ë€ÕŸ€€,€s÷€ô$Éj€I>I>¤Ë€˜–€s÷€Œa€€,€g€I>I>I>Us$Ÿ+Ä|$Ÿ= 0Ô€,€Œa€a¨0ÔI>˜–€Œa€˜–€Éj€˜–€áÔ$øbŒºÉÀ7777÷€BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@00I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUTUUUUUUUUUUUUUð a¥$b=báÔ€ÕŸ€ÕŸ Ž¥$¥$€…ý5€½51-ÕŸ€€,€±€áÔ€Œa€½5€˜–€Éj€ô$s÷$ø=bY$ø ŽÃÃ=b$ø€,€a¨a¨$Ÿ0Ô$Ÿj$Ÿ0Ôj0Ô0ÔUs±€ÕŸ€½5€½5UÌI—Ãô$1-ŒºŒºÃŒa€a¨a¨g€a¨= a¨Us$Ÿjj0Ô±²|j 5$ŸUss÷€€,€áÔ€áÔ€½5€g€Œa€s÷€Us= I>0Ôj 5 5jj$Ÿ 5 5±²~7 €j±²|jjŒa€½5€g€g€˜–€Uss÷€a¨a¨I>g€½5€g€I>I>s÷€€,€˜–€€,€a¨s÷€a¨0Ôg€€,€Œa€7777÷€BUFRöbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@H@"""""33333333333DDDDDDDDDDDDUUUUUUUUUUUUffffffffffffwwwwwwpŠt%K”é[\„e:V×D2ÇBØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUEUUUUUUUUð `a¨s÷€s÷€Usa¨j$Ÿ= = $ŸjÕŸ€áÔ€Éj€¤ËYô$¤Ë€a¨$Ÿ 5jI>Œa€± ŽÉj€˜–€˜–€¤Ë€½5€½5€¤Ë€ÕŸ€¤Ë€ÕŸ$øb½ŽUÌçïs÷€I>a¨UsI>g€Éj€ô$ô$ÕŸ€Éj€½5€±€±€±€ÉjYÕŸ€ÕŸ€ô$áÔ€áÔ€€,€0Ôjj 5$ŸI>€,€¤Ë€s÷€a¨Œa€€,€g€˜–€±€ÕŸI—1-Éj€½5€½5€s÷€a¨0Ô+Ä| 5j0Ô½5Yô$áÔ€½5I—UÌI—$øô$áÔ ŽY ŽŒºtP ޽5€±€¤ËÃô$ô$½5€áÔ€çï¤Ë€s÷€a¨Us= 7777€ÉBUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@d0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUTUUUUUUUUUUQUUUUUUUUUUýà`[€= €,€g€Usg€€,€s÷€I>s÷€s÷€¤Ë€Œa€Œa€UsI>I>Usg€UsI>UsUs= Us[€[€[€= [€¤Ë€s÷€¤Ë€I>$ŸîbîbîbtPtP‚¥}|j$ŸI>= UsI>I>$Ÿ= I>= j1-ÉýŽbô$=bY½5€±€Ûº ŽÃô$ÕŸ€˜–€çïçïçïÕŸ€çï Žô$Éj€½5€ô$½5€€,€= j 5| 5$Ÿg€s÷€Œa€s÷€Usg€= s÷€€,€[€½5€€,€¤Ë€˜–€˜–€€,€g€Us= I>jjjjI>I>€,€g€˜–€Éj€ÕŸ€¤Ë€[€s÷€€,€Usg€I>I>7777¨BUFR&bÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌBUUUUUUUUUUUUUUUUUUUUUUUUU^÷¾÷½ï{Þ÷½ï{Þ÷½ï{ÀB„!B„!B„"„!B„!B„!CÆ1ŒcÆ1ŒcÆ1Œ„!@‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØçÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUUUUUUUUUUUTUUUUUUUUUUUUUUUUUð `g€Us 5+Ä~7 ‚7 € 5Us= Us= I>I>I>UsUss÷€g€= $Ÿ= I>½5Y$ø¤Ë€g€a¨I>I>= = = 0Ô$Ÿ0Ô0Ô$Ÿ0Ô$Ÿ0ÔI>0Ô0ÔI>±€çïáÔY$øÃÕŸ€Œa€Us0Ô= 0Ô 5±²| 5jj$Ÿj 5$Ÿ$Ÿa¨¤Ë€çïn6€…bÃYáÔ€Éj€ÕŸ€çï$øô$€,€±€Usa¨s÷€¤Ë€s÷€Éj€çï±€˜–€Œa€€,€Œa€g€I>= = 0Ô0Ôa¨˜–€±€Éj€½5€±€Éj€˜–€€,€±€Œa€±€±€˜–€ÕŸ½Ž€…n6 ޱ€¤Ë€˜–€g€g€˜–€7777BUFRÆbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@#``½5€ÃPÛº½5€ô$ô$ÛºÃP˜–€Œa€çïÃPÛºh¥$‚ çÏÞÏÞI—¤Ë€Ï…YtP€…$øçï½5€Œa€s÷€[€= C#€0ÔC#€OX€= C#€€,€˜–€Ï…$ø±€Ï…ÃPs÷€Œa€Ï…€…±YÏÞ=bÛºÛº$øh ŽÛºYI—¥$Ü=»1-Y€… Žg€s÷€[€ 50Ôs÷€Œa€g€s÷€€,€s÷€OX€€,€s÷€€,€s÷€€,€Œa€g€OX€˜–€ÛºÉÃŒº[æ[æYÏ…±€€,€OX€= C#€OX€C#€C#€0Ô= = $Ÿ0ÔC#€€,€ô$€,€g€s÷€OX€C#€jg€Œa€±€Œa€ô$ ŽÏ…ÃP˜–€˜–€7777=BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€(0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’Im¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+`C!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUQUUUUUUUUUUUýà`çïÛºÉj€ÛºÛºÛºô$ÕŸ€ÕŸY±€Éj€˜–€€,€€,€ŒaYYÛºÕŸ€Éj€çïÉj€ÛºÉj€Éj€¤Ë€±€˜–€±€Œa€s÷€[€= jI>Œa€¤Ë€±€½5€Éj€Œa€Œa€s÷€Œa€€,€˜–€ÛºŒa€Œa€¤Ë€ô$1-$øÃçïäˀçïYYI—ý5€Œa€Œa€Uss÷€€,€Œa€±€±€½5Yô$j$Ÿj| 5jI>ÉjÃÛº˜–€g€€,€g€s÷€[€Œa€s÷€I>jjI>€,€g€j€,€çï±€½5€ô$Y Žô$1-€,€[€j= $Ÿ0Ô$Ÿ= 0Ô$Ÿ0ÔUsI>I>7777j€BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€<0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ý¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUDUUUUUUUUUUUUUUUUUTUUUUQUð `UsŒa$øô$¤Ë€Usa¨I>= $Ÿj 5 5+Ä|+Ä+Ä| 5j0Ô= I>a¨a¨0Ôa¨s÷YÃ=bYI—tP$øô$½5€½5€áÔ€ô$Éj€Éj€ô$ô$ ŽáÔ€Éj€Œa€s÷€Usa¨= = I>s÷€˜–€ÕŸ€ÕŸ€Éj€˜–€€,€€,€€,€a¨g€Œa€Œa€s÷€$Ÿ0Ô$Ÿ$Ÿ±²| 5= I>¤Ë€ÕŸ€±€s÷€s÷€s÷€±€s÷€g€a¨a¨Us$Ÿ= 0Ô$Ÿ 5±²~±²~±²~±²+Ä+Ä|Us€,€Œa€s÷€˜–€¤Ë€½5€áÔ€ÕŸY ŽÃçïÉj€¤Ë€€,€s÷€±€= 5+Ä|$Ÿ˜–€±€¤Ë€7777j€BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€T0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUTUUUUUUUUUUUUUUUUð `˜–€½5€ô$çïáÔ€áÔ Ž1-à ŽÕŸ€±€áÔ€áÔYÃ=b=bÃYçïçïçïçïô$±€¤Ë€½5€˜–€±€¤Ë€g€g€s÷€s÷€±€áÔ€áÔ€ÕŸ ޽51-YÕŸ€¤Ë€Œa€˜–€= j$Ÿ0Ô0Ô$Ÿ= 0Ô0Ô= I>g€ 5 5 5 5+Ä|0Ôg€¤Ë€ô$ÉjY=b ŽYÉj Ž=b1-ô$Ã=bI—áÔ€±€Œa€$Ÿ½5€çïa¨UsI>¤Ë€áÔ€½5€Éj€áÔYô$çïYY½5€˜–€€,€¤Ë€ÕŸ€Œa€±€çï$øÉÀáÔ€€,€$Ÿj$Ÿg€Œa€Œa€±€¤Ë€ÕŸ€Éj€ô$Yô$ô$Y7777j€BUFR&bÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì‚UUUUUU\ç9ÎskZÖµ­kZÖµ­kZÖµ­ï{Þ÷½ï{Þ÷½ï{Þ÷¾sœç9Îsœç9Îsœç9Î÷½ï{Þ÷½ï{Þ÷½ï{ЋÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUTUUUUTð aÃÕŸ€ÕŸ€ÕŸ€±€áÔ€¤Ë€g€UsUs= j$Ÿa¨¤Ë€ÕŸ€½5€±€Œa€g€¤Ë€½5€ÕŸ Ž1-1-çï±1- Žçïçï±€ÕŸ€$Ÿj$ŸÉj€çïY$ø1- ŽçïÉj€Éj€½5€±€Éj€Éj€±€¤Ë€I>I>$Ÿj±²+Ä~±²~7 ‚7 ‚7 €$Ÿ= a¨g€a¨Usa¨€,€€,€g€Us= a¨g€= Us$Ÿa¨ÕŸ€Œa€s÷€g€= j±²~±²|+Ä|+Ä+Ä+Ä|jj$ŸI>Us0Ô$Ÿ7 ú—ss‚7 €0Ô= = $Ÿ 5j$Ÿs÷€g€s÷€a¨I> 5$Ÿa¨0Ô$Ÿ+Ä|7777BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠˆd)Ž…-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUPQUUUUUTUUUUUUPð aú—ƒ+Ä|0ÔI>Usa¨a¨s÷€Us€,€$Ÿ 5jj$ŸI>$Ÿ= a¨çïYÉj€€,€$Ÿa¨$ŸI>jI>I>a¨s÷€Œa€˜–€€,€s÷€g€I>$Ÿ= jj= = Usa¨a¨0Ô$Ÿj$ŸI>= Us0Ô0Ô$Ÿ+Ä~7 ƒ+Ä+Ä|j0Ôj 5+Ä|+Ä+Ä~±²}ú—‚7 ú—€j0Ôg€I>Œa€˜–€Œa€±€Œa€a¨a¨±€ÕŸ€ô$Éj€€,€€,€¤Ë€€,€€,€= I>s÷€0Ôj+Ä|j0Ô0Ô$ŸI>g€g€˜–€I>Usa¨I>= Us±€ÉjYÕŸ€±€a¨$Ÿ= I>0Ô0Ô7 ‚7 €7777BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ЗÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUEUUUUUUUUUUUUUUPUUUUð b±²~±²+Ä|+Ä|±²|jj0ÔjUs= j$ŸjI>±€ÕŸ€¤Ë€Œa€g€€,€g€a¨€,€Œa€¤Ë€Œa€Œa€¤Ë€±€˜–€¤Ë€€,€$Ÿj±²|a¨Œa€Éj€˜–€Œa€¤Ë€Œa€Œa€€,€UsUsUsg€g€Us$Ÿ 5+Ä~7 ‚7 ú—‚±²~7 ‚±²|$ŸUs€,€˜–€s÷€= = 0Ô= 0ÔUsUs€,€Us0Ô0ÔUsUss÷€a¨I>€,€s÷€Us= I>a¨a¨UsUsI>I>0Ô= = I>Us= I>s÷€˜–€I>0Ô+Ä+Ä| 5$Ÿ 5 5$Ÿ 5$Ÿ= I>g€¤Ë€±€€,€˜–€Éj€Éj€7777BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ00 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUU@@UUP@TPUUð `˜–€Œa€Œa€½5€€,€s÷€Œa€s÷€I>$Ÿjj7 ‚±²~±²+Ä| 5 5j$Ÿ$Ÿ$Ÿ$Ÿ= $Ÿ±²}€…€…€…€…€…‚7 ‚7 ƒ+Ä+Ä~7 ‚±²~7 ‚7 ‚±²+Ä|0Ô 5 5±²}ú—‚±²+Ä|$ŸUs˜–€€,€€,€€,€I>= $ŸI>I> 5+Ä}€…€…ú—‚7 ‚7 ‚7 €…‚7 ú—€…€…€…ú—‚±²|+Ä}ú—ú—ú—ú—‚7 ‚7 ú—ú—‚±²~±²}ú—€…‚7 €…‚7 ƒ+Ä|= g€s÷€€,€$Ÿ+Ä~7 ú—‚±²+Ä| 5+Ä}ú—ú—ú—€ 5j$Ÿjs÷€áÔ€áÔ€çï7777BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀH0I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠc¡*[èÊt­®ˆd)Ž„±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUUUUUUUUUUUU@UUUUUUUUUUUUð a$øUÌn6ÕŸ€ÕŸ€¤Ë€˜–€ÉjYa¨jj= $Ÿ+Ä~7 s€Œas€…ƒ+Ä|$Ÿ Žn6UÌ=báÔ€±€€,€¤Ë€ÕŸ€¤Ë€¤Ë€UsI>= Us¤Ë€¤Ë€¤Ë€€,€¤Ë€ô$$øUÌU̘ïI—ÕŸ€Éj€s÷€Œa€I>a¨€,€€,€¤Ë€áÔ€…ÕøYŒa€½5€a¨$Ÿ= g€Œa€˜–€Uss÷€g€ 5+Ä~±²+Ä+Ä|$Ÿ 5$Ÿs÷€ÕŸ$øÉj€±€a¨I>= gÂU̲ô}ÕøÃáÔ€Éj€¤Ë€±€½5€˜–€ÕŸ€Œa€˜–€±€áÔYÉj€¤Ë€UsI>s÷€ÉjbÃ½Ž‚ çIðÉÂ¥}tP€çï$ø=b=bÉj€7777BUFRÖbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!‚LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ\0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹)Ò¶¸!¦:¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðU@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUð \ÃP† Ÿ¼€ @~¥àÀBÁ€…ÃÎ ,Ð øP#`9ûÀ½5bV~¬ü ÓX-P8u ^šÀ±ÃbZˆ L¸ýà@@a¨Ã1†c ?xŒ0ð ^šÀ¤Ë1-ÏÞd?x~ð2Z @@a¨’Õd O€&% I>†GÕŸ«?V~¬üÈàýà8u 3á@s÷€çïŸ &\Æ-P F0Àg€ÃP²Ÿ¼?xO€3á@I>’|ô$d ‰hŒ0 50ÔI>ÃPŸ èH @ ®`O€j$ŸYbZŸ¼ ‰h ®`j*¹€I>0Ôa¨Ið?x 5O€F0Àa¨a¨UÌIð€ 'À 5O€€,€çïÏÞ @“à 'À€ 57777bBUFR&bÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÂUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^sœç8B„!B„!B„"„!B„!B„!CÆ1ŒcÆ1ŒcÆ1Œd!B„!B„!B…)JR”¥)JPŠ2ÇBX×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUTUUTUUð c+Ä|$Ÿ0Ô$Ÿ$Ÿ0Ôj$Ÿ0Ô$ŸUs= = UsŒa€I>$Ÿ$ŸjUsUss÷€±€˜–€s÷€g€UsI>I>= I>jI>s÷€Œa€s÷€a¨s÷€¤Ë€Éj€˜–€Œa€a¨€,€€,€g€s÷€g€a¨s÷€I>g€g€Œa€s÷€s÷€€,€˜–€Œa€g€a¨a¨ÕŸ1-çïÕŸ€Œa€Usa¨€,€Us0Ôs÷€ 5ss€Œa€O€O€Œas€Œa€Ossƒ+Ä~7 ‚7 ‚±²~7 ‚±²~7 ‚7 ú—‚7 ƒ+Ä|0Ôs÷€g€I>j 5 5+Ä~±²~±²| 5= I> 5j+Ä+Ä+Ä+Ä|$Ÿ€,YbI—±€Éjäˀ7777BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUTUUUUAUUUUð `Œa€g€s÷€˜–€g€a¨g€s÷€Usg€Us 5€…s€…€…‚7 €jUsI>I>I>= 0ÔI>I>Usa¨UsŒa€a¨g€Œa€¤Ë€¤Ë€¤Ë€¤Ë€¤Ë€g€€,€g€s÷€±€Éj€g€I>s÷€g€˜–€g€€,€¤Ë€˜–€±€½5€Éj€½5€s÷€ 5+Ä~±²~±²|+Ä|jI>g€˜–€±€Œa€g€g€s÷€s÷€€,€s÷€a¨g€I>I>j+Ä~±²|±²~7 €…€…‚7 ‚7 €j0Ô= 0ÔUs= g€g€Œa€Us$Ÿa¨Éj€I>€,€Œa€s÷€Usú—€Œa€O€O€O€Œa€…‚±²+Ä|ú—€…€Œa‚±²}€…ss‚7 ú—€ 577775BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì,0$’I$’I$’JI$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹[\ÈS RØ×>”é[\ÈS S\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUPUUUUUEUUUUAUUUUUUUUUUUUð `g€s÷€= ±²~7 ‚±²~7 €$Ÿ˜–€±€Éj€½5€¤Ë€g€I>s÷€s÷€UsçïY½5€0ÔI> 5j+Ä+Ä| 5$Ÿ$Ÿ0Ôs÷€˜–€Éj€áÔ€ÕŸ€±€¤Ë€€,€˜–€¤Ë€¤Ë€˜–€Éj€áÔ$øs÷€ 5+Ä| 5+Ä+Ä|Us½5€çïYô$ÕŸ€çï¤Ë€˜–€¤Ë€ÕŸ€½5€˜–€Œa€Œa€áÔ€¤Ë€g€ú—ƒ+Ä| 5ss‚7 €0ÔI>áÔ€a¨ÕŸ€Œa€0Ô0Ô 5j€,€½5=bîb±Y€Éj€½5$ø=b$øYYÉj ŽUÌUÌI—ç€s÷€€,€˜–€Éj€Éj€±€€,˜ï‚±²‚ↂt©‚%Qô}Œºñ€s÷Y±€77775BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌD0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUETUUUQUUUUUUUUUUUUUUUUUUUUUð `Œa€½5€€,€˜–€±€€,€0Ôg€0Ô= I>g€çïâ-½ŽŒºtPYÕŸ€Œa€+Ä| 5$ŸI> 5j+Ä| 5 5j 50Ôg€Œa$øn6½Žn6˜–€s÷‚±²|jj= a¨˜–à Žg€0Ôa¨ 5= 0Ô$øÕŸ€ô$UÌçï€,€a¨¤Ë€±€ÕŸ€€,b$ø=b=b1-ô}¥}‚¥}ÉÃn6½ŽÕø‚Ið±Y˜ïÃUÌb± ŽbI—áÔ€çïÉj€Éj€½5€¤Ë€Œa€g€s÷€Us˜–€a¨0Ô€,€= = Œa€˜–€ÕŸ$øbI— ŽçïÕŸ€ô$½5€˜–€Œa€€,€s÷€¤Ë€€,€a¨UsI>Us€,€˜–€77775BUFRæbÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌX0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUTUUUU@UUUUTUUUUUUUUð `±€½5€Œa€a¨a¨jú—ú—€Œa€…ú—‚7 ‚±²|±€˜–€áÔ€½5€¤Ë€±€ô$Œa€½5€Éj€€,€UsÉj€€,€s÷€= j+Ä~7 €…€+Ä~±²+Ä| 50Ô= = 0Ô$Ÿ0Ôa¨g€Œa€I>Éj€½5€˜–€±€˜–€€,€s÷€0Ô7 €…€Œa€O€O€Œa‚7 ‚7 €…ú—ú—‚7 ‚±²~±²| 5$Ÿ˜–€a¨€,€ô$çïÕŸ€¤Ë€€,€½5€Œa€Us= s÷€s÷€a¨$Ÿ$Ÿ±²}ú—ƒ+Ä+Ä| 50Ôg€Œa€Éj€ô$ô$ÕŸ€Éj€Éj€ÕŸ€Éj€±€˜–€s÷€€,€Œa€Œa€áÔ€çï Ž=bY±UÌ€…Œº€a¨ÕŸI—=bUs77775BUFR&bÿ« fÌ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌUUUUUUUU]ï{Þ÷½ï{Þ÷½ï{Þ÷¾sœç9Îsœç9Îsœç9Î÷½ï{Þ÷½ï{Þ÷½ï{ß{Þ÷½ï{Þ÷½ï{Þ÷½à„!BŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUTUUUUUUUUUUUUUUUUUUUýà`j= s÷€Éj€= g€՟€ÛºÕŸ€±€±€s÷€±€˜–€Ûº½5Ã$øÕŸYÛºÉj€¤Ë€I>}tPtP‚+k€$Ÿ½5€ÕŸ€Us[€Us[€€,€g€UsŒa€˜–€¤Ë€Œa€€,€= j~+k‚+ktP‚¥}|[€¤Ë€¤Ë€˜–€s÷€s÷€s÷€Œa€±€¤Ë€Éj€€,€s÷€g€՟€ÕŸ€Éj€±€¤Ë€˜–€[€Us$Ÿ= Us€,€¤Ë€[€[€g€€,€[€€,€±€¤Ë€˜–€±€ô$=bçïŒa€¤Ë€Œa€½5€±€€,€[€g€s÷€Usg€[€I>$Ÿ 5I>= $Ÿ$ŸI>g€g€ۺ$øh=b ޱ€g€0Ô[€I>s÷€˜–€¤Ë€7777BUFRæbÿ« fÌ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUU@UUU@UAU@UUUU@Tð `±€Œa€˜–€¤Ë€¤Ë€Éj€Éj€ÕŸ€ÕŸ€Éj€±€¤Ë€˜–€€,€UsUs 5ú—€Œas€…ú—€j$Ÿ 5$Ÿ$Ÿa¨˜–€s÷€Us= = 0Ôj 5±²|Œa€Œa€…ú—s€…‚7 €jUs€,€I>a¨I>UsI>$Ÿ 5$Ÿ0Ô0Ô= 5+Ä~7 €…s€Œa€Osú—€ 5g€¤Ë€€,€s÷€0Ôj+Ä+Ä|$Ÿ= $Ÿ 57 ú—ss€Œa€O€Œa€…€= ½5€˜–€½5€˜–€s÷€g€Usg€g€½5€Éj€Éj€áÔ ŽçïŒa€¤Ë€€,€ 5€…€…€…ú—‚±²|Œa€¤Ë€Œa€j0Ô+Ä~±²| 50ÔI>7777 BUFRbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÂLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðB„!B!„!B„!B„!B„!B„!B„!B„!B„!B„!B„ „!B„!B„!`±€±€çïhtPO±ÃO±ÃÉj€¤Ë€s÷ƒ“†ÿ“†üs÷€s÷‚bZbZtÿtü€,€˜–€Œa€Œa€˜–€€,€˜–€˜–Ys÷‚ŸctýèHèHn6ô$€,€Éj€ô$çïô$ۺυ½5€½5€¤Ë€Ï…çï½5€¤Ë€s÷€s÷€Œa€Œa€€,€˜–€€,€Œa€½5€Ï…=btPÉÃ¥$¥$tPI—hO±˜ï½ŽI—ÃO±I—[æ1-[ætPhI—=bà Ž$øO±I—I—1- ŽYçïô$ÃI— ŽÃçï½5€¤Ë€¤Ë€g‚bZtýèHŸcg€½5Y1-$øô$Yô$ÛºÛºÛºô$ Žô$çïÉj€ô$YÏ…½5€Œa€7777÷€BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@40I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUTAUUEUUUð c+Ä}ú—‚7 €¤Ë€çï½5€Éj€¤Ë€Œa€€,€a¨€,€s÷€Œa€¤Ë€±€ô$YÃYY Ž1-=b Žô$áÔ€½5€ÕŸ ŽŒºUÌÃô$çïô$áÔ€ô$±Y½Ž‚%QbZV%%Q çÕøn6$øYáÔ€½5€½5€ÉjYn6€…$øÉj€±€˜–€a¨Us¤Ë€˜–â-‚±²‚™H‚bZ=» çâ-tP=bYáÔÃn6îb‚½çUÌÉj€˜–€= Us$Ÿ$ŸI>Us€,€g€ 5 5 5 5±²|±²~±²|I>s÷€s÷€Us= 5 5+Ä| 5j$ŸI>0Ô$ŸI>I>j+Ä}ú—‚7 ƒ+Ä| 5I>= 57777ÛBUFRæbÿ« fÌ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@H0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUPUQU@UUUPUTUPDUUQUUUð `jj+Ä| 5$Ÿ$Ÿ+Ä~±²~7 ú—ú—ú—ú—ss‚±²|= Éj€€,€g€a¨j+Ä|j0Ôjj+Ä~±²+Ä+Ä~±²}s‚7 ƒ+Ä~7 ‚±²~±²+Ä|= = $Ÿjjj$Ÿ$Ÿ0Ô= $Ÿ0Ôjj+Ä~7 ‚±²~±²~±²~7 €j€,€¤Ë€s÷€= j0Ô+Ä~±²| 5a¨I>g€0ÔI>0Ôj7 €…‚7 ú—ú—ú—ƒ+Ä|0Ô= $Ÿ±²| 5±²~7 ú—‚±²+Ä| 5$Ÿj= = = 5j 5+Ä|€,€çïYYçï±€s÷€g€Œa€½5€g€€,€7777ÛBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì@\0I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹N•µÀ …1Ж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUPUUUUUUUUUUTUUUUUUUUUUð `g€Œa€áÔà Ž$øçï$øÃÉj€±€Œa€±Y€…±Y€çïáÔ€áÔY=b=bŒºI—1-Éj€¤Ë€€,€$Ÿ$Ÿ+Ä~±²~±²|±€ô$ÃçïÉj€ÕŸ€ÕŸ€ÕŸ€ÕŸ€çï Ž=bn6€…tPtPI—$ø Žô$YÉj€±€˜–€˜–€±€áÔ€ÕŸ€˜–€˜–€€,€Œa€€,€€,€˜–€˜–€˜–€½5€Œa€Œa€I>$Ÿjjú—‚7 €jg€¤Ë€ÕŸ€çïÉj€€,€€,€˜–€Œa€€,€s÷€˜–€˜–€s÷€Éj$ø½5€±€a¨0ÔUs 5$ŸI>g€Œa€s÷€s÷€UsUsUsa¨s÷€Œa€Œa€g€˜–€±€a¨= 0Ô±²}€…‚±²}ú—€7777ÛBUFR&bÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌBUUUUUUUUUUUUUUUUUUUU^sœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½èB„!B„!B„!„!B„!B„!BÆ1ŒcÆ0Š2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@UUUUUUUUUUUUUUUUUUUUUUUUTUð a€…s€Œa‚7 ‚±²~±²|+Ä+Ä~±²|UsUs€,€I> 5j$Ÿ+Ä+Ä}€…ú—‚7 € 5ÕŸ€±Ãô$ÕŸ€¤Ë€Œa€Œa€¤Ë€Œa€ÕŸ€ô$1-=bÃYçïçï½5€€,€g€€,€s÷€Œa€¤Ë€ÕŸ€ô$ÕŸ€Éj€±€€,€Œa€Œa€çïô$çïô$1-=bbUÌ$ø$øçïçïçï±€˜–€Œa€±¥$‚bZI—ÕŸ€¤Ë€áÔ€ô$áÔUÌŒº¥$±Y€…I—I— ŽáÔ€ÕŸ€¤Ë€˜–€Œa€Œa€½5€¤Ë€Éj€¤Ë€½5€a¨a¨g€s÷€Œa€s÷€Uss÷€s÷€s÷€áÔ€Éj€I>0Ô 5+Ä~±²|$Ÿs÷€±€áÔ€Éj€g€Us7777BUFR¶bÿ« fÌ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$¶Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBVƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð \ÃPô$èHÈ™p8u ^šÀ˜–I—ÄÄ´|(“àj 5ja¨d –¨¦° LK@ŒaÃ1†ˆ L¸™p/M`€,YÏÞÐ?x  &% 3á@I>çïŸ Ÿ¼  &% ReÀ˜–YbZc |( ®`ýàjÏÁYÏÞ‡Ré¬ ÓX /M`s÷€ÕŸ«?28ÆŒ0'¬@= jÏÀáÔ1-“.¬üÈà&% ReÀ’|$øIð28dpÈà„€5gàjÏÀ½5I—Äé¬ Yø:C#€z½5ÃÄdpO€:2Z pê@՟é‡R¤ –¨Œ0\Àj0ÔÃPôÖ?xýà= jÏÀ±I—V~?xB@ C#€’|ô$7777Ô€BUFR¶bÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€$0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]’Õc ?x³ð@@€,€ô$èHV~ÆÖ 6+0X€@dµAUÌè¡Ä´Æ™p1—PUs·€…‚衈 ëO€#`F0ÀŒa€áÔb‡Rdp '¬@ReÀ€,1-1†28 O€&% LK@†G Ž’ÕôÖ&\|(¡ B@j 5jÃP«˜ L¸¦°2Z ^šÀ¤ËbĈ -P&% F0Àa¨I>’|ÃPIð† B@$Ÿg€’|ÃP$ø @“à€j$Ÿa¨ÃP† “à 'À X€@˜–1-ÏÞc |( ®`ð *¹€I>zŸ &\ Yø-P)2àX€@çï«?%ª¤ ÓX /M`ReÀ±bV~d @“à 'Àj7777Ô€BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€<0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUAUUð `$ŸŒa€±€çïçï±€s÷€Œa€a¨€,€a¨Œa€±€½5€ô$ô$çïÉj€s÷€$Ÿ+Ä+Ä+Ä~7 € 50ÔÕŸYÕŸ€˜–€¤Ë€Œa€½5€˜–€¤Ë€±€ÕŸn6UÌ1-UÌÃY$ø ŽáÔ€ÕŸ€ÕŸ€áÔ€çï Žn6ŒºŒºtP1-ÕŸ€áÔ€ô$Y1-€…UÌ=b Žô$çïÉj€½5€$Ÿj$Ÿ 5s÷€ÕŸ€áÔ€Éj€çï¤Ë€Œa€¤Ë€çïÃI—ÕŸ€±€½5€½5€½5€¤Ë€j7 € 5 5 50ÔŒa€¤Ë€Œa€g€g€Usa¨Œa€Œa€±€¤Ë€ÕŸYáÔ€½5€Œa€€,€Us7 €…€I>g€g€s÷€Œa€Œa€Œa€Œa€Œa€7777÷€BUFRæbÿ« fÌ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€P0$’I$’I$’II$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶àŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜è[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUýà`Œa€s÷€[€¤Ë€s÷€g€Œa€[€= $Ÿj 5+k€ú>tPtPƒ|I>±€ô$ÛºÉj€Œa€Œa€˜–€±€Œa€Éj1-ŒºtPbUÌÃYçïÉj€Œa€s÷€g€Œa€½5€çïÕŸ€ÕŸ€ÕŸ€Éj€Éj€ô$ ŽY$ø$øô$çïYçï½5€s÷€±€Éj€ÛºÛºÕŸ€ÕŸ€±€¤Ë€±€Éj€çïô$1-UÌbtPbÉj€±€±€ÕŸ€ô$ô$YYÛºÉj€˜–€±€½5€½5€½5€±€çïÛºô$YI—hh¥$â-¥$UÌ€,€I>[€Us$Ÿ 5= ˜–€ô$ô$1-Y¤Ë€ÕŸY=bç€s÷€0ÔjUs0Ô0Ô7777÷€BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì€h0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUPUUUU@UUUEUUUUUUUUUUPUð `a¨Us˜–€s÷€Œa€Œa€Éj€±€s÷€a¨Uss÷€Usg€a¨çïÃáÔ ŽáÔ€½5€gƒ+Ä~7 ‚7 s€O€Œa€…‚±²+Ä|$Ÿ$Ÿj$Ÿj 50ÔI>0ÔUsÕŸ€s÷€0Ô±²}€…s€Œaƒ+Ä|I>g€g€€,€s÷€g€UsI>s÷€½5€€,€Us$Ÿjú—€ 5+Ä|O€O€Œa€Œaú—€s÷ ޽5€¤Ë€˜–€¤Ë€Œa€€,€˜–€ô$ô$ ŽI—$øô$áÔ€g€g€g€՟ ŽÉj€˜–€áÔYÃY½5€½5€Éj€±€çï ŽY1-=b=bÃçï¤Ë€Usa¨= +Ä+Ä|jUsÉj€ÕŸ€7777÷€BUFR&bÿ« fÌ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì‚UUUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷¼„!B„!B„!B!B„!B„!B„1ŒcÆ1ŒcÆ1ŒcÆB„!B„!@Š•-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUUUUTUUUUUPUUð `çïÉj€ô$±€áÔ€áÔ€ÕŸ€çïÕŸ€¤Ë€˜–€= j±²}ú—s€…s€Œas‚7 €UsáÔYô$ ޽5€s÷€˜–€½5€çïÃI— ŽÕŸ€g€= $Ÿ= 7 €…s€Œa€Œa‚7 €j= $Ÿ$Ÿ$Ÿ= = UsUss÷€˜–€s÷€˜–€= = s÷€0Ô+Ä~7 ƒ+Ä}ú—ss€Œa€…s‚7 ‚7 ‚7 ‚±²~±²+Ä+Ä| 5UsUsg€0Ô$Ÿ$ŸI>jú—s€O€…‚±²|$ŸI>Éj€¤Ë€a¨I>g€s÷€Œa€˜–€áÔ€½5€¤Ë€g€g€0Ô$Ÿ+Ä}ú—ú—s€Œa€O€Œa€…€ja¨g€a¨I>Uss÷€€,€çïÃ7777BUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðU@UUUDAUUUUUUUUUUUUUUUUUUUUUUUð aYç€I>+Ä~7 ú—€…€Œasú—ƒ+Ä|a¨˜–€a¨Us0Ô0Ôa¨a¨g€Éj€ÕŸ€¤Ë€±€a¨¤Ë€= +Ä| 5€…€+Ä}ú—€$Ÿ€,1-UÌ=báÔ€Éj€±€˜–€áÔ$ø=b1-Ã$øY ŽÃYô$áÔ€ô$Éj€Éj€¤Ë€½5€áÔ$ø ŽÉj€ÕŸ€¤Ë€ÕŸYY ŽI—I—Ã$ø1- ŽáÔ€çïs÷€s÷€€,€= g€˜–€Œa€s÷€¤Ë€Œa€g€g€g€½5€çï Ž$ø=btPI—¥$±Yb=bÃYÉj€Éj€ÕŸ€Éj€Éj€½5€¤Ë€ÕŸ€áÔ€Éj€áÔ€ÕŸ$øtPn6˜ïUÌÃ$ø ŽYô$ô$7777ŸBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ,0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTUUUUUUUUUUUUUUUUUUUUUUUUUð `ô$ô$çïYYÃY=bbI—ÕŸ Ž$ø$ø1-I—$øÃ Žçï½5€Us±²~7 ú—s€…€jUsŒa€€,€Œa€€,€s÷€s÷€€,€s÷€Éj Ž ŽáÔ€±1-$øáÔ€€,€0ÔjUs˜–€ÉjÃÃ=bUÌYÃ$ø=bn6Œº¥$¥$˜ï˜ïÕø½Ž±Yb1-1-=b=bI—$øI—$ø=bÃ$ø Ž$øI—UÌ=b$ø1-Yô$Yçïô$çïáÔ€áÔ€áÔ€ô$YYY$øçïY=bbUÌ€…€…¥$ÉñY¥$Œº˜ïŒºtPn6I—=b$ø ŽÃ ŽÃ Ž Ž7777ŸBUFRæbÿ« fÌ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀ@0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¦5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUTUUUUTUUUUð `çï Žô$ô$ô$áÔYô$ô$Éj€ô$ÕŸ€áÔ€ÕŸ€±€Œa€€,€a¨0Ô0Ô= jg€g€g€Usa¨Œa€¤Ë€˜–€€,€g€g€a¨€,€Œa€˜–€g€= 0Ô+Ä| 50Ô˜–$øbUÌI—I—1-1-1-1-UÌbtPâ-Œº˜ï€…ÃYYô$çï½5€½5 Žç€€,€$Ÿa¨UsŒa€Éj$ø$øÃÕŸ€½5€¤Ë€Œa€Us 5±²~±²+Ä| 5j$Ÿa¨ÕŸÃô$çïçïçïô$ Ž ŽçïáÔ€ô$Éj€¤Ë€a¨$Ÿ 5+Ä| 5Us½5€Éj€ÕŸ€ô$1-$øYô$1- ŽUÌŒº±Yn67777ŸBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÀT0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUð aUÌbUÌb=b ŽÃäˀg€€,€½5YçïçïYÉj€áÔ€áÔ ŽÃ=b=bà Ž$øçïáÔ€½5€Œa€s÷€€,€€,€˜–€˜–€±€±€Éj€Éj€±€¤Ë€¤Ë€s÷€Œa€s÷€ÕŸYçï¤Ë€ÕŸ€€,€j$Ÿ$Ÿ$Ÿ$Ÿ$Ÿ 5˜–€¤Ë€¤Ë€½5€ÕŸ€ÕŸ€ÕŸ€˜–€I>I>a¨I>Uss÷€Éj€€,€s÷€s÷€= I>$ŸI>½5€˜–€Éj ŽÃ Ž ŽÕŸ€ÕŸ€áÔ€áÔ€ÕŸ€½5€˜–€Us0Ô$Ÿ 50Ô+Ä}ú—€j 50ÔŒa€ô$à ŽYçïY±€ô$I—n6bn6=b1-ÃÃÃÃÃô$7777ŸBUFR&bÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌÂUUUUUUUU]kZÖµ­kZÖµ­kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½èB„!BŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUAUUUUAUUUUUUUU@Uð `Éj€Éj€±€çïY=b1-ÃáÔ€½5€˜–€ô$=b1-$øÃYÃ$ø1-Yà Žô$áÔ€ÕŸ€½5€áÔI—ŒºÕøîbbUÌb½Žô} çÕøUÌ ŽYáÔ€ÕŸ€¤Ë€0Ô$Ÿ 5 5ú—‚±²|a¨ÉjYY±€áÔYô$¤Ë€±€Éj ŽÕŸ€˜–€€,€= s÷€+Ä~±²|Œa€O€Œaú—ƒ+Ä|Usg€s÷€€,€€,€Œa€ÕŸ€ÕŸ1-$ø$ø1-=bÃ=bYYô$ô$Œa€a¨0ÔI>= I>UsI>a¨s÷€a¨$Ÿ0Ô$Ÿ= I>j+Ä~7 €…€…‚7 ssss€…‚7 €a¨½5€±€Œa€7777BUFRæbÿ« fÌ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì0’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBVƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUU@UUUUUUUUUUUUUUUUUUUUUð `€,€€,€€,€½5€Éj€áÔYÃb=bô$çïáÔ€a¨g€Uss€Os€jUs€,€s÷€I>= Usg€s÷€½5€Us$Ÿ±²|Œas€Os€…€Œaú—€= €,€¤ËYçïô$˜–€€,€€,€Éj=bUÌ=bI—$øô$ ŽÃ ŽÉj€ÕŸ€ÕŸ€±€±€˜–€±€ÉjÃ$øtPîb‚V%ↂ¥}‚Iðô}Õøâ-¥$â-‚t©‚ çU̽5€Éj€Éj€½5€Éj€½5€áÔYÃ$øYI—UÌI—ÃÃÃ=bÃô$çïáÔ€ÕŸ€ÕŸ€Éj€ÕŸ€Éj€Éj€½5€½5€½5€ÕŸ€ÕŸ€áÔ ŽáÔ$ø1-˜ï±YU̱YUÌÃ7777ŸBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUTUUUUUUUUUð a$øbbñ€˜–€s÷€€,€€,€€,€s÷€g€a¨= g€a¨s÷€€,€Œa€Œa€Œa€Œa€Œa€½5€ÕŸ€Éj€ÕŸ€ÕŸ€áÔYçïô$ô$çïÉj€Éj€±€½5€½5€ÕŸ€ÕŸ€çïçïçïçïô$ Ž1-I—=b1-ÕŸ€±€±€˜–€Œa€Éj€çïÉj€¤Ë€a¨UsI>I>= a¨a¨g€g€€,€€,€g€I>$Ÿ 5 5j 5+Ä+Ä|= Uss÷€s÷€s÷€g€€,€Usa¨a¨a¨g€g€a¨Usg€a¨Us$Ÿ±²|7 s€Os€$ŸUsa¨a¨I>I>Uss÷€¤Ë€½5€áÔ€Éj€Éj€½5€½5€Éj€±€½5€½5€±€Usa¨7777ŸBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì40$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I%¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƾ”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUTUUUUUUUUUUUUUUUUUUUð `$Ÿ$ŸUs¤Ë€ô$Yô$çïçïÉj€çï=bUÌ=b1-=b1-1-UÌI—=bUÌô$çïáÔ€áÔ Ž Ž ŽYYYô$çïáÔYáÔ€áÔ€¤Ë€€,€½5€€,€0Ôj0Ô0Ô0Ô+Ä}€…€Œa€…€±€Usg€˜–€¤Ë€¤Ë€±Y1- ŽYà ŽçïáÔ€Éj€±€½5€a¨g€˜–€g€€,€˜–ÃçïçïÉj€ÕŸ€Éj€áÔ€½5€ÕŸ€áÔ€áÔ€çïYYçï½5€çï½5€˜–€±€±€ÕŸ Ž$ø$øÃáÔ€Éj€ÕŸ€áÔ€±€¤Ë€±€¤Ë€±€±€±€±€Éj€½5€½5€˜–€€,€s÷€a¨s÷€Œa€˜–€¤Ë€±€½5€Éj€7777ŸBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌH0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUPUUUUTUUUUUUUUð `áÔ ŽYYÕŸ€áÔ€ÕŸ€½5€Éj€¤Ë€¤Ë€˜–€Œa€Œa€€,€€,€€,€¤Ë€ÕŸ€áÔ€¤Ë€g€Uss÷€g€s÷€€,€Œa€˜–€¤Ë€˜–€˜–€€,€s÷€g€€,€˜–€€,€€,€s÷€€,€Œa€¤Ë€˜–€Œa€g€a¨g€Usg€g€a¨a¨a¨I>0Ô$Ÿ 5+Ä}€…s€Œas‚±²| 5Us±€½5€±€Us+Ä| 5ja¨g€g€a¨g€a¨I>0Ô$Ÿjj+Ä+Ä|jI>0ÔI>g€s÷€s÷€a¨a¨s÷€Œa€g€s÷€g€Uss÷€Usj7 ‚±²~±²+Ä|j= UsŒa ŽçïÕŸ€½5€€,€s÷€s÷€¤Ë€¤Ë€s÷€˜–€áÔ€7777ŸBUFRæbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ì\0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUUUUUUUUUPUUUUUUUUUUUUUUUUUUð `ÕŸ€˜–€7 ‚7 ú—ú—€Œa‚±²| 5j= I>= $Ÿj 5 5I>s÷€½5€½5€½5€¤Ë€I>= g€Us$Ÿa¨˜–€I>= €,€¤Ë€¤Ë€Œa€¤Ë€¤Ë€Œa€Us= = g€˜–€s÷€g€$Ÿ˜–€½5€áÔ€±€½5€gÂú—‚±²|g€¤Ë€çïáÔ€çïs÷€$ŸUsg€Œa€±€Éj€ÕŸ€½5€Éj€½5€±€Éj€½5€¤Ë€g€s÷€g€Usa¨s÷€€,€˜–€±€½5YYÃ Ž Ž=bI—=b1-YÃ$øÃYYáÔ€Éj€g€I>a¨€,€Us€,€€,€g€g€Œa€˜–€± ŽYô$ÕŸ€çïçïáÔ€ÕŸ€±€Éj€½5€±€½5€7777ŸBUFRfbÿ« fÌ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÌUUUUUUUUUUUUUUTD»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»^sœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷¾÷½ï{Þ÷½ï{Þ÷½ïx„!B„!B„!B!B„!B„ ŠS RØ×>”é[\ÈS RØ×>”é[\" c¡*[çÂ2+kˆd)Ž„©lkŸÊt­®ˆd)Ž„©sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUAUUUUPUUUUUPUUUUUUUUUUUUUð `½5€ÕŸ€áÔ€ô$áÔ€áÔ€çïÕŸ Ž ŽÃ$ø Žô$ÕŸ€Éj€½5€¤Ë€Œa€I> 5±²~7 €jŒa€ô$1-YYÉj€¤Ë€½5€Éj€Éj€áÔ€ÕŸ€½5€s÷€I>Us0Ô+Ä~±²~±²}ú—€…ú—€0ÔÕŸbY ޽5€g€˜–€±€$Ÿg€½5€çïÃÉj€Œa€jI>¤Ë€g€ 5+Ä}ú—‚7 € 5= = I>I>I>€,€€,€Œa€±€Œa€0Ô±€½5€ÕŸ=b1-I—$ø Ž ŽhhI—[æ[æ=bI—UÌh€…€…€…I—Ûº½5€ÕŸ€ÛºÛºçï¤Ë€±€ÕŸ€ô$ô$$øUÌ1-I—Ã1-Yô$Y±€7777BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@ 0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …2¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@UUUTUUUUUUUUUPUUUUDUUUUPð `ç€g€Us0Ô$ŸI>j 57 €…€Œa€…‚±²|$Ÿ$ŸI>Us[€Us= €,€s÷€s÷€g€I>Us0Ô$Ÿ= 5+Ä~7 ú—€…sƒ+Ä|Us$Ÿ$ŸI>I>[€g€s÷€€,€±€½5€Éj€½5 ŽÛº½5€ÕŸ€¤Ë€€,€€,€Œa€€,€˜–€½5€ô$$ø=bÃ=b1-ÃI—tP[æUÌçï¤Ë€˜–€¤Ë€I>= +Ä~±²~±²|jI>Œa€¤Ë€ÛºÕŸ€çï ŽÃ$øô$±YçïY¤Ë ŽÕŸƒ+Ä| 5±²+Ä|j$Ÿ¤Ë€Éj€Éj€Éj€½5€ÛºÉj€±€˜–€ÕŸY$øÃô$ÕŸ€ÛºŒa€7 ‚7 €7777=bBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@$0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð a€…€…ú—€0Ԥˀ՟€¤Ë€¤Ë€Ûº€,€s÷€¤Ë€¤Ë€Éj€ÕŸ€ÛºY$øYÉj€±€±€±€±€±€ÕŸ€ÛºÛº±€çïçïg€€,€[€g€˜–€½5€½5€Éj€½5€Éj€ÕŸ€ÕŸ€ÛºçïÛºÛºÕŸ€Éj€±€±€±€¤Ë€½5€½5€Éj€Ûºô$YYÃÃYçïÕŸ€Éj€±€Œa€˜–€s÷€g€[€[€I>$ŸI>[€Us[€g€s÷€g€g€Œa€s÷€Œa€g€Œa€[€Us[€I>= $Ÿ 5±²~7 ‚7 € 5$Ÿ[€€,€s÷€Œa€¤Ë€±€Éj Ž[æ=bYÃ1-Y Ž$ø Žô$ÛºY½5€ÉjY1-I—hŒº€7777=bBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@80’I$’I$’I)$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠ¥±®„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¸FS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUTUUUU a˜ïŒº½Ž±YŒº½Ž¥$‚²ô}±Y¥$±Y¥$€…€…[æ[æ[æ[æC|€…‚²%Qht‚P [æÃ ŽY$øô$çï ŽÃ$øÃ Ž Ž ŽÛºÏ…Ï…YY1-1-€…hO±‚Ið‚‚1†ÜÉÃ¥$tP[æC|$øÃ Žçïçïçïô$ÛºçïçïÛºÃP Žô$Y1-1-1-Ã1- Žô$½5€s÷€s÷€0Ô 50Ô0ÔOX€ÛºYçïÛºÃPÃP¤Ë€Œa€˜–€çï½5€g€= = 0Ô 5 5™H}hhƒZ|$Ÿj$Ÿj$ŸC#€C#€C#€= s÷€s÷€g€[€OX€€,€s÷€0Ô7777=bBUFR¶bÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@L0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð \I>$øÃP ®`O€3á@ô$·Íoš L¸™p+|ÐLK@ŒaI—·Í&\ ß4\À&% I>€,€ô$ÏÞnèé¬ L¸¦°2Z jÏÁÃzÄ“à 'À~ð ®`ã`9ûÀ[€çï1†c L¸™p 9ûÀ€,bnè?xB@ýà= zY1†dÈB@#`C#€€,$ø1†d?x Yøw@5gàs÷YÏÞnèÝÐ ÓX-P/M`X€@Ûºc Æ$ŸOX€˜–=b1†c ëÐýà@@s÷ Ž·tôÖ¡ » -P6î€s÷€çïÏÞÄ´dp~ð!‘À= †GY nÈO€.Š`!`˜–I—·Í“àdp~ðw@9ûÀs÷Y7777$BUFR&bÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍBUUUUUUUUUU\cÆ1ŒcÆ1Œg9Îsœç9Îsœç9ÎsœëZÖµ­kZÖµ­kZÖµ­o{Þ÷½ï~÷½ï{ÞðB„!B„!BŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUð a=bèH¥}‚â†ÉÃ1-çïY ŽUÌ€…tP[ætPtPtP¥$tP=b1-[æh[ætP€…Õø‚Iðht1-1-UÌ Ž ŽÃ¥$¥$ÉÂIð ç±Yh±Y½Ž=bô$$øtP˜ïâ-‚² ç²½ŽŒºh˜ïh1-çï½5€ÕŸ€çïÕŸ€ÕŸ€= Uss÷€€,€¤Ë€ÛºÃ½Ž‚™Hƒ @g€˜–€Éj€Éj€Éj€ÕŸ€Éj€Éj€Éj€g€j+Ä}ú—ú—‚7 ƒ+Ä|jUs€,€¤Ë€±€±€Éj€çïô$çïYçïÛº½5€Éj€çïÛºÕŸ€ÕŸ€¤Ë€±€±€±€Éj€±€€,€Œa€¤Ë€¤Ë€s÷€Œa€g€€,€¤Ë€çïÃ7777Ÿ€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUDUUUUUð a1-I—=b$øô$Ûºô$ô$Ûºô$YÃUÌ¥$€…€çïÛºçïÕŸ€çïY$ø$øY½5€˜–€Œa€Œa€s÷€0Ôjj0Ô$Ÿ= s÷€¤Ë€˜–€¤Ë€€,€€,€€,€±€çï ŽI—[æÃÃÃô$¤Ë€ÕŸ€ô$Éj€çïÛºÛº½5 Ž1-Ã1-[æYÕŸ€½5€Ûº=b€…htPhUÌUÌYÕŸ€±€Œa€= = jŒa€ô$ô$Ûº˜–€Œa€s÷€s÷€˜–€çï ŽÛº€,€Œa€¤Ë€€,€I>0Ô+Ä|+Ä+Ä| 5jg€s÷€½5$øÃÃô$ÕŸ€çïÕŸ1-¥$ÉÃÉÃ½Ž½Ž¥$tP€…€…€…€7777Ÿ€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€ 0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUPUUUTUUUUUUTUUUUPUð a1- Žô$ÛºÛºYÛºÕŸ€ç€€,€UsŒa€çï=b1-ô$ô$Ûº¤Ë€Œa€€,€s÷€I>$Ÿ 5ú—‚±²+Ä|+Ä|$ŸI>¤Ë€s÷€[€€,€¤Ë€Éj€±€g€g€= 5 57 ƒ+Ä~±²+Ä| 5[€˜–€Œa€¤Ë€g€$ŸjjI>I>Œa€$Ÿ+Ä~±²| 5+Ä+Ä~±²~7 €…‚7 €€,€ÉjYçï¤Ë€Éj€ÛºI—ÃY½5€ÛºY½5€[€$Ÿ+Ä~7 ‚7 ‚7 ƒ+Ä|jg€±€Ûº±€±€½5€±€±€ÕŸ€±€ÛºÕŸ€˜–€g€Œa€j 5+Ä~7 ƒ+Ä|$Ÿ±²}ú—‚±²|= Us€,€[€[€= = 7777Ÿ€BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€40$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUDUUUUUUUUUPEUUUUð `0Ô0ÔI>Us¤Ë€s÷€s÷€[€Œa€çïÕŸ€s÷€UsUss÷€ÕŸY1-€…tP¥$Œº[æhI—I—h½Ž½ŽÕø€…I—1-ô$½5€Éj ŽÛº€,€$ŸjI>g€¤Ë€½5€˜–€çï±€s÷€˜–€±1-[æÕøtPYY±€€,€€,€s÷€0Ôj 5+Ä|±²|j0Ô$Ÿ= $Ÿ0ÔI>I>I>[€s÷€g€I>0ÔI>jI>= [€s÷€Us¤Ë1-[æ ŽÛºô$YçïÕŸ€Éj€½5€Éj€˜–€g€UsI>$Ÿ+Ä~7 €0Ô±²|jjI>Us˜–€¤Ë€s÷€g€g€I>j$Ÿ[€s÷€¤Ë€[€Œa€[€7777Ÿ€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€H0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTUUUPUUUUUUUUUUPUUUPð `€,€s÷€g€€,€= $Ÿ$Ÿ= g€Œa€çïô$Ûº±€˜–€¤Ë€˜–€s÷€€,€€,€Œa€= +Ä~±²}ú—‚7 €…€…€…€…‚±²~±²| 5±€ç€s÷€= UsI>I>Usg€Œa€g€I>0Ô$Ÿ 5+Ä~±²~7 €…€…€…‚7 €jUs±€Éj€UsUs€,€$Ÿg€€,€Éj ŽÛºŒºhY±€˜–€UsUs$Ÿ[€I>I>Us[€g€Us€,€s÷€€,€€,€s÷€€,€€,€±€ÕŸ€˜–€s÷€€,€UsUs0Ôj 5+Ä~±²+Ä|j$Ÿj 5 5 50Ô0Ô0ÔUsI>= 0Ô$Ÿjj+Ä}€…ú—ú—ú—‚7 €7777Ÿ€BUFR&bÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í‚UUU[Þ÷½ï{Þ÷½ï{ÞøÆ1ŒcÆ1ŒcÆ1ŒcÎsœç9Îsœç9ÎsœçZÖµ­kZÖµ­kZÖµ­k{Þ÷½ï{Þ÷½ï{Þ÷½ìŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×Â2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUTUUUPUUUUUUUUUUUUUð c+Ä|0Ô€,€ÛºŒa€¤Ë€s÷€[€Us[€Œa€çïô$½5€$Ÿ 5+Ä|±²~7 ú—€…ssú—ƒ+Ä|Us€,€= = $Ÿj 50ÔUs±Ã€…€Éj€g€s÷€= 57 ú—ú—€…ú—‚±²|0Ô±€çïg€[€= 0ÔUs½5€ÕŸ€±€s÷€€,€g€Us[€$Ÿ+Ä+Ä+Ä~±²|jI>¤Ë¥$h=b[æ$ø ޽5€ô$=b1-tPUÌYÕŸ€€,€0ÔI>$Ÿ±²~7 ‚7 € 5s÷€ÕŸ€ÕŸ€ÕŸ€ô$Éj€¤Ë€g€¤Ë€±€çïUÌô$$ø[æh ŽI—±€Œa€Œa€˜–€UsUs±€Éj€½5€¤Ë€Œa€[€[€Us7777Ÿ€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUUUUUUUUUUUUUUð `UsUsUsŒa€Éj€€,€[€0Ô= $Ÿ±²~7 ú—sss€…ƒ+Ä~±²+Ä+Ä~±²|+Ä~7 ƒ+Ä| 5$Ÿs÷€€,€s÷€€,$ø ŽÃŒa€Œa€Œa€Œa€˜–=b±Yâ-h=b=b1-à Ž$øI—$ø1-Œº=bÃÉj€ô$ô$Éj€s÷€˜–€[€Usg€¤Ë€ÕŸ€çïçïYô$Éj€ÛºYçïÛºÕŸ€Éj€Éj€Éj€ÛºÕŸ€Éj€çïÛºÛºÛº½5€˜–€ÛºYÉj€˜–€Œa€±€ÛºÕŸ€ÕŸ=bI—1-Éj€€,€[€çïY¤Ë€€,€s÷€€,€¤Ë€ÕŸUÌ%Q1†[æ€g€±€[€€,€s÷€[€g€ô$ô$ÛºŒa€s÷€7777øBUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶Û¶Û`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUQUUUUUUUUUUUUVUUUUUð `¤ËY1-hUÌÛºs÷€Œa€ÕŸ1-hUÌUÌ1-Yô$ô$çïçïô$ÕŸ€¤Ë€Éj€ÕŸ€ÕŸ€½5€½5€˜–€±€g€g€˜–€€,€I>€,€¤Ë€€,€s÷€j0Ô 5= €,€€,€g€I>$Ÿj 5$Ÿj±²|0ÔI>0ÔI>[€= Us0ÔI>Uss÷€Ûº ŽY Ž$øUÌhtP€…[æI—Ø–€ÛºtP˜ï[æ=b[æ[ætP€…½Ž±Y‚ ç€Þ‚½ç‚ↂ™H‚ht‚%Q½Ž€…I—1-UÌ1-¥$‚€ÞƒhÍ€+UÂhtPÉÂht‚ôÖÊ‚è¡=»˜ï€…UÌh=bUÌUÌ€…¥$½Ž±Y€7777øBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ00I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUEUUUUUUUUUU@UUUUUð aèHÕøÉÃô}±YY¤Ë€Éj€ÉjYYhŒºŒºtP±Y€…=bÃÉj€€,€Usg€ÉjÃ=bçïô$˜–€g€€,€g€˜–€½5€½5€¤Ë€½5€˜–€˜–€±€g€0Ôj 5+Ä|€,€Éj$øÛºÕŸ€½5Y½5€˜–€Éj$øçïÕŸ$øô$YÃñ€Œa€ 57 ‚7 ú—€ 5$Ÿ0Ô= 0Ô0Ô[€s÷€s÷€= [€¤Ë€Ûº˜–€¤Ë€€,€[€UsUs±€[€ 5ú—ƒ+Ä+Ä}ú—€…ú—‚±²~±²+Ä+Ä~±²+Ä|0Ô[€[€UsUs$Ÿ$Ÿjj 5I>g€±€ÕŸÃÛºÛºçïÕŸ€ÕŸ€ÕŸ€7777øBUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀD0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUTUUUUUUUUUUUUUUUUUUUUUýà`[€¤Ë€ô$ÉjÃ$øÏ…çïçï½5€= j~¥}|[€€,€Ï…Ûº˜–€€,€g€j0ÔOX€€,€s÷€I>$Ÿjîbîb€€,îb€€,€€tP€j€,€˜–€OX€[€€,€€,€€,€¤Ë€Œa€ô$Éj€Éj€¤Ë€[€s÷€±€= I>[€= $Ÿj= ¤Ë€Éj€Ûº±€¤Ë€€,€€,€€,€¤Ë€€,€¤Ë€çïçïÃÏ…Ï…0Ô|0Ô˜–€€,€$ŸOX€Œa€ô$ô$½5€½5€OX€I>g€s÷€½5€ô$Ø–€Ûºô$Ï…= = OX€¤Ë€ÛºÛº½5€½5€çïY1-Ï…˜–€= 0Ô[€[€€,€g€Œa€ÛºYô$Ûº¤Ë€[€7777øBUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀX0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶í¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUð `[€I>Usj±²~7 ú—‚±²|j$ŸI>[€s÷€UsI>[€±€±€±€Éj€Éj€Éj€ÕŸ€ÕŸ€ÕŸ€€,€€,€±=b1-$ø=bI—I—I—I—Ã1-=b[æ[æI—[ætP ŽçïÛºŒa€Œa€Œa€¤Ë€±€Œa€ô$I—€…[æ[æ$øçïô$çïY[挺[æ[æI—$øY€,€= I>0Ô$ŸI>UsÉj€¤Ë€s÷€€,€s÷€€,€s÷€g€g€g€[€I>±$øŒa€[€s÷€= €,€g€0ÔjŒaY Ž ŽÉj€s÷€[€Œa€[€I>I>Usg€€,€0Ôj$Ÿ 57 ƒ+Ä~±²}ú—ƒ+Ä~7 €0Ô= Us7777øBUFR&bÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÂUUUUUUUUUU\cÆ1ŒcÆ1œç9Îsœç9Îsœç9Îs­kZÖµ­kZÖµ­kZÖµ½ï{Þ÷½ï{Þ÷½ï{ÞöB„!B„!B„!„!B„ Š•-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µå:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUPUUUUU@ð `0Ô$ŸI>0Ô= = I>= = [€Uss÷€Œa€Œa€g€= = 0Ô= = g€I>= UsUss÷€s÷€Œa€s÷€€,€€,€[€˜–€½5€±€ÕŸY½5€ÕŸ€±€˜–€ÕŸ€ô$çïçï Ž ޽5€$Ÿ 5 5 5 5 5= [ ŽèH¥$Œº¥$tP1-ÛºÛºÉj€çïçïÛºÉj€[€I>I>0Ô= I>Us[€½5¥$±YtP€ô$[æ±YY½5€˜–€€,€˜–€j+Ä}ú—ú—‚7 ƒ+Ä|j0Ô0Ô= = I>Us= = I>g€g€0Ô0ÔI>$Ÿ0Ô= $Ÿ0Ô+Ä+Ä| 5+Ä~±²+Ä|7777Ÿ€BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í0’I$’I$’I)$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUUUUUUUUUUUUUUeUUUUUUUUUPUUUU¢€`¢€ mƒ,üü mƒ,üü8€ m€%×€Jv€š¦\ÆJv€u0²9¾né'>šu‰u‰¦]u‰&0‘€Üò€™Ïhû\Æeu0\Æ\Æe™Ïehû\Æ2 €\Æ2 €Jv€e‘€Üò€õ\€Ê£é'€Üò€²9\Ʋ9šÖز9õ\€õ\€¾n™ÏÊ£é'€ÖØûûJÏJÏu‰>ó‚‚ö€v;c’¾iTÊüõµõµ×1>ó‚²ëŽLé€õµãfê¾Ç>š€õ\€Ê£é'ûû>š&0€õ\€õ\>šû&0&0>šJÏû>š&0€é'€š>A€%×€¢ƒ,üÿ,üü%×€hûõ\‘€ÖØé'€ÖØÖØé'€hûšÊ£²9u0u0²97777€BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í,0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUPUUUUUAUUUUUPUUUUUUUUUTð `½5€€,€gÂtPhÃh1-=bYI—h€ô$±€¤Ë€Œa€±€ô$ ŽÕŸ€˜–€Éj€ÉjY€,€Us0Ô$Ÿ[€0Ô+Ä+Ä|0Ô˜–€ÛºÉj€Œa€I>$Ÿ$Ÿj$Ÿ$Ÿ0Ô= Usg€UsI>0Ô0Ô+Ä+Ä|g€ۺI—UÌ€…I—=bI— ŽI—=btP[æ€ô$Ûº½5€€,€= = $Ÿ7 €…ú—€$Ÿ= ˜–€s÷€0Ôj 5 5$Ÿg€g€g€I>Us€,€I>$Ÿ0Ô[€= ˜–Ãô$ô$$ø[悽ç‚hth€Ûºs÷€= I>0Ô0Ô= $Ÿ$Ÿ 5j 5j+Ä~±²|±²}ú—€7777€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍD0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUTUUEUTUUUUUUUUUð aú—€j[€¤Ë€¤Ë€[€= = I>Us[€s÷€s÷€= g€I>[€[€0Ô0Ôs÷€€,€0Ô 5= g€ô$I—hUÌ=bÛº¤Ë Žô$$øUÌ1-çïUs$Ÿ$Ÿ0ÔUs[€Us$Ÿ+Ä}ú—‚7 €= $Ÿj$ŸUs= $Ÿ0Ô$Ÿ$Ÿ±²|0Ô= j$Ÿj0Ô$Ÿ 57 ‚7 ƒ+Ä| 5 57 ‚±²~7 ‚±²~7 ú—‚7 ‚±²}ú—ƒ+Ä|j$Ÿ0Ô$Ÿ$Ÿ= g€çï½5Y$ø$øŒº¥$€Ûºç€Éj€ÛºYh[æUÌÃY€,€jj+Ä|$Ÿ 5= ¤Ë€çïYÛºI>0Ô0Ô7777€BUFRöbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍX@"""""""$DDDDDDUUUUUUUUUUUUffffffffffffwwwwwwwwpŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUTAUUUUUUEUUUUTUUUPUUUð `0Ôs÷€€,€±€€,€½5€[€s÷€Us$Ÿg€çïÕŸ€Éj€Ûº½5€¤Ë€½5€ÕŸ€çïÕŸ€¤Ë€[€˜–€€,€I>Œa€½5€g€Œa€s÷€¤Ë€ÕŸ€ÕŸ€Us+Ä|+Ä~±²|j½5 Žô$¤Ë€Us¤Ë€Œa€s÷€[€Us½5€ô$±€0Ô= g€˜–€Œa€¤Ë€¤Ë€Éj€Us 5jj+Ä|jj= 0Ôg€$ŸI>= 0Ô= Us= $Ÿ$ŸŒa€çïô$€,€˜–€[€0Ô±²~7 €…ú—‚±²|[€Œa€g€= j 5$Ÿ+Ä| 50Ô$Ÿj$Ÿ$Ÿ 5±²}€…ú—ú—€…‚7 € 5€,€±€˜–€¤Ë€g€g€[€g€s÷€€,€Éj€77770BUFR&bÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍUUUUUUUUUUUUUUUUUUUUUUUU^sœç9Þ÷½ï{Þ÷½ï{Þ÷½ïz„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œc!@‹N•µÀ …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸!¦:ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUTTð `½5€Us0Ô˜–€½5€¤Ë€€,€I>[€0Ôj= €,€Ûºô$ô$±€˜–€˜–€¤Ë€½5€½5€ô$ ŽYY¥$‚²=»ÉÃhUÌYçïÉjY[æâ-h€½5€Œa€ÕŸ€½5€±€s÷€[€Œa€½5€Éj‚%Q¥}‚±²‚è¡Õøh€½5I—$øUÌ¥$ÉÃ[æh€ô$½5€çï¤Ë€ô$Éj€½5€gÂèH%Q€Þ‚‚²±Y¥$tP[æ=bŒº‚½Ž ŽŒa€s÷€˜–€Éj€Éj€Œa€¤Ë€Œa€ÕŸI—1-Ûº0Ô 5 57 ú—sú—ú—ƒ+Ä~±²~7 ‚7 ‚7 ú—ú—€…‚7 ú—ƒ+Ä|$Ÿjj 5+Ä~7 ƒ+Ä~±²|7777Ÿ€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@0$’I$’I$’II$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ç>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTPUUUUUUUUUUPUUUUUUUUUUUUUUð `$Ÿ= = 57 ‚7 € 5+Ä+Ä|$Ÿ$Ÿ0Ô±²|Us7 ƒ+Ä~7 ƒ+Ä~±²|I>s÷€±€¤Ë€˜–€˜–€g€g€Œa€g€Éj€˜–€[€= 0Ôg€€,€= UsUsg€[€I>[€s÷€Œa€s÷€±€g€[€½5€±€½5€s÷€Œa€Ûº ŽÃçï±€s÷ƒ+Ä~±²+Ä+Ä|€,€¤Ë€Ûº Ž1-ô$¤Ë€€,€s÷€€,€çï=b Ž=b1-h€…YÕŸ€ÕŸ€ÛºÕŸ€˜–€ÕŸ€ÛºÕŸ Ž Ž ŽÉj€¤Ë€Œa€˜–€Œa€¤Ë€½5€Œa€€,€½5€ô$h[æ$ø½5€[€Œa€[€Uss÷€Œa€s÷€[€s÷€$Ÿg€jUs7777²~BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@(0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’Im¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¥Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `€,€½5€¤Ë€€,€g€՟€çïÉj€¤Ë€s÷€$Ÿj+Ä}ú—ú—ú—‚7 ú—‚±²| 50Ô0Ô[€g€= 0Ô0ÔI>¤Ë€Éj€±€€,€[€ 5 5+Ä+Ä|$ŸUsŒa€±€¤Ë€€,€s÷€€,€[€I>I>I>g€I>UsçïÛºÛºô$s÷€0Ô$Ÿ±²+Ä|$Ÿs÷€Ûºçï±€¤Ë€Œa€€,€±€±€½5U̽5€ÕŸY=b˜ïŒº[æý5€Œa€½5€¤Ë€½5€ÛºÃô$çïô$±€g€g€s÷€Œa€½5€¤Ë€ÛºÃ²â-èHÉÃŒº$øçïÉj€½5Yh$øÉj€s÷€[€0ÔI>= $Ÿ0ÔI>j 5= g€j 57777²~BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@<0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm·m¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUDUUUUPUUUUUUUUUUUUUUUPUð c+Ä~7 ú—ú—ú—‚7 €0Ôg€±€ÕŸ€±€¤Ë€€,€˜–€€,€€,€¤Ë€½5€˜–€±€€,€[€[€j+Ä|+Ä~7 €Us¤Ë€ÛºÕŸ€Éj€€,€Œa€g€€,€±€½5€ô$çï½5€˜–€g€s÷€s÷€I> 5+Ä~±²+Ä+Ä| 5= [€[€[€g€UsUsI>= $Ÿg€g ŽŒº€…[æU̽5€I>= 0ÔŒa€ÕŸ=bŒºY= = $ŸI>g€˜–€çï$ø1-$ø½5€ô$ô$Éj€€,€±€g€Œa€= ½5€ô$ô$½5€I>0Ô[€j0ÔgÂYtP€= Ã$ø½5€Usú—‚±²~±²~±²|$ŸjUss÷€¤Ë€¤Ë€7777²~BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@T0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUPUU@UATUUTUU@EUUð `˜–€€,€¤Ë€½5€Éj€½5€çïô$½5€½5€Œa€0Ôjj0Ô€,€Œa€ÕŸ€Œa€j$Ÿ 5±²+Ä|$Ÿj[€0Ô0Ô= = $Ÿ7 €…ú—€…‚7 ‚7 €$Ÿ= Us0Ô 5 5+Ä+Ä|+Ä~±²|j0Ô$Ÿ0Ôj$Ÿ$Ÿ 5$Ÿ$Ÿ 50Ô+Ä+Ä+Ä~±²~±²~7 ƒ+Ä~7 ‚7 €…‚±²|I>= = $Ÿj= = $Ÿ$Ÿ$Ÿ 57 s€…sssssss€…‚7 ‚7 ƒ+Ä|+Ä|+Ä|Us[€€,€˜–€Us 5 5 5 5+Ä| 5j7777²~BUFR&bÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍB\ç9Îu­kZÖµ­kZÖµ­kZÖ·½ï{Þ÷½ï{Þ÷½ï{ÞùÎsœç9Îsœç9Îsœç;Þ÷½ï{Þ÷½ï{Þ÷½ï}ï{Þ÷½ï{Þ÷½ï{Þ÷€‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUTEPUUUUUUUUUUUTAð `0Ô= = ±²}ú—s€…ú—s€…€…ƒ+Ä~±²|j0Ô 5 5jjI>$Ÿ0Ôj+Ä|j+Ä}€…€…ú—‚±²}€…ú—sú—€$Ÿ+Ä~±²~±²~±²~±²+Ä}ú—ƒ+Ä+Ä|+Ä|$ŸŒa€I>±²+Ä+Ä+Ä|g€՟€ÛºÃçï ŽÕŸ€ÕŸ€¤Ë€UsUs0Ô 5±²| 5[€¤Ë€0Ô 5j±=bÉj€s÷$øÕøI—$Ÿj 5$Ÿ$ŸjUss÷€s÷€= +Ä~±²|= g€Œa€±€Usj 5 5+Ä~±²+Ä|±²~±²|+Ä|$ŸI>+Ä+Ä|7777Ÿ€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€0’I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¦5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTDUAUTPUUUUUU@Uð b7 €…€…ú—ú—ú—ssssss€…ss€…ú—‚7 ‚7 ‚7 €…€…€…sss€…ƒ+Ä|= 0Ô7 ‚±²~7 ‚7 ‚7 ‚7 ƒ+Ä+Ä~±²|+Ä|±²~7 ú—s€…s€…€…ƒ+Ä|$ŸUs0Ôj 5±²~±²|±²+Ä~7 ú—‚7 ‚±²~±²}ú—ssú—ssss‚±²| 5$Ÿ 5j$Ÿ+Ä| 5±²~±²|jI>= 0Ô 5j+Ä|j±€ÛºY±€s÷€[€Usg€= $Ÿ= g€UsI>$Ÿ$Ÿj0Ô€…ú—ú—ú—€ 5[€Éj€ÛºÕŸ€[€˜–€7777€BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTUUUT@@UUUUUUUUUUUUUUUUð `= 0Ô[€¤Ë€¤Ë€½5€ÛºI>s÷€˜–€= +Ä~7 ‚7 ƒ+Ä~±²}€…ú—ƒ+Ä|jg€[€I>UsUs= 0Ô= Us$Ÿ$Ÿ0ÔI>= +Ä+Ä}ú—€±²~7 ú—€ 57 ‚±²+Ä| 5 5j±²~7 ƒ+Ä|[€€,€j$Ÿ$Ÿ+Ä|$Ÿj 5$Ÿ0Ô= Œa€±€Œa€[€Usg€Uss÷€g€¤Ë€Éj€˜–€˜–€€,€ÛºÛºI—ô$Éj€ÕŸ€$ŸjI>Ûº[€Us= = Us$Ÿ0Ô$Ÿ0Ô0Ô 5 5Us[€$Ÿú—€…ú—€…ú—‚±²|= I>Œa€€,€s÷€˜–€˜–€½5€Éj€ÕŸUÌ[æ1-h€7777€BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€,0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUTUUUU@UUUUUUUUEð atP€ÕŸ€Œa€€,€€,€$ŸUs0Ô0ÔUsUs½5€Ûº¤Ë€[€I>Us[€Œa€€,€Œa€Œa€±€s÷€±1-U̱€[€I>0Ô$Ÿ+Ä|$Ÿ€,€½5€±€±€€,€Œa€UsUs€,€€,€Éj€ÕŸ€Œa€ÕŸ€ô$Y˜–€s÷€$Ÿ 5j+Ä~7 ‚±²| 50Ôg€˜–€Œa€˜–€Œa€€,€Œa€Œa€s÷€I>= 0Ô= = 5sú—ú—ssss€…€…ú—‚7 ‚±²~7 ‚±²|$ŸŒa€= = ±€˜–€˜–€s÷€Usj$ŸUs= UsI>$Ÿ$Ÿ0Ô= s÷€Éj€g€= jI>g€s÷€I>+Ä|= $Ÿ7777€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€D0’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠ2ÇBT¶5Ï„e:V׆B˜èJ–çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€C!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUEUUUUUUUUUUUUUUUPUUUUUUð `j$Ÿ[€ÕŸ€½5€s÷€$Ÿ 5= = Us$ŸUs ޽5€I>0Ôs÷€€,€I>±²|= ˜–€˜–€Éj€ÕŸ€çïÛº½5€½5€½5€±€ÛºÕŸ€[€€,I—çï=bÕŸ€¤Ë€ 50Ô+Ä|0Ôg€±€çïçï½5€±€s÷€Œa€½5€Œa€½5€Éj€ô$ô$ÕŸ€˜–€Éj€ÕŸ€±€±€ÛºÉj€˜–€€,€±€¤Ë€¤Ë€€,€€,€¤Ë€ÕŸ€Éj€I>UsUsg€€,€[€UsI>I>I> 5±²~7 ‚7 ‚7 ƒ+Ä|0Ô€,€Œa€s÷€s÷€s÷€Œa€[€I>I>g€˜–€˜–€˜–€g€[€Us= 0Ôj±²~±²~7 €+Ä|jI>g€[€¤Ë€¤Ë€s÷€7777€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€X0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUQUUUUUUUUUUUUð `[€I>€,€¤ËÃ=bŒa€€,€0Ô0Ô= $Ÿj 50Ô˜–Ã Ž ŽÃI—Ûº¤Ë€€,€€,€g€g€I>s÷€Œa€Œa€Us0Ô 5 50ÔUsg€˜–€Éj€¤Ë€¤Ë€s÷€I>I>˜–€€,€[€¤Ë€[€Us¤Ë ŽYÛºs÷€[€€,€I>0Ô$Ÿ+Ä|0ÔI>UsI>Uss÷€Us€,€g€[€Œa€g€˜–€±€˜–€I> 57 ú—€…€…€…ú—€ 5[€s÷€Œa€Œa€˜–€Œa€s÷€[€[€€,€€,€g€UsI>= 57 ‚7 ú—€…€…€…‚±²|0Ôs÷€s÷€Œa€˜–€¤Ë€½5€½5€½5€€,€€,€€,€g€0Ôj$Ÿ0Ô7777€BUFR&bÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í‚UUUUUUUUUUUUU]o{Þ÷½ï{Þ÷½ï{Þ÷½óœç9Îsœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{Þ€!B„!B„!BB„ ‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt)lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUDUUUUUUUUUUUUUUUUUUUUUUUð `0Ôjj 5jUss÷€Œa€½5€ô$ Ž$ø ޽5€çïÕŸ€¤Ë€±€Éj€±€Éj€˜–€Œa€Us0Ô+Ä|7 ú—ú—‚7 ‚7 ‚±²~±²|j$Ÿ[€= = 5Usj= s÷€I>UsjI> 5jjUsÛº ŽYÃçïI—tPI—[怅UÌ€…€…$ø½5€[€0Ôj= Éj€±€g€$Ÿ= g€Œa€s÷€s÷€s÷€s÷€ÕŸ€ô$UÌUÌtP€±=bY Ž ŽÛºÕŸ€[€˜–€Œa€g€€,€€,€Œa€¤Ë€Œa€Œa€Œa€g€I>±€Éj€Éj€ÕŸ€Éj€Éj€˜–€çïŒa€I>j0Ô 5$Ÿs÷€€,€˜–€7777Ÿ€BUFR¶bÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ 0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠ„­sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ ]ÃÏÞ?x /M`^šÀ½5èHÄé¬ ™p#`@@˜–I—²$ø @ øP6î€zÏ…† ôÖ?x 9ûÀa¨YI—1†é¬ » ¦°0Ô^šÀ˜–Ãn628)2à@@Œa€çï“.Ä´?x q°Èà3á@OX€ž±n6ˆ øPð 3á@^šÀ€,Yn6zÄIð€ 5O€j0Ô$ø†  @ @ 5j0Ô’|zÄ|(~ð#`9ûÀ0ÔYn6zÄ?x™p0Ô^šÀ±bÏÞ> ÓXŒ0 ReÀ¤Ë1-n6Ül ð /M`@@Ûº† 1†>ÆÐ/M`€,€˜–€ž±’|$ø @$Ÿoc ’|s÷€7777ŽBUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ 0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUTUUUPUUUUUUUUUUUUUUUUUð `˜–€0ÔI>= 0Ôs÷€¤Ë€˜–€I>g€= ±€ô$I—€…h ŽŒa€g€g€¤Ë€…‚t©‚bZ±€= UsŒa€¤Ë€€,€[€ 5jj 5+Ä~7 €jj 5j$Ÿ0Ô0Ô0Ôj 5 5 57 ‚±²~±²~±²~7 ‚±²|jI>$Ÿjj0Ô= 0ÔI>I>0Ô[€g€[€= = ˜–€Éj€±€±€[€= = 0Ô[€½5€ÛºçïY½5€˜–€¤Ë€s÷€I>[€Usg€˜–€ÛºÉj€ÕŸ€Œa€I>[€I>jj0Ô$Ÿ$Ÿ= Us$Ÿ$Ÿ$Ÿ$Ÿ$ŸUsUs= g€˜–€ÕŸ€ÕŸ€ÛºÉj€€,€7777>BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ80I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ …1Е-sáN•µÀ …1Ð¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTAUUUUQUUUUUUUUUUUUUUUUUUð `Us= jUsŒa€±€±€±€ÕŸ€½5€Éj€g€s÷€½5€ÕŸ€Éj€€,€¤Ë€s÷€s÷€s÷€€,€Us+Ä|= +Ä~7 €[€s÷€s÷€¤Ë€0Ô= g€€,€±€ÛºÉj€¤Ë€0Ô$Ÿ$Ÿ= g€7 €7 ‚±²|= s÷€˜–€Œa€Uss÷€[€Us0Ô[€Us€,€I>UsŒa€Œa€Œa€Œa€Œa€[€$Ÿ+Ä|$ŸI>€,€g€g€˜–€Œa€¤Ë€¤Ë€Éj€€,€g€s÷€€,€s÷€g€±€¤Ë€ÕŸ€s÷€[€s÷€g€$Ÿ0Ô[€Us˜–€Œa€½5€Éj€ÕŸ€½5€Éj€±€¤Ë€€,€[€0ÔI>[€[€0Ô 5j 5 5$Ÿ 5= g€[€I>7777>BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀL0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@UUU@TUUUUUUUUUUUUUUUUUUUUUð ` 5+Ä~±²~±²+Ä~7 ƒ+Ä~7 ‚±²|$Ÿs÷€˜–=bhI—çïÛº˜–€€,€[€Œa€g€= $Ÿ±²}€…€…ú—ú—€…€…‚7 €$Ÿ= $Ÿ 5g€I>+Ä~±²}ú—€ 5g€s÷€˜–€˜–€I> 5$Ÿ 5 5$Ÿ 50Ô0Ôj±€$ŸŒa€Us±€Œa€¤Ë€Us= €,€Éj€çïô$Ûº€,€s÷€˜–€Ûºçï$øUÌUÌçï$øI—€…tP=b½5ÃçïÕŸ€ÕŸ€ÉjI—±Yô}I—€,€˜–€½5€Éj1-UÌÛº1-1-=bUÌ€,€s÷€Uss÷€¤Ë€Œa€[€ÕŸtP=b ŽÕŸ€¤Ë€¤Ë€g€˜–€˜–€½5€s÷€Us7777>BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ`0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÛmÛ`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUPUUUUUUUUUTUUUUUUUUUUUUUAð `¤Ë€Éj€ÕŸ€[€I> 5€…€…€…ú—ú—€= I>I>$Ÿ= I>I>s÷€˜–€ÕŸ€çïg€= Us€,€Éj€Éj€ÕŸ€ÕŸ€€,€˜–€˜–€¤Ë€Œa€€,€Œa€½5€Œa€€,€s÷€g€s÷€s÷€I>= 0Ôj 5+Ä+Ä~±²}ú—‚7 €…€…€…ú—€…‚7 ‚7 ‚±²+Ä+Ä~±²+Ä+Ä+Ä| 5 5jI>Ûºçïñ€0Ô$Ÿ0ÔI>s÷€g€Œa€¤Ë€€,€Œa€g€[€= 0ÔUsg€€,€Usg€€,$øUÌUÌ=bÃçïÉj€¤Ë€¤Ë€ô$Y=bô$±€€,€g€[€˜–€s÷€[€˜–€çïý5€˜–€$Ÿ7 ‚7 €7777>BUFR&bÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÂUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï{Þ÷½÷½ï{Þ÷½ï{Þ÷½ï{ÞB„!B„!B„!„!B„!B„!BÆ1ŒcÆ0ŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èL"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUTUð `jI>s÷€[€Us$Ÿ0Ô$Ÿ= $Ÿ 50Ôg€= j$Ÿj 5 5j7 ‚7 ú—ú—ú—€ 50ÔUsg€[€Usg€€,€˜–€s÷€[€€,€˜–€±€±€¤Ë€¤Ë€¤Ë€Usjjjj[€[€s÷€s÷€[€[€I>[€g€I>Us[€s÷€Us= I>[€g€g€€,€[€I>= UsI>= [€I>[€UsŒa€g€¤Ë€±€s÷€g€s÷€Œa€½5€ 5js÷€Œa€s÷€Us0Ô 5 5€…ú—€±²~7 ú—‚7 ‚±²~±²~±²|I>I>$Ÿjjj+Ä}€…ú—€…€…€+Ä+Ä~7 ƒ+Ä| 57777Ÿ€BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í0’I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶Û’I$’I$’Km¶Ûm¶Ûm¶Ý¶Û`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®„e:V×D2ÇBT¶5Ï„gJÚà†B˜èJ–ÆÆt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@UQUTUUUUUUUUUUUUUUUUTð c+Ä+Ä+Ä~±²~7 €…€…€…€…€…€…ƒ+Ä| 5+Ä+Ä+Ä~7 ‚7 ƒ+Ä+Ä~±²+Ä|j+Ä~±²| 5+Ä}ú—€…s€…€…€…€…€I>I>= 0Ô 5+Ä|$Ÿ 5 5±²}ú—€…€…€…ú—€…€ 50Ô[€I>Us= j 5$Ÿ 5= = g€Œa€I>j= 5 50Ô€,€Œa€Œa€˜–€¤Ë€±€g€Éj€[ÉÂÊ½Ž‚Ê‚±²‚%Q Ž1-Œa€ 5jUs[€Uss÷€˜–€s÷€Œa€[€I>Usg€[€Usô$¥$=b¤Ë€Œa€[€Œa€Us0Ô= $Ÿ+Ä|7777BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í(0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð ` 50ÔI>$Ÿ+Ä~±²~7 ‚±²+Ä+Ä| 5 5jj 5 5 5g€g€ۺ€,€Us= I>0Ô= [€gÂâ-€…¥$h½Žâ-‚ çô}¥$€çï ŽÃI—1-[æ[æ€ô$½5€ÉjUÌçïÛº½5€ÕŸ€½5€ÕŸ€˜–€Ûºh=bY˜–€s÷€ô$I—çï½5Y ŽÉj€˜–€€,UÌ€…[æ€Ûº ޽5€[€Œa€ÕŸ€½5€¤Ë€[€ 5$Ÿ 5 5= g€€,€s÷€[€Œa€€,€s÷€= Us[€Œa€½5€±€€,€ŒaYÉØïI—$øY¤Ë€Éj€±€Œa€çï[ætP€Ûºs÷€˜–€¤Ë€s÷€±€˜–€[€[€7777BUFRæbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í<0$’I$’I$’II$’I$’I$’m¶Ûm¶ÛrI$’I$’Im¶Ûm¶ÛmÛm¶Ûm¶Û`‹:Zà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƺ×D2ÇBT¶6S¥mpC!Lt%Kc\øFà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUEUUUUUUUUUð aÃV%¥$€Ûº˜–$ø±€Éj€±€ô$Éj€€,€I>Us0Ô0ÔI>Us[€I>= 0ÔI>¤ËY€…€½5€±€= g€$Ÿ 5jÉj€±€ÛºçïYŒa€g€€,€[€I>= = [€g€ۺ1-ô$$ø1-ô$˜–€g€€,€Œa€€,€½5€çïYô$Y€,€Us0ÔI>0Ô0Ô$ŸI>0ÔjjUs¤Ë$øI—±€s÷€0Ô0Ô= g€UsÕŸ€ô$ 5±²| 5 50ÔUsçn€ô$çïÀ…=bçïô$=bŒº=bÉÃâ-=b±€s÷€˜–$ø[æY˜–€€,€[€[€[€s÷€ÕŸ€ÕŸ€çïÉj€g€s÷€7777BUFRöbÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍT@"""""""""""#333333333334DDDDDDDDDDDEUUUXˆˆˆˆˆˆ™™™‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜ëc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUPð `€,€s÷€s÷€0Ô+Ä|j±²+Ä|[€½5€ÕŸYŒa€˜–€Œa€¤Ë€Us¤Ë€Éj€±€˜–€˜–€½5€ÛºÕŸ€ÕŸÃçïÉj€s÷€Us[€0ÔI>= I>0Ô 50Ôj$Ÿ0Ô$Ÿ 50Ô0Ô[€g€[€[€= 0Ô+Ä| 5+Ä~7 ƒ+Ä+Ä|0Ô= g€€,€I>I>0Ô= s÷€˜–€Éj€ÕŸ€Éj€˜–€[€s÷€I>0ÔUs€,€s÷€g€$Ÿj$ŸUs[€Œa€±€¤Ë€Œa€Us$Ÿ 5I>Y½5€€,€½5€€,€˜–€½5€˜–€g€= €,€¤Ë€±€j$Ÿ0ÔUs0Ô[€Us±ÃÕŸ€±€˜–€[€ 5±²}€…€…‚±²|jŒa€7777BUFR&bÿ« fÍ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï{ÞûÞ÷½ï{Þ÷½ï{Þ÷½ï!B„!B„!BˆB„!B„!B„! cÆ1ŒcÆ0Št%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUU@UUð `s÷€[€s÷€¤Ë€¤Ë€¤Ë€±€½5€½5€Éj€ô$Yh¥$=bYÉj€˜–€I>$Ÿ 5 5j€,€Œa€I>$ŸjI>0Ô= g€[€I>= I>0Ô 5ú—ú—‚7 s€…ú—€$Ÿs÷€Œa€s÷€s÷€g€I>$Ÿ0Ô= UsŒa€Œa€¤Ë=b=b¤Ë€˜–€Œa€¤Ë€Éj€½5€¤Ë€˜–€s÷€ÕŸ€¤Ë€˜–€[€[€UsUs0ÔUss÷€¤Ë€˜–€Œa€±€˜–€Us$Ÿ±²~7 ‚7 ‚±²}ú—‚±²|= g€Œa€˜–€€,€s÷€[€UsUs[€[€¤Ë€€,€g€Us= I>Usj€…‚±²~±²+Ä|I>g€½5€¤Ë€g€I>0Ô0Ô$Ÿ0Ô0Ô7777Ÿ€BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶Ûm·`ŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øÊt­®ˆd)Ž…±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUTPUUU@UUUU@UUUUUð `0Ô[€¤Ë€˜–€¤Ë€ô$ÛºÛº¤Ë€Us0Ôj 50Ô[€˜–€ÕŸ€½5€ÕŸ€˜–€[€[€€,€€,€Œa€Éj€ÕŸ€Éj€ô$Yô$çï½5€±€ÛºÕŸ€˜–€Œa€€,€[€Us= 5±²}ú—‚±²|+Ä+Ä|j 50Ô 5 5+Ä+Ä}ú—s€…€Œa€Œassú—ú—ƒ+Ä|jj 5$Ÿ 5 50Ô 5j€,€g€Usj+Ä}ú—€…ƒ+Ä| 5€,€½5€Éj€±€[€g€g€[€UsI>[€s÷€€,€s÷€I>s÷€[€0Ô= +Ä~±²+Ä|$Ÿg€Œa€½5€[€UsI>[€UsÕŸYYI—0ÔI>½5€Ûºô$ÛºÕŸ€7777 BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@(0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUPUUUUUUAUUUAPAUPUð `±€¤Ë€¤Ë€˜–Y=b1-çïçïs÷€€,€s÷€€,€±€ÛºYÕøÉØï[æ Ž½5€¤Ë€ÕŸ€Œa€= g€½5€±€½5€ÕŸ€½5€ÕŸ€ÛºÛºô$$øÃ½Ž½Ž ŽI—U̱€€,€= ú—€…€…s‚7 €0ÔŒa€˜–€±€¤Ë€Œa€½5€g€Us$Ÿ= I>UsI>= UsŒa€˜–€Œa€[€$Ÿ+Ä}€…€…ú—€j 5j 5 5+Ä+Ä| 5$Ÿ= = I>[€s÷€0Ô$Ÿ€,€g€I>g€ 5±²}s€j[€= €…ú—ú—‚±²~7 ‚±²|7 ƒ+Ä|= [€€,€Ûº¤Ë€¤Ë€I>+Ä~±²~7 €j0Ô= ±€Éj€€,€g€7777 BUFRæbÿ« fÍ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@<0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUUUUUUUUUUUU@UUUUPUPð `= 0Ô= 0Ô0Ô[€g€Œa€Œa€Us[€0Ô[ƒ+Ä}ú—‚7 ‚7 ‚7 €= Œa€˜–€s÷€[€I>I>= = I>UsŒa€Œa€çïÃô$½5€±€s÷€j 5±²~7 €g€½5€çï½5€½5€çïÛº½5YYÛºÉj€ÉjYÛº Ž Žs÷€g€€,€±€s÷€Usg€€,€¤Ë€˜–€çï$ø=b=bÕŸ€$ŸUs½5€½5€¤Ë€½5€˜–€[€= j±²}ú—€…ss€…€ 5g€€,€±€€,€[€Usg€0ÔI>I>UsI>$Ÿjj 5 50Ô±²~±²+Ä~7 ú—‚7 €j[€0Ô±²~7 ú—ƒ+Ä| 5j7777 BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í@P0’I$’I$’I)$’I$’I$›m¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹)Ò¶¸2ÇBT¶5Ï„e:V×D2ÇBT¶B2+k€" c¡*c\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUUUUUUUUUUUUUUUUUTUUUTð ` 5$Ÿ0Ô= 5$Ÿ= [€j= [€s÷€Œa€˜–€0ÔŒa€Œa€Œa€Œa€Œasú—€0ÔI>0Ôs÷€= 0Ô= [€[€I>= Us¤Ë€çï$øŒºUÌ= $Ÿjs÷€I>Us[€$Ÿg€= $ŸI>˜–€= $Ÿ0Ԥˀçï Ž1-$øUs 5j 5j= Us€,€[€Us$ŸI>j0Ôg€$Ÿj$Ÿ€,€Éj€ô$$øô$s÷€j$Ÿ[€[€s÷€¤Ë€Œa€ÕŸ€Ûº[€[€[€= 5j+Ä~±²| 50Ô€,€˜–€€,€s÷€[€s÷€g€Us€,€s÷€˜–€˜–€±€g€$Ÿj±²~7 ‚7 ‚±²}sú—ú—€s÷€7777 BUFR&bÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍBUUU\ç9Îsœç9ÎsœëZÖµ­kZÖµ­kZÖµ­o{Þ÷½ï{Þ÷½ï{Þ÷½óœç9Îsœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{Þ€Št%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUTUUð `€,€€,€UsUs0Ô€,€UsUsg€€,€[€s÷€g€= 0Ô$Ÿ+Ä| 5+Ä+Ä~7 € 5¤Ëà ŽI—Ã0ÔUs[€g€I>˜–€Œa€Œa1-tPI—±€$Ÿjjs÷€¤Ë€Us= = €,€$Ÿ 5Us¤Ë€¤Ë€˜–€˜–€çï Ž¥$‚â-ô}Õø±YU̽5€= j0Ô0ÔÉjÃ[æ=bUÌ=bÕŸ€çïtPUÌtP½ŽÕø˜ï[æI—ÕŸYçïô$½5€±€ÛºÉj€Éj€Ûº Žô$ÕŸ€Ûºô$ÃUÌô$½5€Ûº¤Ë€Œa€g€UsI>= 0Ô$Ÿ 5±²+Ä|j0Ô0Ô= 0Ô0Ô= I>0ÔUsI>7777Ÿ€BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUUUUUUUUUUUUUUUð `[€s÷€¤Ë€˜–€€,€½5€UsŒa€Usj±²~7 ‚±²|j˜–€ô$$øÃÉj€½5€½5€½5€ÕŸ€Ûº Ž=bUÌh˜ïŒºtPhUÌYô$ÛºÛºÉj€çï1-I— ŽÛº ŽÛº¤Ë€Éj€ô$ Žô$ ŽÃ Ž Ž$øÛº½5€I>s÷€Œa€€,€UsŒa€Œa€Œa€˜–€g€[€s÷€g€g€s÷€Œa€€,€Œa€Œa€˜–€Us$Ÿ7 ú—ú—ú—€…ú—‚±²}€…€$Ÿ= $Ÿj0Ô0Ô= = [€± Ž1-I—ÃYô$±€˜–€[€j$Ÿ[€¤Ë€Éj€çïÉj€¤ËYh=b[æ[怅1-çïÛºÛº€,€Us7777sBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€0I$’I$’I$”’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©l|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUU@UUUUUQUUUUð `j 50Ôg€՟I—1-Ãñ€Œa€s÷€g€g€Œa€Ûºô$ô$ÕŸ€˜–€Œa€¤Ë€[€ 5$Ÿ0Ô 5Usçï=b=b[æ€Ûº¤Ë€±€ÛºÉj€Ûº ŽhUÌ1-$øÕŸ€˜–€¤Ë€UsI>jI> 5j€,€±€Œa€I>¤Ë€€,€g€½5Y ŽÉj€¤Ë€Œa€€,€0Ôú—s€…s€Œaú—€j±€¤Ë€¤Ë€€,€I>Us= 0Ô= s÷€Us[€Œa€Œa€I>Usg€I>$Ÿ+Ä|UsŒa€Œa€¤Ë€˜–€˜–€¤Ë€Ûº$ŸI>I>Œa€€,€g€0Ô 5±²|+Ä}ú—€…‚±²}sú—ƒ+Ä~±²~±²|$Ÿ7777sBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€00’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUTUUUUUUUUUUPUUUýà` 5jj¥}|0ÔI>˜–€˜–€½5€Ûº±€˜–€[€OX€0Ô 5j 5$Ÿs÷€½5€±€¤Ë€€,€g€g€g€¤Ë€˜–€¤ËYà ŽÉj€½5€[€ 5I>€,€˜–€˜–€˜–€½5€çïô$1-[æÃô$Yô$ô$ô$$ø$øô$½5€±€€,€I>$Ÿ¥}~+k€j[€Œa€¤Ë€˜–€€,€g€OX€OX€I>g€[€€,€¤Ë€Œa€€,€s÷€g€[€[€I>= $Ÿ$Ÿ= [€[€OX€g€[€€,€Œa€s÷€Œa€Œa€˜–€±€€,€€,€g€OX€[€$Ÿj+kîbtP€ú>‚+kƒ|$ŸOX€[€I>I>= 0ÔI>OX€€,€½5€Ï…7777sBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€D0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÛnÛ`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ö×D2ÇBT¶5Ï„e:V×D2ÇBX×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUTUUUPTEUUUUUUUUUð aYÃô$çï¤Ë€±€s÷€˜–€Œa€s÷€= [€g€s÷€½5€ÕŸ€ÛºÕŸ€ÕŸ€Éj€çïs÷€˜–ŒºtPhŒº[æI—I—Ã$øÛº€,€[€[€Œa€˜–€Œa€½5€…˜ï€Œa€I>s÷€½5€˜–€½5YÉj€j+Ä}€…€…ú—s€Œa€Œaú—‚±²|jI>Usj$Ÿj 5 5$Ÿ$Ÿ= 0Ô= $Ÿ+Ä~±²}s€Œa€Œa€Œa€O€Œaƒ+Ä|[€˜–€[€= +Ä|+Ä|= [€Éj€ÛºÛºÕŸ€½5€˜–€€,€UsUs= j[€s÷€˜–€±€Éj€½5€0ÔUsg€[€˜–€Éj€ÕŸ€ÛºÛºÉj€Ûº±€¤Ë€±€˜–€Œa€Œa€7777sBUFR¶bÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í€\0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]’ÕÐÆ~ðýà5gà9ûÀ¤ËÃbZÝÐÈà!‘ÀC#€mÝÕŸI—ÄdÆ~ðB@ 5·ÐdpÈà 2Z 9ûÀgÂÓ.é¬'¬@Us’|=bJIc¾ ¢„Йp&% LK@˜–’Õ28 'À¾h+|ÐC#€€,€Ûº’ÕddpÐ+|ÐZàº(AÉà oš 'ÀŒ0w@#`F0ÀŒa€·ÏÞÄ´ –¨#`c. ÀBÀô$·ô$Ä´?x'¬@OX€˜–ÃèHnèˆ Ð#`@@s÷€Ï…²¬ü Yø&% C#€ 5I>I>Ÿ d ‰h )2àLK@Œa€zÏÞ«˜Ið ®`O€-ÆÀs÷ÃÏÞ&\ Œ0B@ 5$Ÿ7777€˜BUFRbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!²LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í‚UUUUUUUUUUU]ï{Þ÷½ï|ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷¾÷½ï{Þ÷½ï{Þ÷½ï{ÀB„!B„!BŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ `0Ôj€,€ÃPÏ…çïÏ…ô$çïô$Ï…ÃPÏ…½5€½5€½5Y[悲ÏÞ ŽÃP¤Ë€Ï…çïçï$øC|[æ1-htPh[ætP1-1-1- ŽY$øŒºÉØïtPC|1-O±Ã1-Ã$ø1-[æ=b=b$øÛºô$ÛºçïÏ…Ï…½5€Ï…1-ÏÞƒuu±²˜ïO±tP1-htP‚‚1†ÜlIð½ŽÉÃYÛºY±€ÃPÏ…$øh˜ï‚¥}‚htÏÞ$ø Ž Žçïۺυ±€¤Ë€˜–€˜–€Œa€Œa€[€C#€= = $Ÿ0ÔC#€C#€= = = = 0Ô= OX€jOX€C#€s÷€7777= BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS S\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUUUUUUUUUTUUUUUUUUUUUUUUTýà`g€g€$Ÿ~+kîb‚¥}|= ±€çï¤Ë€s÷€Œa€˜–€OX€OX€[€Ï…çïçïÉj€±€Œa€Œa€s÷€s÷€= jOX€OX€OX€€,€€,€s÷€€,€g€[€s÷€Œa€˜–€¤Ë€½5€ÛºçïçïÏ…¤Ë€¤Ë€˜–€€,€s÷€= tP‚+k€= €,€Œa€˜–€€,€¤Ë€½5€Ï…çïÏ…˜–€g€g€I>I> 5j~¥}|$ŸÉj€Ï…O±1-I—ô$ô$Ï…ô$=b[æ˜ï½ŽhŒº€…€½5€˜–€˜–€Œa€€,€˜–€˜–€s÷€Œa€Éj€ô$ô$çïÏ… ŽI—O±1-=bI—çïÛºçïô$YÛº˜–€j}îbtPtP‚+k€7777= BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ 0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUQUUUUUUUUUUUUUUUUUUUUUUUUð `[€[€I>I>[€[€= 0Ô¤Ë ŽÀ,€I>s÷€s÷€[€Usj+Ä|±²~±²~7 ssú—ú—€= $Ÿg€g€s÷ ŽYñ€¤Ë€[€$Ÿj 5±²~±²|0Ô½5$ø1-=bçïÕŸ€½5€ÕŸ€Éj1-h=b$ø ŽÛºÛºÃô$½5€g€g€= [€s÷€±€çïYô$çïYY$øô$À…€…I—[æ1-I—=b ŽÛºÛºÕŸ€Éj€±€½5€çï1-tP=b1-I—[æ˜ï¥$[æ±Y‚V%½ŽhhtP$ø1- ŽYçïçïÛºÃ Ž½Ž½Ž€ô$ÛºI—1-I—7777= BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ40I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶àŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUTUUUUUQUUUTð a[æhÕø‚ çÕøèH¥$€…€…$øYYô$ÕŸ€çïô$=b[æ=b Ž Ž Ž1-1-UÌI—1-Éj€½5€½5€˜–€˜–€€,€s÷€= g€Œa€= Usg€½5€çïÛºÕŸ€€,€˜–€s÷€Ûºô$ÛºÉj€±€Œa€s÷€g€[€I>= 0Ôj+Ä}€…s€O€…‚7 ‚±²+Ä|0Ô= 0Ô0ÔI>I>= s÷€UsI>Us$Ÿ 5±²}ú—ƒ+Ä~7 € 5= €,€±€s÷€˜–€g€g€s÷€˜–€ÛºçïÕŸ€½5€±€±€s÷€g€0Ô0Ô 5 5+Ä|I>g€Œa€g€[€s÷€s÷€g€€,€˜–€˜–€Œa€Œa€Œa€j7 €7777= BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀL0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUUUUUUUUUUUUUUUUUUUUUUUUTð b7 €…€…‚7 ‚7 ‚±²|= g€[€€,€±€Éj€Éj€½5€Éj€Éj€½5€˜–€s÷€UsI> 5+Ä+Ä| 5j 5 5Us˜–€Ûºô$UÌŒºtPŒº¥$¥$¥$h[æÃô$Éj€€,€[€I>s÷€€,€˜–€½5€½5 ŽçïÛºçïçïÉj€½5€ÕŸYY Ž Ž=bI—[æUÌI—1-[æUÌI—=bUÌhâ-‚ 瀅 ŽÃ ŽçïYÃô$Ûºçï Ž$ø1-Ûº½5€[€±€g€g€[€Usg€¤Ë€±€€,€g€€,€€,€€,€±€½5€ô$ ŽÛº€,€s÷€€,€UsI>0Ô= j±²~±²|js÷€±€7777= BUFR¶bÿ« fÍ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÀ`0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠ•-Œ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýà]I—%ªKT ¦°,@ LK@€,€çﲟ¼È~ð9ûÀg€Éj’Õ%ªKT ÓX-P,@ LK@€,òd L¸Œ0&% LK@˜–Ã1†c Æ,@ F0ÀŒaÓ.&\ –¨ð ,@ X€@ÛºŸ nè¡ ~ð!‘À@@Œa€çïÏÞŸ¼ÝÐ » ð = zçïÏÞnè¡ ~ð!‘ÀF0À€,Y²28 }ŒE+|ÐOX€¤ËO±‚Ÿc“àÈw@6î€s÷€ÉjÏÞddp øPŒ0 -ÆÀ¤ËŸ “àÝÐ –¨ 6î€LK@Œa€çïô$èH† B@j0Ô0Ô0Ô† |(Ð/M`dµ@½5bbZ&\ ÓXw@@@s÷€Éj€7777€sBUFRöbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍÂUUUUUUUUUUUUUUUUUUUUUUUUU^sœï{Þ÷½ï{Þ÷½ï{Þ÷½B„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œd!@‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƺ”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@)2à]1-²Ÿ¼?x q°'¬@F0Às÷€ž±za¨ @-ÆÀ€,òŸ¼ ‰h„€F0À†GY²dÆÈà„€-ÆÀUsž±YŸ c ~ð)ö0Vù s÷Y·tnè€ 5w@9ûÀs÷€ÛºUÌbZ>èH @ã`gÂC|‚=»>|( øP#Û°] •‰AY1†¬J º<û)ö0G·`zÏ…Ÿ >W0 ‰hj-ÆÀ-ÆÀjUs ޏØB@#Û°G·`†G Ž=»¬J }Œû.Š`!`†GÛº=bÏÞÜl¸Ø øPð '¬@6î€Us ŽzÄÈÖ -ÆÀg€υn6>¡ tx9ûÀwÀÕŸ˜ï‚è¡>ÆdpB@(oF0Àmݪæ7777X€BUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUPUUUUPUUUUUUUUUUUUUUýà`Éj€½5€çïYçïÛºÛºYYÛº Žô$Y ŽYô$YÉj€Œa€[€= 5~+k‚+k€= OX€OX€g€ۺ€,€€,€¤Ë€ÉjY±€±€˜–€¤Ë ŽÛºŒa€g€s÷€[€0Ô|ú>€€,îbîb€j 50ÔI>OX€= OX€OX€I>$Ÿjjjj 5|ú>€€,tP‚+k€I>¤ËYυۺυÉj€¤Ë€Œa€˜–€Ûºô$½5€s÷€[€[€$Ÿ0Ô|ú>îbîb€ 50Ô˜–€ô$[æYçï ŽÃô$ Žçïçï±€Œa€g€I>Œa€Œa€OXîbtP€ú>îbîbƒ|I>½5€½5€¤Ë€[€OX€77770ÀBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í(0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUPUUUUUUUUUUUUUUUUUUUUUUð `I>UsI>I>Œa€±€˜–€ÛºÃUÌô$s÷€j+Ä~7 €…€g€¤Ë$øY½5€±€Éj€½5€Ûºs÷Yô$½5€€,€g€$Ÿj+Ä+Ä~±²+Ä+Ä|ŒaÃ=b1- ŽI— Ž$ø1-[æ˜ïŒºŒº˜ïtPtPh¥$hI—$ø Žô$ÕŸ€ô$Ã[æ=bUÌUÌhhUÌU̘ïhŒº¥$[æI—1-1-ÃÃô$ÕŸ€±€½5€Ûºçï Žô$I—Õø[æÃYçïô$çïÕŸ€ÕŸ€Éj€ÛºÉj€= 0Ô$Ÿ 50ÔÉj€ô$ Žô$ç€Œa€s÷€€,€Œa€±€¤Ë€Œa€¤Ë€˜–€77770ÀBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Í<0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `j 5+Ä~±²}€…sss‚7 ƒ+Ä|0ÔŒa€½5€Œa€0Ô 50Ô$Ÿ$Ÿ0Ô0Ô$Ÿ$Ÿ= = = 0Ô$Ÿ$Ÿj 5 5+Ä| 50ÔUs= Usg€Œa€˜–€±€±€±€±€±€±€¤Ë€¤Ë€˜–€˜–€˜–€g€g€[€Usg€g€˜–€¤Ë€¤Ë€¤Ë€˜–€¤Ë€±€½5€Éj€ÕŸ ŽÕŸ€çï ŽYYà Žçïô$çïçïô$Y=b¥$hUÌhhUÌh±Y[æ ŽYYô$ÕŸ€±€±€Éj€Œa€s÷€= I>= [€s÷€±€±€ÛºÉjYçïY Ž Ž$ø1-Ãô$Y$ø1-UÌ1-1-$ø77770ÀBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍT0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUTPð aI—1-UÌI—[æI—$ø1-Y¤Ë€¤Ë€½5€½5€˜–€Œa€Œa€˜–€s÷€Us˜–€½5€½5€Éj€½5€˜–€ô$ô$±€±€¤Ë€Œa€Œa€Ûº½5€±€½5€¤Ë€˜–€¤Ë€±€¤Ë€±€Éj€Ûºô$ô$½5€[€[€˜–€ÛºYUÌ=bI—$øÛº1-çï ޱ€€,€€,€½5€½5€€,€j$Ÿj0Ôj$Ÿ±h˜ï1-Ûº±€±€˜–€€,€¤Ë€˜–€0Ô 5±²}ú—€…€…ú—‚7 ‚7 ‚7 €…‚7 ‚7 €$Ÿ7 ‚±²+Ä|jI>j 5±²+Ä~7 ú—‚7 ú—€…ú—ú—s€…€…€…€…€…€…‚7 ‚±²+Ä|0Ô0Ô77770ÀBUFRæbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Íh0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×Â2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUEUUUUUUUUUUUUUUTUUUUUUð `= [€I>Us[Y ŽYÛº¤Ë€Œa€$Ÿj±²|7 €[€s÷€çï½5€½5€½5€±€˜–€±€½5YÃçï½5YçïYô$½5€ÕŸ€˜–€[€0Ô±²|= g€¤Ë€s÷€g€s÷€g€[€I>[€[Yô$½5€¤Ë€[€Us€,€˜–€çïŒa€I> 5j±€ô$I—=bÃô$UÌUÌtP=bÃçïçïçïÕŸ€s÷€[€0Ô+Ä~±²}ú—€…€…€…‚±²|= [€s÷€s÷€˜–€±€˜– ŽÃÕŸ€˜–€= ±²}s€…‚7 ssssú—€0Ôçï1-±€½5€Œa€±€ÉjUÌhŒºh$øô$ Ž77770ÀBUFRfbÿ« fÍ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÍUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTD»_x„!B„!B„!BB„!B„!B„!ŒcÆ1ŒcÆ1ŒcÆ2„!B„!B„!B”¥)JP‹k„C!Lt%Kc\øJt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUETUUUU@UDE@UUUUUUð `ô$çïŒa€g€[ƒ+Ä| 5[€[€Usj+Ä}ú—ƒ+Ä+Ä|±²}ú—s€O‚±²|s÷€s÷‚7 ƒ+Ä}€…s€…‚7 €…€I>±€çïŒa€ÕŸUÌÕŸ€Ûº½5€½5€ÕŸ€¤Ë€€,€¤Ë€0ÔI>g€[ú—s€Œa€O€Osú—€g€I>$Ÿ 5+Ä|±²~±²|0Ô7 ú—‚7 ‚7 ssú—€…s€…€…ú—ƒ+Ä~7 €+Ä| 5 5+Ä| 5$Ÿ€…ú—€…s€…€…ss€…€…s€…‚7 €Us Ž[æ$øÕŸ€½5 ŽŒº‚%Q±Y±YŒºtP[æUÌh ŽÉj€[€[€Œa€[€I>Œa Ž$ø7777BUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUUUUUTUUUUUUUUUUUUUUð a€…¥$UÌ ŽÕŸ€Éj€ô$ô$Éj€ÕŸ€½5€Éj€çïÃY€,€I>ssú—‚±²|= ô$çïÕŸ€¤Ë€€,€[€s÷€¤Ë€ô$±I—½5€Éj€½5€Us[€$Ÿú—€…€…ú—‚±²|0Ô½5Y=bY˜–€[€I>I>Œa€±€½5€Œa€€,€I>0Ô$Ÿ$Ÿú—€Œaú—€Œa€Œa€Œa€Œa‚±²|Éj€ô$¤Ë€s÷€€,€Œa€€,€Œa€ô$UÌYÕŸ€½5€±€¤Ë€€,€±€s÷€= 0Ô0Ô0Ô$Ÿ= s÷€˜–€±€€,€Œa€˜–€¤Ë€½5€ÕŸ Žçïô$Éj€ÛºÕŸ€Éj€˜–€±€Œa€I> 5j0ÔUsg€Œa€s÷€g€[€s÷€˜–€˜–€s÷€7777BUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@,0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@UUUUUUUUUUUUQUUUUUUUUUUUUUTð `€,€˜–€¤Ë€˜–€Œa€$Ÿjj±²}ú—ú—€= I>½5YUÌ1-çïÕŸ€±€¤Ë€¤Ë€¤Ë€½5€çïÛºÉj€˜–€˜–€s÷€0Ô$Ÿ= Us= Œa€s÷€€,€Œa€˜–€˜–€˜–€±€½5€Éj€Éj€Œa€ÛºÛºÕŸ€½5€˜–€[€= $ŸUs= 0Ô 5= 7 €= €,€Œa€I>$ŸUs€,€¤ËY=b Žô$Ûº¤Ë€¤Ë€$Ÿú—€…€Œa€…€0Ô¤Ë1-1-ÕŸ€½5€Éj€½5€±€çï$øUÌäˀ±€Ûºçï[€= 5s€Œa€Œa‚7 €= ±€çïÛº˜–€¤Ë€˜–€Œa€Œa€¤Ë€±€˜–€¤Ë€ÉjYÉj€½5 Ž Ž+Ä|7777BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@D0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUQUUUUPUUUUUUUUUUUUð aú—€…€…€…‚±²|I>¤Ë€¤Ë€s÷€g€g€€,€Œa€€,€Œa€€,€±€Œa€½5€Éj€Œa€I>0Ô±²}€…s€Œa€…s‚7 €g€[€= UsUsg€Œa€I>= 0Ôj 5 5+Ä|j±²~7 € 5g€çïô$Ûº Žô$±€±€ÕŸ€ô$YÃÃŒa€$Ÿj7 ‚7 ƒ+Ä|0Ô+Ä|€,€ô$h[æ=b$øtP[æUÌhtPÕø‚V%t©‚ht‚1†ÉØï[æÃYYÕŸ€¤Ë1-UÌtPtPtPÃ$ø$ø Ž$øI—=b=b ŽYYÕŸ€±€g€ 5ú—€+Ä|Œa€¤Ë€Ûºçï7777BUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@X0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥µÏ„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUAUUUUPUUUUUUUUEUUUð `±€±€½5€Éj€Éj€ÛºÕŸ€çï Ž=b½5€½5€½5€Éj€ÛºÛºÕŸ€Éj€±€±€ÉjY$ø ŽY±€˜–€Œa€˜–€€,€±€ÕŸ€¤Ë€½5€Éj€ÕŸ€ÕŸ€Ûºô$çï$ŸŒas€UsÉj€ô$ô$çï±€Œa€g€g€˜–€¤Ë Žçï±€˜–€€,€[€$Ÿ±²~±²}€…ss€Œa‚7 ‚±²|= I>$Ÿ0Ô0Ô7 ‚±²~7 ‚±²+Ä| 5UsI>±€g€= j 5I>0Ôs÷€ô$htP˜ï˜ï€çïŒa€g€€,€±€¤Ë€€,€Ûº±€¤Ë€˜–€Ûº˜–€0ÔI> 5+Ä| 5Us½5I—h[æ=bÃUsUsŒa€€,€½5Y7777BUFRbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!²LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎBUUUUUU]kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½ï½ï{Þ÷½ï{Þ÷½ï{ÞðB‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð `çïÛºUs$Ÿ0ÔI>¤Ë€˜–€UsŒa€çï Ž=b=bŒº½ŽèHâ-$ø[怅¥$½Žâ-˜ï€…˜ï˜ï€…[æhI—ÃY[æ˜ïÕøÕøèH±YÕøÕøÕø±YtP˜ïâ-¥$±YŒºŒºŒº±YÉ çÕø˜ïhhh€…ÕøèHô}²¥$ÕøÕøÉÃèH²ô}½ŽÉ ç²Õø€…¥$ŒºtP=bçïÛºÛºg€[€s÷€g€= I>j0Ôs÷€˜–€€,€Us= I>g€½5€Us$ŸUs= 0Ô$Ÿg€¤ËYçïs÷€¤Ë€€,€s÷€˜–€½5=b¥$±Y€…€…h1- ŽÃÛº7777BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ2ÇBT¸Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUTUUUUUUð `±€UsUsÕŸ€Éj€çï Ž ŽÕŸ=b1- Žô$ô$à ŽY$øYYô$$øUÌ%Q1†1†½Ž€…tP€ô$ÃUÌ½Ž¥$±Y€…=bhhÃ Ž ŽYYçïÛºçï[ætP˜ïUÌtPI—UÌY1-UÌU̘ï¥$€…Œº˜ïtP=b=bYÕŸ€±€ÕŸ€ô$=b½ŽÉÃI—1-1-1-1-$øI—[挺€…[ætPÃÕŸ€¤Ë€˜–€= +Ä+Ä|[€½5ÃÕŸ€€,€€,€g€Œa€Œa€Éj€Éj€Ûº¤Ë€¤Ë€€,€UsUsj+Ä}ú—s€…ú—€ 5 5s÷€Éj€˜–€Œa€UsI>I>0Ô[€7777±YBUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀0I$’I$’I$”’I$’I$’I&Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„ÆS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUU@UUUUUUUUPUUUUTUUUUUUð `¤ËY$ø1-htPI—s÷€Us€,€[€j±²+Ä|0ÔI>$Ÿ 5$Ÿ0Ô0Ôjjs÷€Éj€Œa€˜–€g€s÷€€,€s÷€$Ÿj±²}€…s‚7 €[€±€çïÛºÛºô$çïÕŸ€ÕŸ€ô$Y ŽÃô$ÕŸ€¤Ë€Œa€g€I> 5$Ÿs÷€çï1-$øÃYÉj€Ûº½5€Œa€Us$Ÿ+Ä~7 ‚7 ú—‚7 €= ˜–€¤Ë€Œa€g€s÷€g€s÷€¤Ë€±€ô$$øÛºs÷€Ûºçï½5€g€= +Ä~±²~7 ƒ+Ä|g€՟$ø[æ€ÕŸ€¤Ë€Œa€¤Ë€½5€Œa€¤Ë$ø=bà ŽÛº±€Œa€g€€,€g€I>I>= Œa€7777±YBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀40I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’[m¶Ûm¶ÐŠt%LkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUU@UUUUUUUUUUUUUUð aY€…tPh€ô$Ãçï1-$ø±YèH ç¥$€…UÌI—YÉj€Éj€€,€Usg€±I—UÌUÌ1-çïçïÃà ŽUÌ€…˜ï¥$±Yh[æ1-ô$Ûº¤Ë€¤Ë€Œa€Us±€ô$Y$ø=b½5€€,€çïÃYÕŸI—YY½5€½5€¤Ë€j7 ú—‚7 ú—‚7 €j[€½5€Éj€¤Ë€€,€˜–€˜–€˜–€s÷€±€çïÉj€Éj€Ûºô$YÉj€¤Ë€= j= I>Us ŽI—[æ=bÛºUÌô$çï1-UÌŒº½Žâ-â-˜ïUÌUÌ1- ŽÛº¤Ë€Us€,€çïÃ=b Ž$øÉj€ÛºÉj€ÛºÛº Ž7777±YBUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀H0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUTUUUUUUUUUUTUUUUU@UUUUUð a[æ[æ[æ=bI— Ž ŽYY±€˜–€˜–€˜–€½5€ô$1-ô$Éj€ÕŸ€çïÛº±€çïô$1-1-[æ1-çïÛº˜–€= jj 5+Ä|jg€¤Ë€Ûº½5€±€½5€ÕŸ€çïYY=b ŽÃçïÕŸ€±€€,€$Ÿ±²~±²~±²~±²|Us[€[€€,€€,€±€Œa€€,€€,€= = ÕŸUÌtP=b±€€,€g€0Ô0ÔUs0Ôú—€ 5$Ÿj$Ÿj= $Ÿ0ÔÛºYÃUÌI—Éj€çïUsj7 s‚7 €$Ÿg€՟ ŽYô$ÛºçïÉj€˜–€Éj€¤Ë€ÕŸ€±€±€½5€ÕŸ€Éj€±€Ûº7777±YBUFR&bÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΂UU[Þ÷½ï{Þ÷½ï{Þ÷½ñŒcÆ1ŒcÆ1ŒcÆ3œç9Îsœç9Îsœç9Îu­kZÖµ­kZÖµ­kZÖ·½ï{Þ÷½ï{Þ÷½ï{ÞÀŠ …1Е1®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUUUUUUUUUTUUUUTUUUUUUUýà`$Ÿ 5| 5g€ۺYÃÃô$Éj€Éj€çïÉj€çïO±¥$¥$€…O±1-ÃYô$Éj€±€½5€½5Y[æÉÂ%QÜ[æ€çï=bÛºs÷€ÉjO±½ŽÕøŒºhO±ý5€ú>‚+k‚+k‚¥}|jOX€Ï…Éj€½5€ÛºŒa€OX€[€¤Ë€˜–€±€½5€Ï…¤Ë€s÷€I>j 5 5~¥}|€,€€,€€,ƒ|I>s÷€OX€0Ô$Ÿ$Ÿ 5 5I>I>= g€= 0Ô~+ktP€ú>€ú>tP€€€€,îb€0Ô= j0ÔOX€OX€s÷€OX€OX€s÷€€,€Œa€˜–€Ûº Žs÷€OX€0Ô+ktPtP€ú>îb€[€j7777º‚BUFRöbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀ@"""""%UUUUffffffffffffwwwwwwwwwwwwˆˆˆˆˆˆˆˆˆˆ€Š¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥¾”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS c\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðEUUPUUUUTUUUU@UUUUDUUUUUUUUUð `j+Ä| 5$Ÿj 5Œa ŽÃYI>0Ô$Ÿ±²~±²}ú—ú—ú—€j€,€ô$=bÃYÃÛº$ø$øô$YYh1-ÛºŒa€= 57 ‚7 ‚7 ‚±²+Ä|[€½5€ÛºÉj€g€gÂh€…€çïÛº±€s÷€[€Usj 5+Ä~7 ú—‚7 €jI>[€s÷€I>Us= = 0ÔUs$Ÿg€g€s÷€[€0Ô0Ô$Ÿ 5 5+Ä|7 ‚±²|jjI>= $Ÿ 50Ô€,€Œa€½5€çïI— Ž ŽÛºô$ô$YÃŒº‚€Þ[怽5€½5€¤Ë€ÕŸ€ÕŸ$øŒºÉÃh€ô$ Ž7777€ÛBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀ$0I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»m¶Û`‹pC!Lv5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTUUUUUUUUUUUUUUUUUUUUUUUUð `˜–€Œa€±€ÕŸ€Éj€Éj€½5€Ûºô$ô$½5€¤Ë€½5€Ûº ŽÉj€±€±€½5€ÕŸ€˜–€Us0Ô+Ä}ú—ú—€ 5I>±€½5€½5€˜–€˜–€Œa€Œa€Œa€˜–€ÕŸÃI— ŽÕŸ€ÛºÃY˜–€˜–€½5€[€[€¤Ë[æÉÃÕøUÌ1-1-ô$ô$ô$çïI—=bI—€…[æI— Ž¤Ë€Us0Ô0Ô 5I>s÷$øŒº¥$Œº$ø1-Ã=b1-=btP¥$Œºh[ætP˜ï€…Œº=b$øÃô$½5€ÕŸ€ÕŸ€çïÉj€Ûº¤Ë€Éj€Éj€½5€½5€Éj€ÛºçïÕŸ€ÕŸÃ1-$øç€j+Ä}ú—‚7 ‚7 € 50Ô7777€BUFR¶bÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀ<0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@&% \0Ô ŽzÄnè ëýà3á@ŒaUÌ28ÈB@ 9ûÀReÀOX€ªæ¸ØýàI>†GY† ²&\ ‰hã`*¹€g€ÃPI—²Ä´¸Ø q°Ö \À$ŸI> Žc øPýà6î€zÛº† «˜&\ ‰h\À)2àa¨Ûº† ²&\ q°ð 3á@€,€·Y ŽW0 q°!‘À= g€ۺ·t«˜Ä´ øPã`6G[æ‚Ðdp¾hýà ®`\ÀŒaÃÜl?xû1—PZàs÷€Ï…n6ÏÞ&\ ‰h™p*¹€’|h‚ndÆO€$Ÿ9ûÀg€ç1†d q°w@I>•‰AYUÌnè?x±(ýàF0À†G Ž77771BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀP0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÛnÛ`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶6”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUU@UUUUUUUUEUUUUUUUUUUUUð a=b ŽÃ ŽÃô$ô$ÕŸ€½5€¤Ë€±€ÕŸ€ÛºÕŸ€ÕŸ€€,€€,€s÷€Éj€Éj€çïà ŽI—1-Ã Ž¤Ë€I>g€¤Ë€I>Œassú—‚7 €…€ 57 €0Ô[€Œa€˜–€Œa€€,€ÕŸ˜ï˜ï=b$ø$ø1-Y˜–€s÷€¤Ë€ÉjYI—[æ=b ŽŒa€s÷€I>€,€Œa€ÕŸY¤Ë€¤Ë€˜–€= 0Ô+Ä|$ŸjUs€,€g€¤Ë€±€ÛºÛº±€½5€±€ÕŸ€ô$Y ŽÛº$øY ŽçïÕŸ€¤Ë€s÷€I>0Ô= I>€,€Ûº[æ[æ=bÛºÛºô$ÕŸ$ø ŽÛº˜–€˜–€˜–€Œa€Œa€I>Us= 0Ô 57777€BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀh0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUEUUUUUUUUð ` 5I>€,€¤Ë€±€s÷€Œa€Œa€€,€¤Ë€ÕŸ€ÉjY ŽÃY½5€±€g€€,€€,€I> 5 5Us€,YÛºçïÕŸ€¤Ë€½5€±€¤Ë€˜–€¤Ë€Ûº1-ÕŸ ŽçïÉj€s÷€s÷€s÷€ 5 5$Ÿ$ŸŒa€¤Ë€¤Ë€±€Éj€Ûºçï¤Ë€ÛºçïÕŸ€çïÛºô$çï1-Yçï±€˜–€s÷€€,€Éj€Éj€çïYg€s÷€½5€I>0Ô= [€s÷€˜–€±€±€Éj€Éj€±€ô$[€ 5+Ä|Us½5I—$øY½5€˜–€çïÛº½5€ÕŸ€½5€ÕŸ€ÛºçïÃÃô$Éj€[€0Ô= = Œa€çï1-I—€…â-˜ï$øÉj€ÕŸ€7777€BUFR&bÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÂUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{ÀB„!B„!B„"„!B„!B„!cÆ1ŒcÆ1ŒcÆ1Œ„!B„!B„!@Š×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUTPUUUUUUUUUUUUð `Ûº¤Ë€s÷€[€±Y˜–€$Ÿ0Ôj±²+Ä~±²~7 €…ƒ+Ä|j= ˜–€[€g€g€I>I>g€s÷€Éj€ÕŸ€çï€,€I>Us[€Us$Ÿ 5j 5jg€¤Ë€¤Ë€Œa€˜–€˜–€g€g€[€0Ô= ±€çï=b½5€€,€I>$Ÿ±²| 5+Ä+Ä|ŒaUÌI—Ûº˜–€˜–€Œa€€,€Œa€¤Ë€Éj€ô$±€[€Usú—€Œa€Œa€…€Œa€Œa€Œa€…€= ˜–€Œa€g€I>I>I>= j0Ô0Ô0Ô= 0Ôj 5 5j+Ä~7 ‚±²+Ä+Ä|j0Ô= [€= I>0Ô˜–€[€˜–Y1-Ã1- Ž7777º‚BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ý¶Û`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡,kŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUPUUUTUUUUUð `çïI> 5 50ÔŒaYYYÕŸ ŽÕŸ€Éj=b€,€€,€˜–€½5€½5€½5€0ÔŒº‚=»½ŽhhI— Ž ŽYÕŸÃ1- ŽÕŸ€±€Éj€Éj€s÷€s÷€[€±€±€½5€ÕŸ Ž1-1-=bý5€g€˜–€ô$=b1-tPh$øÕŸ$øÛº$øÉj€Us= Us€,€UsjI>j7 ‚±²}ú—ƒ+Ä|$ŸUsUs= [€s÷€I>[€g€Œa€˜–€= 0Ô$Ÿ0Ôj$Ÿ±²+Ä}ú—‚±²| 5[€ÕŸ€çïÕŸ€Éj€Éj€Ûº±€¤Ë€¤Ë€˜–€½5€˜–€Œa€€,€¤Ë€˜–€g€= +Ä+Ä}€…€…‚7 €jI>Œa€7777 ‚BUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î,0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUU@UUUUUUUUUUUUUTUUUUUUUUUð `Œa€˜–€¤Ë€Œa€€,€€,€s÷€€,€[€UsI>˜–€Éj€s÷€€,€Us= Us0Ô±²|jj+Ä~±²+Ä~±²~±²+Ä| 5$Ÿ0Ô˜–€¤Ë€˜–€€,€€,€= $Ÿ 5 5 5j0Ôjj 5 5j 5$Ÿ0Ô0ÔUsUs0Ô0Ô0ÔUss÷€$Ÿ$Ÿ0Ô˜–€½5€Œa€€,€s÷€[€Œa€ÉjÃŒa€½5€½5€Éj€€,€jUs7 sú—ú—‚±²|j˜–1-ÃYçïÛº½5€ÕŸ€Ûºçïçïçïô$ÃhI—=b½5€Us= [€±€çïYÛº$øh$ø$øçïÉj€¤Ë€±€Éj€ÕŸ€7777 ‚BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶à‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„­sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUTUUUUUTUUUUUUUUUUUUUUUUð a=bYYUÌ$øçï Žg€j 57 ‚±²+Ä|Us˜–€ÕŸ€ÕŸ€±€½5€Éj€Ûº½5€Éj€½5€Ûº½5€Œa€Us[€€,€±€Œa€I>= 5±²|UsÛºô$Ãçï Ž=bÉjÃI— Ž$øô$Ã[æUÌ$øÛºs÷€I>Usj±²~7 €0Ô= j 5jj 5$ŸI>g€s÷€ 5 5j0ÔI>g€[€s÷€Us0Ô€,€€,€Œa€ÕŸ€ô$Ãçïçï½5€Éj€½5€I>Œa€çïçï±$øÉÃ½Ž½ŽhI—1-Yçïçï$ø=bUÌUÌçn€ÕŸ€ÕŸ€ÛºÉj€s÷€€,€˜–€¤Ë€Œa€[€[€s÷€[€7777 ‚BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎX0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUPUAUUUUýà`I>= I>0Ô[€¤Ë€Ï… ŽY˜–€s÷€±€Ï…ô$½5€Œa€s÷€OX€s÷€ô$1-$ø˜–€js÷€$Ÿ0ÔÛº1-O±Ã ŽÏ…˜–€¤Ë€Ûºçï[€€,€¤Ë€½5YÃYô$Ûº±€g€OX€OX€$Ÿg€±€Ûº$øÛºYçïÛºçïÉj€Œa€s÷€g€[€€,€˜–€Ûº½5€s÷€¤Ë€€,€ 5 5$Ÿ= Œa€ÉjÃÛºOX€[€I>[€$Ÿ$Ÿ[€[€= $ŸÏ…Ï…ÛºÃs÷€¤Ë€˜–€j+k€ú>‚+k‚¥}~¥}~¥}|jI>I> 5+kƒ| 50ÔOX€¤Ë€ŒaO±1-$ø½5€˜–€s÷€g€Œa€½5€…h1-7777 ‚BUFR&bÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎUUUUUUUUUU]kZÖµ­kZÖµ½ï{Þ÷½ï{Þ÷½ï{Þ÷Îsœç9Îsœç9Îsœç9Þ÷½ï{Þ÷½ï{Þ÷½ïz„!B„!BŠ•-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUTUUUUPUUUUUUUUUð `½5€½5€Œa€ÕŸ€Éj€½5€½5€½5€Éj€Œa€¤Ë€€,YÉjYô$Ãô$ô$ÕŸ€ô$Ãô$Éj€ÕŸ€¤Ë€±€˜–€±€€,€Éj€ÛºçïÛº1-=bÛºs÷€0Ô= [€= s÷€ÛºÛº½5€€,€s÷€g€= $Ÿ0Ô= Us= g€[€g€[€s÷€s÷€$Ÿ7 ‚±²}€…s€…€Us±€Œa€Us[€s÷€s÷€€,€¤Ë€˜–€¤Ë€€,€$Ÿj 5 5 5±²}ú—ƒ+Ä|$Ÿ 5[€çï$øYô$ÕŸ€±€¤Ë€Éj€½5€çï ŽÃô$çïÛº€,€[€0Ô 5$ŸI>¤Ë€Éj€Œa€s÷€s÷€g€Us[€[€s÷€= €,€7777º‚BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$–Ûm¶Ûm¶Ûm»`‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Ж5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUP@EUUUUUUUEUUUUPUUUUUUUUTð `g€I>€,€±€Us€,ƒ+Ä+Ä~±²}€…€Œa€…s€…‚±²+Ä|ú—‚±²+Ä|+Ä|±²~±²|$Ÿ±€±€çïô$YY½5€Éj€±€Œa€[€s÷€ 5j$ŸI>j$Ÿ0Ô$Ÿ0Ô$Ÿ0Ôg€ô$çï¤Ë€Œa€g€$Ÿ±²| 5I>Yô$Ûº½5€˜–€Œa€Œa€s÷€s÷€Us[€±€ô$ô$ÕŸ€Éj€ÕŸ€jú—s‚7 sú—€= ¤Ë€½5€s÷€0ÔI>0Ô[€±€½5€Œa€s÷€Us€,€I>jú—s€…€…sú—€s÷€€,€[€[€g€UsUsI>I>UsUs[€I>I>[€[€Usj±²|7777€BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@ 0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUT@UUUUUUUUUUð `j= [€g€¤Ë€Œa€€,€g€Usg€±€ô$1-=b[æ$ø$ø=bÉjÃYÛº=bYÉj€ÛºŒa€½5YÕŸ€˜–€Œa€€,€[€g€UsUs$ŸI>I>€,€€,€½5€€,€±€¤Ë€€,€0Ô7 €…ƒ+Ä|±²~±²| 50ÔI>Us$Ÿ±²~7 ‚7 ú—‚±²|+Ä~7 s€O€Os€Œas€…€$Ÿs÷€Œa€¤Ë€I>I>UsI>= = I>Œa€= $Ÿ+Ä~±²}ú—€…€Œasú—ssú—€I>±€çïÕŸ€±€Éj€ÕŸ€ÛºÛºY ŽÃYÃô$ÃY½5 ŽçïŒa€g€ 5= I>±€ÕŸ€ÛºÛºÕŸ€7777€BUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@40’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUEPð `½5€Œa€˜–€±€½5€Éj€ÕŸ€½5€Éj€¤Ë€€,€Us= 0Ô[€$Ÿ$Ÿ$Ÿ€,€Œa€¤Ë€Œa€€,€Œa€€,€çïô$ÉjÃ$øg€I>g€½5€±€= 50Ô 5 50ÔŒa€ÕŸYçïô$çïg€0Ôj= = I>$Ÿ$ŸI>½5€±€ÛºŒa€g€€,€Us0Ôj[€˜–€Éj€çïÛº±€I> 5 5±²|±²~±²|j= [€$Ÿ 5 5I>0Ô 5 5 5+Ä}€…ú—ú—ú—ú—ú—ú—ú—ú—ú—‚±²+Ä|$Ÿ 5jj$Ÿ0Ôg€ۺ[怅€ÕŸ€jj+Ä| 5$Ÿ 5ú—‚±²|7777€BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@H0’I$’I$’I)$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT·>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUTUUUUUUUUU@UUUUUUUUUUU@ð `= = s÷ Ž ç½5€±€Éjà Žh‚ ç€Þ‚ôÖh€Ûº$Ÿj$Ÿ= 0Ô0Ôs÷€$Ÿ 5+Ä}ú—€…ƒ+Ä}ú—ú—ƒ+Ä|g Ž ŽÛºY ŽÛº€,€Ûºô$çïÕŸ Žô$I>$Ÿj0ÔŒa€s÷€g€s÷€˜–€Ûº½5$øÕŸ€€,€€,€Œa€s÷€[€€,€Œa€˜–€€,€0ÔUsI>+Ä~±²}€…ƒ+Ä|$ŸI>± ŽÕŸ€€, Ž ŽÉj€çïô$1-ŒºŒº[æ1-ô$Éj€˜–€˜–€Œa€[€Us$Ÿ 5$Ÿg€Us€,€g€Œa€½5€±€˜–€çïÉj€½5€¤Ë€€,€g€€,€¤Ë€˜–€€,€$Ÿ$Ÿ±²}ú—€…€7777€BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@`0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUPUUUUPUUUUUUUUUUQUUUð a€…‚7 ‚7 ‚±²|j0Ô 5j 5$Ÿ 50Ô= jjj7 ‚±²}€…s€…€…ú—‚±²~±²~±²| 5j 5 5 5[€g€0Ô 5±²~7 ú—ú—‚7 € 5g€Œa€¤Ë€Œa€˜–€ÕŸ€±€Ûº½5€˜–€s÷€Usg€0Ô0ÔI>j+Ä~±²|jI>Œa€˜–€±€Œa€[€g€UsUs[€0Ôs÷Y=bô$¤Ë€€,€€,€€,€Us0Ôj+Ä+Ä}ú—‚±²|Us€,€Œa€€,€Œa€s÷€= g€½5€ÕŸ€Éj ޽5€¤ËYg€0Ô0Ô+Ä| 5 5€,€¤Ë€˜–€[€= $Ÿ[€¤Ë€7777€BUFR&bÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎBUUUUUUUUUUUUUUUUU^sœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷¾÷½ï{Þ÷½ï{Þ÷½ï{ÀB„!B„!B„"„!B„!B„ Š×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS c\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUD@UUUUUUUUUUUUUUUUUUð `±€= ˜–€ÕŸ€çïçïYh‚ ç²ÉÃÉÃŒºI—ÃÛº˜–€½5€g€˜–€ÕŸ€s÷€Us0Ô$Ÿ0Ô0Ô±²|+Ä|+Ä~±²}€…‚7 €…s€Œa€…‚7 €j= I>I>= UsI>I>= [€˜–€¤Ë€ÉjY Žçïs÷€= 0Ô$ŸUsg€˜–€ÕŸÃÕŸ€€,€[€s÷€I>Œa€jUs˜–€Œa€€,€€,€±€Éj€g€I> 5+Ä|€…€…ú—€$ŸI>[€g€s÷€s÷€ÕŸ€çïÕŸ€˜–€[€Us= = Ûº ŽÃÉj€j±²~7 ‚±²|s÷Y=bô$±€Œa€±€ô$$ø ŽY[€I>= I>j7777º‚BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀ 0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUQUUUUUUUUUUUTUUQEUUUUð `jj 50ÔI>g€g€UsŒa€g€g€= j+Ä|j$Ÿs÷€= $Ÿg€±€gƒ+Ä}ú—‚7 s€…‚7 €$Ÿ0Ôjj$Ÿ0Ô$ŸUs0Ô$Ÿ0ÔUs$Ÿj$ŸUsI>= j 5±²| 5+Ä|$Ÿ 50Ô= I>¤Ë€ô$çïÕŸ€Œa€˜–€€,€˜–€çï± Žô$€,€= jú—ú—ú—€0Ô$Ÿjj= = 5j 5 5±²|±²|0Ô±²|±²+Ä+Ä|0ÔUsŒa€½5€½5€˜–€Œa€g€Œa€˜–€Œa€s÷€˜–€s÷€[€˜–€€,€0Ôj+Ä}s‚7 ú—ú—‚7 ƒ+Ä|$Ÿ7777 ‚BUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀$0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTUUUUU@UUUUUUUUUUUUUUUUEUUð `Us= $Ÿ0Ô$Ÿj 5jj 5+Ä|[€j= ±²}ú—‚±²~±²}€…€ 5$ŸŒa€±€˜–€[€g€0Ô= Us±€s÷€¤Ë€½5€˜–€½5€ÕŸ€±€g€ 57 ƒ+Ä}ú—ú—€ 5I>I>Œa€s÷€¤Ë€Éj€½5€¤Ë€€,€˜–€¤Ë€±€˜–€Œa€ÉjÃô$ÕŸ€¤Ë€[€I>0Ô+Ä|0ÔŒa€½5€¤Ë€Œa€s÷€˜–€s÷€Œa€˜–€€,€[€€,€¤Ë€½5€ÛºYI—$øÃÛº[€Œa€Œa€$Ÿ0Ô$Ÿ$Ÿ$Ÿ0Ô0Ô$ŸI>g€I>= Us[€Usg€¤Ë€Éj€±€¤Ë€€,€[€0Ô±²|0Ô0ÔjI>Œa€˜–€[€[€˜–€7777 ‚BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀80I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Ûm¶Ûm¶Ûm·`ŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!N„©l|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUDUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `Éj€çïÛºs÷€I>Œa€˜–€Usj±²|±²|0Ô˜–€çïçïÛº=b1-ô$Ûº½5€ÛºY[æ Ž½5€½5€Éj€Éj€ÕŸ€€,€I>I>0Ô[€g€¤Ë€Éj€ô$ÕŸ€ÕŸ€€,€¤Ë€çïô$ÛºÛºçïÕŸ€Œa€¤Ë$ø±Yh€˜–€$Ÿg€[€Œa€€,€ÛºÃ Ž ŽÕŸ€ÕŸ€Œa€Œa€s÷€€,€Éj€¤Ë€€,€€,€˜–€˜–€çï¤Ë€˜–€I>0Ôj 50Ôg€Éj€¤Ë€˜–€s÷€Œa€g€€,€s÷€€,€Œa€Œa€¤Ë€€,€s÷€[€= 0Ôjj 5jUss÷€Us0Ô0Ô0Ô0ÔUsUs±€ÕŸ€€,€s÷€ÕŸ€˜–€¤Ë€¤Ë€¤Ë€s÷€Ûº7777 ‚BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀P0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUEPTUUUUTUUUUUUUUUUUUð `˜–€jI>ÕŸ€ÛºÉjI—=b=b[æ€ô$g€= ±²|jj+Ä~±²~±²~±²+Ä+Ä~±²|g€Us 5±²~7 ú—‚7 ‚7 ƒ+Ä~±²+Ä+Ä~±²~7 ‚±²~±²~±²+Ä|$Ÿ0Ô$Ÿ0Ô= +Ä+Ä| 5$Ÿ$Ÿj$Ÿ= 0Ô0Ô= [€$Ÿ= Usg€UsI>gÂ Ž˜–€Éj€g€±²~7 ‚±²|[€˜–€s÷€I>= $Ÿ= = = = [€€,€½5€Éj€½5€¤Ë€s÷€[€0Ô±²+Ä|0Ôg€Œa€s÷€s÷€Uss÷€€,€˜–€˜–€Œa€Œa€s÷€s÷€± ޱ€ÕŸ€±€s÷€I>Us€,€g€Uss÷€g€g€[€7777 ‚BUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀d0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUAUUUUUUUUUUUð `0ÔI>= Us€,€g€€,€±=b$ø ŽÕŸ€˜–€j 50Ô 5 50Ô€,€½5€Œa€˜–€˜–€˜–€˜–€¤Ë€Œa€±€½5€¤Ë€½5€˜–€˜–€g€0Ôj7 ‚±²|j$Ÿ[€= j[€˜–€˜–€g€g€s÷€g€g€g€Éj€±€˜–€I>I>€,€Œa€[€0Ôj 5 5±²~±²~±²~±²|j+Ä~±²|+Ä+Ä~±²+Ä|= = 57 ‚7 ‚±²~±²|$ŸUsg€€,€€,€s÷€Usg€s÷€g€g€¤Ë€€,€g€[€Éj€˜–€[€$Ÿ[€€,€€,€[€s÷€¤Ë€±€Ûº¤Ë€½5€½5€½5€ÕŸ€ÕŸ€½5€±€s÷€¤Ë€7777 ‚BUFR&bÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΂UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^÷ B„!B„!B„"„!B„!B„!CÆ1ŒcÆ1ŒcÆ1Œd!B„!B„!B…)JP‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUP@UUUUUUUUUUUUUUUUUTUUPð `Œa€±€Œa€Us¤Ë€˜–€UsI>¤Ë€±Y±€[€˜–€½5€€,€UsUsg€˜–€s÷€±€g€0Ô= $Ÿ+Ä~7 € 5±²}ú—ƒ+Ä|I>€,€±€±€½5€Œa€g€˜–€˜–€Éj€½5€Ûº¤Ë€€,€Œa€Œa€g€€,€0Ôs÷€çïI>I>g€çïI—ô$çïÃçïçïà ŽÕŸ€Ûº½5€±€˜–€¤Ë€ÛºŒa€Œa€[€j= 0Ô$Ÿ$Ÿ$Ÿ0ÔUsUs[€g€[€g€s÷€[€g€Us[€˜–€s÷€UsI>0Ô 5I>$Ÿ7 €0ÔUsj±²+Ä|+Ä~±²+Ä+Ä| 5= = j+Ä}€…‚±²}ss‚7 €7777º‚BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀ0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUUUUQUUUUTUUUUUUUUUUTTð `$ŸŒa€±€¤Ë€Œa€Œa€g€¤Ë€½5€€,€= 5j 5 5+Ä}ú—ú—ssú—€…ú—‚7 €j¤Ë€çï½5€½5€½5€˜–€±€˜–€Œa€g€Œa€[€I>Us[€g€g€I>= j 5±²| 50Ôs÷€˜–€Œa€Œa€s÷€[€= UsI>s÷€ÕŸ€˜–€[€Us= 0Ô= I>+Ä+Ä}ú—ú—€= 0ÔI>$Ÿ0Ô0ÔUss÷€s÷€˜–€˜–€Œa€g€g€[€s÷€€,€˜–€˜–€€,€g€I>I>I>±€ô$ ŽÛº¤Ë€˜–€€,€€,€€,€€,€±€ÕŸ€s÷€I>Us0Ô= I>j±²~±²}ú—€…‚±²~±²|j 5+Ä|$Ÿ$Ÿ+Ä|7777Ä|BUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀ,0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS c\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUEUUUEUUUUUUUUUUUð ` 50ÔŒa€¤Ë€€,€I>$Ÿ$ŸI>g€I>+Ä~7 €…€…‚7 €$Ÿ 5 5j+Ä~±²}ú—€ú—‚7 ú—ú—ú—ú—€…ú—‚7 ú—ú—€ 5$Ÿj0Ô0Ô0ÔUs$Ÿ 5 5 5 5+Ä| 5+Ä~±²}ú—s€…ss€…ƒ+Ä|j[€I>j= $Ÿ= I>I>UsI>Us0ÔjI> 5±²|0Ô= I>[€[€UsUs= 0Ô[€s÷€€,€s÷€= I>˜–€Œa€€,€Us= $Ÿ0Ô€,€s÷€s÷€s÷€˜–€Ûºs÷€˜–€€,€€,€½5€€,€[€±€Ûºô$ÕŸÃI—ô$Y7777Ä|BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀ@0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUTQPUUUUUUUUPUUUUUUUUU@ð `Ûº€,€I>jjI>Œa€½5€½5€˜–€¤Ë€g€[€I>0Ô$Ÿ0Ô$Ÿ 5 5jjUsI>[€0Ô= +Ä+Ä| 5$Ÿj+Ä| 5 5+Ä+Ä| 5j 5jI>0Ôs÷€±€UsÉj€Œa€I>$ŸI>I>j= jI>= 0Ô0Ôj0Ô= I>Uss÷€Œa€g€j±²~±²~±²|j[€s÷€Œa€g€UsUsUsI>€,€s÷€±€€,€0Ô€,€˜–€½5€Éj€±€Œa€I>$Ÿ 5ú—ú—€I>g€[€Us= 0Ôj$Ÿ= I>0Ôg€I>j$Ÿ[€Us[€$Ÿú—‚±²~7 ‚7 € 50ÔI>7777Ä|BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀX0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUU@UUUUUUUUUUUUUUUUTUUð `s÷€˜–€g€s÷€[€˜–€˜–€g€€,€ÕŸ€ÕŸ€= = = [€0Ô 57 ‚7 €…‚7 €= €,€½5€Œa€= = I>= I>I>€,€[€Us0ÔUs0Ô= = 5+Ä+Ä~±²+Ä|= s÷€€,€Éj€s÷€[€UsUsUsg€±€[€€,€€,€[€€,€½5€ÕŸ€ÛºYô$ÛºÉj€˜–€˜–€¤Ë€½5€€,€I>Us= UsUss÷€[€s÷€½5€±€ÕŸ€±1-â-½ŽŒº[æ ŽÕŸ€Œa€I>Us€,€g€˜–€Us$Ÿ= = $ŸUs= s÷€€,€s÷€Œa ŽÉj€±€¤Ë€[€ 5±²+Ä|g€˜–€½5€½5€g€UsI>Us˜–€¤Ë€7777Ä|BUFR&bÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÂUUUUUU]kZÖµ­o{Þ÷½ï{Þ÷½ï{Þ÷¾sœç9Îsœç9Îsœç9Î÷½ï{Þ÷½ï{Þ÷½ï{ß{Þ÷½ï{Þ÷½ï{Þ÷½àŠøFS¥mpC!Lt%LkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUEUUUUTUUUUUTUUUUUUUUUUUPPð `˜–€¤Ë€UsUs€,€½5€s÷€$Ÿ+Ä|[€[€0Ô= €,€˜–€Œa€s÷€€,€€,€Œa€€,€¤Ë€ÛºYÛºÕŸ€çïÕŸ€Éj€$Ÿ±²|I>Œa€UsI>UsI>g€Œa€g€Usg€[€I>g€g€¤Ë€ô$Éj€€,€g€g€s÷€= +Ä~±²| 5 50ÔUsUs= = j= = UsŒa€€,€g€s÷€g€[€UsUs$Ÿ 5+Ä| 57 ú—‚±²|jUsŒa€g€€,€Œa€Œa€Œa€Œa€½5€¤Ë€€,€€,€±€çïÕŸ€ô$ÛºÛº˜–€¤Ë€€,€€,€I>0Ô 5= I>$Ÿ+Ä~±²~7 ƒ+Ä| 5±²| 5±²+Ä+Ä| 57 €7777º‚BUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUUUUUUTUUUUUUUUUUUUUUUUUð b±²| 5 5j7 €j+Ä}€…€…‚7 € 50Ôj+Ä|g€0Ôj= Us0ÔUs$Ÿ$Ÿg€€,€0Ô= ÕŸYY¤Ë€g€±€€,€[€UsUs€,€Œa€[€= = 5$Ÿ±²+Ä|j±²+Ä| 5g€€,€g€I>0Ô= j$Ÿ0Ô$Ÿ= [€I>I>I>0Ô$Ÿ 5+Ä| 5±²~±²+Ä| 5= g€[€[€UsUsI>[€Usg€¤Ë€Œa€s÷€Œa€Éj€Éj€ô$I>0ÔŒa€Œa€[€I>[€g€s÷€s÷€€,€UsUs[€[€[€[€g€[€Usg€s÷€€,€[€0ÔI>[€s÷€Œa€Œa€€,€g€s÷€7777ÔBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„ª2+k€" c¡*[çÂ2+k€" c¡+c\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUPUUUUUUUUUUUUUUýà`±€Œa€¤Ë€˜–€Œa€I>g€s÷€€,€s÷€[€ÉjO±=bŒa€0Ôj$Ÿ[€Œa€s÷€[€g€g€OX€OX€OX€= I>OX€= I>[€Œa€= j}îbƒ}tP€€€€,€ú>îbtP‚+k‚¥}}îb€ú>€ú>€€,€ú>tP€ú>îbîb‚+k‚¥}}îbtPtP‚+kîbtPtP‚¥}| 5= = [€$Ÿ˜–€s÷€Ûº˜ï±Y1-±€±€ô$=b[æ1-Yçï ŽÃô$¤Ë€€,€€,€±€˜–€±€Éj€Œa€Œa€Éjh€¤Ë€±€±€I>= $Ÿ= s÷€€,€[€I>s÷€= j= 0ÔI>I>[€[€OX€$Ÿ 5j7777ÔBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î00I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@UUUUPUUUUUUUUUUUUUUDUUUUUUð `±²+Ä~7 ‚±²|0ÔUs€,€I>= I>UsI>0ÔI>= I>s÷€[€Uss÷€s÷€UsI> 5+Ä~7 ƒ+Ä|j= Us½5€˜–€¤Ë€Œa€€,€I>= [€UsI>UsI>[€˜–€Œa€[€Us 5 5= 7 €I>= UsUs[€I>s÷€g€[€[€= UsI>UsYô$ Ž1-$ø ŽÉj€˜–€±€±€Œa€€,€s÷€€,€[€0Ô+Ä| 5$Ÿ0ÔUss÷€Œa€Éj€= +Ä|7 ‚7 ƒ+Ä|js÷€€,€I>0ÔI>Us$Ÿ= ˜–€Œa€[€[€[€s÷€Œa€¤Ë€˜–€˜–€Us€,€I>$Ÿ 5s÷€ÕŸ€7777ÔBUFRæbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎH0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUU@UUUUTUUUUUUUUð `ÕŸ€€,€˜–€˜–€s÷€g€¤Ë€½5€ô$1-$øÕŸ€çïÛºçï½5€±€çï ŽÕŸ€Éj€½5€ÕŸ$ø[æ[æ€çïŒa€±€Œa€¤Ë€€,€g€¤Ë€€,€½5€ÕŸ€g€I>= I> 5s÷€jjUs€,€¤Ë€˜–€I>UsUs= 0Ô0Ô= 0ÔUsUsUsI> 5I>0Ôú—ƒ+Ä}ú—‚7 ú—€= s÷€€,€€,€¤Ë€g€Us€,€s÷€g€g€g€= I>= j$Ÿjj±²}€…‚7 €I>I>0Ô0Ô$Ÿ0Ô0Ô= g€UsI>I>= 0Ô€,€s÷€I>s÷€ÛºŒa€ÕŸ€½5€˜–€Us$Ÿ= €,€Usj$Ÿ[€0Ô[€= 7777ÔBUFRöbÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î\@""$DDDDDDUUUUUUUUUUUUffffffffffffwwwwwwwwwwwwˆˆ€ŠøFS¥mpC!Lt%Kc\øFS¥mpC"Ø×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUUUUUUUUUUUUUUTT@ð `0Ô 5 5$Ÿg€ 5 5+Ä}s€Osssú—€s÷€½5€ÕŸ€±€ÛºŒa€¤Ë€ÕŸ€Ûº½5€çïÕŸ€±€˜–€ÉjY ŽÕŸ€s÷€= = 5[€s÷€˜–€€,€˜–€Œa€çïÕŸ€¤Ë€±€çïÉj€Œa€˜–€g€g€s÷€€,€€,€€,€[€Éj€Éj€ô$Y½5€¤Ë€€,€Œa€Éj€çï Žô$Éj€ô$ÃY ŽYÕŸ€¤Ë€g€s÷€Œa€Œa€s÷€˜–€±€±€s÷€s÷€Œa€½5€±€½5€Éj€ÕŸ€Ûºô$YÕŸ€½5€½5€Œa€Œa€s÷€[ƒ+Ä| 5+Ä}ú—ƒ+Ä|±²}€…ú—‚7 ú—‚±²| 5 5+Ä}ú—‚7 ‚7 ú—€ú—ú—ú—€7777~±BUFR&bÿ« fÎ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎUUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷½ï{ÀB„!B„!B„"„!B„!B„!CÆ1ŒcÆ1ŒcÆ1Œd!B„!@ŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@UUUUUUUUUUPUUUUUUUUUUUTPUUð aú—€ 5±²}€…€…ú—€…€…€…€…‚7 ‚±²~±²~7 ‚7 ƒ+Ä+Ä~7 ‚7 ‚±²|±²~±²+Ä|= [€I>0Ô= I>½5I—UÌ[æ˜ïÃUÌÕø±Y¥$€…I—1-ô$Éj€½5€˜–€¤Ë€ô$YÛºÛºÛºŒa€˜–€±€Ûº$øÛº½5$ø=bI—I—gƒ+Ä+Ä|Ûº= $Ÿ¤Ë€çï[怅UÌçïÛºÕŸ€Éj€½5€ÛºY½5€ÕŸtPŒºUÌÃÛº$ø$øô$ÕŸ€¤Ë€¤Ë€½5€½5€Œa€±€Ûº˜–€€,€I>g€s÷€€,€˜–€ÕŸYÉj€0Ô 5±²|j7 ‚7 €$Ÿ˜–€Éj$øÃÃ1-I—7777º‚BUFRbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!²LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@PB„!B„!B„"„!Bsœç9ï{Þ÷½ï{Þ÷½ï{Þ÷¾„!B„!B1ŒcÆ1ŒcÆ1ŒcÊR”¥)JR”¥ Š×>”é[\ÈS RØ×>”é[\ÈS+k€" c¡*[çÂ2+k€" c¡*[øC!Lt%Kc\øFS¥mpC!Lt%Kc^Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUU@@UUUUUTUTUUUU@UUUUUð ah[æ[æ[æÃ[æUÌ=b$ø Ž Ž$øÛº½5€½5€s÷€˜–€[€= 0Ô 5j 5 5$Ÿ0Ô 5$Ÿ0Ôj 5+Ä+Ä~±²|+Ä}ú—ú—€$Ÿg€¤Ë€€,€¤Ë€¤Ë€¤Ë€±€Œa€˜–€±€¤Ë€g€[€[€Usg€€,€˜–€g€$Ÿ= ±²~±²~7 ‚7 ‚±²|jgÂÃ$ø€,€UsI>±²~±²~±²~7 €UsŒa€ÉjÃ[怌a€$Ÿ= ½5€g€I>Usg€g€[€0Ô 5±²~±²~±²|0ÔÉj€Ûº= Uss÷€[€Usjj7 ú—ƒ+Ä~7 ƒ+Ä| 50Ô[€€,€s÷€= [€Usj$Ÿ= 7777$ŸBUFR¶bÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î@\0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ð‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]1-1†Ä´Æw@6î€^šÀg€ªæn6† Ð€B@9ûÀ¤ËYÏÞÜlW0 ®`ýà9ûÀ¤Ë«?28dpB@ýà6î€s÷€½5ò«˜|(™pýàLK@Ûº’ÕôÖÄ´ L¸ )2àReÀÛº²Ä´ @ÜÈà™pýà9ûÀ= ’|UÌ$ø 'À*¹€¤Ë·tnèÝÐB@#`5gà’|I—bZc¾dpÈàýà,@ F0À[€ªæn6†  @“à 'ÀO€= ’|n6Ÿ¼Èð @@˜–’ÕddpÈর,@ ReÀ¤Ë«?bZIð @~ð,@ zÓ.õˆ L¸Ð&% ReÀº(Ahƒ1ß n ®`E&% I>^šÀ€,€7777UsBUFR&bÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎBUUUUUUUUUUUUUUUUUUUU^sœç9Îsœç9Îsœç9Î÷½ï{Þ÷½ï{Þ÷½ï{Є!B„!B„!BB„!B„!B„!ŒcÆ0Šˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUPUUUUUUUUUU@ð `UsŒa€[€I>± ŽI—â-‚ çô}¥$Œº[怌a€s÷€Œa€ÕŸ€Ûº=b ޽5€€,€Usj 5jj= = [€€,€g€[€Us= = [€g€˜–€ô$ô$çïÛºç€s÷€I>±²|+Ä}ú—‚7 ƒ+Ä|$ŸI>I>0ÔUsUss÷€= 0Ô[€Œa€€,€€,€I>0Ôj±²~7 ‚7 ƒ+Ä~7 ‚7 ‚±²|0Ô= [€s÷€€,€g€˜–€Œa€¤Ë€˜–€ô$¤ËYÃÛº˜–€Œa€¤Ë€[€I>€,€˜–€¤Ë€˜–€Éj€Éj€Éj€Éj€ÛºçïÕŸ€ÕŸ€ÛºÛºÉj ŽÃçïÕŸ€€,€= = $Ÿ 5+Ä}ú—€…ú—‚7 € 57777º‚BUFRæbÿ« fÎ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀0I$’I$’I$”’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lk¡N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUTUUUUPUUUPUUUUUAUUUUUUUUUýà`j 5|0Ô= $Ÿ0Ô0Ô0Ô$Ÿj$Ÿ0Ô+k‚¥}~¥}|jŒa€Ï…ۺυçï ޽5€[€I>= g€¤Ë€Éj€¤Ë€s÷€I>$Ÿ+ktPtP‚+kîbtPîbƒ|$Ÿ[€[€g€Œa€˜–€I>OX€0ÔI>½5ÃY½5€0Ô 5+k‚+k‚¥}}tP‚+kƒ|s÷€ÛºYô$Ï…Ï…½5€˜–€Ï…½5€˜–€½5€€,€OX€= g€s÷€OX€I>= 5¥}|[€¤Ë€çïçï¤Ë€Œa€Œa€Œa€g€[€Œa€½5€€,€Ï…Éj€½5ý5€ÛºÏ…$ø½5€Ï…çïŒa€çïI—1-ô$±€±€½5€± Ž$øÃ7777ºBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀$0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUDUUPUUUUUUUUUU@UUUUð a Žçï½5€ÕŸ€Ûº±€[€g€[€0Ô0Ôj0Ô= I>€,€s÷€Œa€€,€g€Œa€Œa€s÷€€,€˜–€Éj€˜–€g€¤ËY¤Ë€j= +Ä|7 ú—ƒ+Ä|±²~±²|+Ä+Ä| 5I>= ±€g€s÷€$Ÿs€Œas€Œa€Œa‚7 € 5˜–€ÕŸ€½5€g€˜–€€,€s÷€Œa€Œa€¤Ë€ô$Y½5Y Žô$ ŽÃÛº€,€Us= $Ÿg€ô$$ø½5€Us[€g€g€[€s÷€s÷€˜–€¤Ë€Œa€s÷€I>j±²}ú—ú—‚±²}s€Œa€…ƒ+Ä|Us€,€Éj€½5€˜–€s÷€[€g€€,€ÕŸ Žô$$ø$øUÌ1-[怌a€€,€7777ºBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀<0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUPUUUUUUUUUTUUUUUUUUð `Us= 0Ô[€½5Y Ž ŽÉj€Œa€[€= I>€, Ž1-UÌI—[æUÌŒºUÌ ŽYô$ÕŸ€±€±€±€Éj€çïÉj€¤Ë€±€Œa€€,€s÷€I>[€0Ô[€I>j= 0Ôj7 ú—€…€Œa€Œaú—€jI>g€[€jj$Ÿ 5±²+Ä|= Us0Ô$Ÿ0Ô[€Œa€€,€[€I>[€€,€[€Uss÷€¤Ë€Œa€g€UsjUs0ÔI>UsÕŸ€çïÛºYÉj€Éj€€,€I>+Ä|= ˜–€çïYYÉj€s÷€I>I>Œa€Œa€= €,€±€¤Ë€ô$çïçïô$½5€±€±€I> 5Us½5€ÕŸ$øtP€7777ºBUFRæbÿ« fÎ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀P0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUUUUPUUU@UUUUUUUUUTð a ޽5€½5€Éj€Éj€Éj€çïô$½5€€,€Us0Ô$Ÿs€Œas€Œa€Œa€…€ 5$Ÿg€g€s÷€Us[€= = [€g€¤Ë=b½5€Œa€UsUs[ƒ+Ä}€…€…€Œa€O€…‚±²|$Ÿs÷€Œa€[€[€€,€¤Ë€Ûº€,€¤Ë€ÕŸ€[€Us 5 57 €…€Os€Œa€Œa€Œa€g€ô$½5€¤Ë€Œa€Uss÷€ÕŸŒºI—hh€½5€ÛºÛº¤Ë€±€ÕŸ€ÕŸØ–€g€[€[€I>I>[€UsI>= I>g€0Ô˜–€¤Ë€¤Ë€Us0Ô+Ä~7 ú—€…s€…€Œa€O€O€Œasú—€…€…‚±²~±²|+Ä+Ä|j= 7777ºBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΀d0I$’I$’I$¤’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹N•µÀ …1Е-sáN•µÀ …1Е-®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUU@UUUPUUUPUUU@UUUUUð `jI>UsUs= 0Ô$Ÿ 5±²}ú—€…‚7 €ŒaYhY˜–€€,€±€ÕŸ€Éj$øÃ1-I—1-YÉj€˜–€s÷€I> 57 ú—sú—€ 5Usg€s÷€I>g€g€s÷€Œa€[€Œa€Œa€[€UsŒa€g€ 5ú—ú—s€Œas€…ƒ+Ä|I>g€= = 0Ô$Ÿ0Ô= 0ÔUsUsUsI>Œa€g€0Ôj+Ä}sss€…‚7 ƒ+Ä|= g€= 5 5$Ÿ 5= 0ԤˀÉj€±€s÷€Œa€g€±²}€…€…€Œas€…€[€s÷€çïÉj€˜–€¤Ë€¤Ë€¤Ë€½5€Ûº½5€ô$Y ŽÃ1-1-Y˜–€Us7777ºBUFRöbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<΂UUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷½ï{Þ÷€„!B„!B„!D!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œc!B„!@Š!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ \†G ŽèHIðdpýàReÀ¤ËbŸ¼Ä´?x~ð X€@½5zk“.c ¸Ø“à#`-ÆÀ±Y=b>?x q°Ö 3á@jI>ÃP @ 'À9ûÀÃPŸ ôÖ¡ ~ð¦°#`3á@OX€†G ŽIð¦°&% LK@¤Ë€çï²é¬ »  /M`^šÀÏ…·tõˆ|( L¸jð !‘À$Ÿj’|ÐÐ,@ X€@±bÐdpЦ°,@ F0À[€ž±ÃP† ?x~ðÈàO€†GÏÞ€!‘À3á@g€ô$èHÐÝÐ øP#`I>¡¾A$ø·Íõˆ äÖ 0ÔX€@= I> Žˆ~ðw@6î€a¨Ûº7777ÕBUFRæbÿ« fÎ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀ0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUPUUUU@UUUUPUUUUð `Œa€g€g€Éj€ÛºYÃô$Ûº€,€= ±²| 5+Ä~±²|s÷1-tP˜ïh1- ŽÛºô$=b¥$¥$ÉÀ…hh=bÃçïô$çïÕŸ€ÕŸ€½5€½5€Éj€Éj€Éj€çïô$Éj€Éj€ÕŸ€Éj€±€½5€ÛºŒa€[€¤Ë€[€$Ÿ 5 5±²~7 ú—‚7 ‚7 €$Ÿ¤Ë€Œa€g€[€g€€,€½5I—ÃÕŸ€ÕŸ€€,€= = 5±²}€…€…€…ú—€j¤Ë€Éj€¤Ë€UsI>Usg€ŒaYI—¥$½ŽhI—Ã Ž€,€ 57 ‚7 €= [€±YÛº€,€s÷€[€Uss÷€çï±€ÕŸ€¤Ë€˜–€7777î€BUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀ(0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUPUUUUUUUUUUUUUUUUUUUUUð `Éj€˜–€Œa€UsUsg€s÷€¤Ë€Ûº˜–Y1-tP=b=b¤Ë€¤Ë€ô$ Ž1-1- Žçï ŽÛºs÷€I> 5j 57 €…ú—‚7 €0ÔŒaÃ[æÃ=bÕŸ€ô$äˀ¤Ë€½5€½5€Œa€Œa€[€$Ÿú—‚±²}ú—€…‚±²|$ŸŒa€ô$ Ž1- Ž1-$ø$øI—UÌŒºhtP[æhI—ŒºUÌ1- ŽYY€,€Œa Ž Ž Žçï±€ÛºÉj€€,€s÷€˜–€¤Ë€˜–€g€$Ÿ[€g€¤Ë€˜–€¤Ë€€,€0ÔI>s÷€0Ô$Ÿ$Ÿ$Ÿ0ÔUsUsŒa€˜–€Œa€Œa€ŒaYçïYÉj€½5€ÕŸ€˜–€I>Us$Ÿ0Ô7777î€BUFRÆbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀ@0$’I$’I$’II$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èKçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@)2à` 5C#€Ûºh[æ ŽYYô$YC|«?ÏÞ¥$Œº¥$¥$‚·ÍÐ7ÜlÜèHtPŒº[æ«?+k‚Ð7%Q\?ƒPcƒ+Ä€ÃPÛºô$Ý+[æ+ÝÃ7GÃô$ô$çïÛºÛºçïYtP«?·tÏÞÜ·t¥$«?«?€…Ý7GYà ŽYÏ…Ûºçïçï·ÃPÛºÛºÛºªæÛºÛºçïۺυۺô$ô$Yô$ô$ô$ۺυçïž±Œa€ž±··Ï…çïÏ…Ï…ªæž±˜–€ÃPYYYô$çïۺυªæž±˜–€˜–€s÷€C#€6î€s÷€˜–€ž±˜–€€,€˜–€ž±ÃPÏ…7777ÉjBUFR¶bÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÀT0 $’I$’I$’RI$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2-pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]èHnèÝÐ-P5gàdµ@˜–b1†IðW0¡ jjÃPÜl ‰h™p,@ dµ@Ûº·tС B@„€C#€s÷€ô$zkĈ ™p&% jÏÀçïõˆ L¸™p#`C#€’|=bzÄ&\ ®`Ð+|Ð= †GYÏÞnè¡ »  ýà^šÀÉjèHõˆ ëŒ0&% C#€€,$øzÄ n ,X0°Vù ¤Ë=b1†28ÆŒ0 9ûÀ€,Ã1†õˆ ŠÌ¸0°] ¤Ë1-è¡”’ eÔRH.Šc. ªæh‚·Í“à L¸¾h#`= €, ŽèHnè?x » „€F0ÀX€@çïÏÞnè?x Yø 5gàmÝÛº7777±BUFR&bÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎÂUUUUUUU\ëZÖµ­kZÖµ­kZÖµ­o{Þ÷½ï{Þ÷½ï{Þ÷½óœç9Îsœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{Þ€„!B‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%LkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUEUUUUUUUUUUUUUUUUUUUUUUUUýà`g€I>I>OX€= Œa€¤Ë€˜– Ž=b[æh1-1-I—$ø=btP[æ1-çïÛºçïÉj€±€½5€¤Ë€€,€$Ÿ|jI>€,€¤Ë€Ï…Ï…YÉjÃI—I—=bI—1-$ø$ø1-O±YçïçïÏ…½5€Œa€¤Ë€Éj€ô$ô$Éj€Œa€Œa€±€±Y=b$øÉj€Éj€Ï…½5€¤Ë€±€€,€s÷€= I>[€¤ËYO±hI—Ã$ø$ø ŽÃà Ž$ø Ž1-Yô$ÛºÛº½5€±€˜–€Œa€˜–€±€Ï… Ž=btP€…h$øô$Éj€ô$Y ŽYYçïÉj€±€Œa€[€I>I>OX€€,€Éj€çï7777º‚BUFRæbÿ« fÎ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUTUUUUUUUUUUUUUUUUUUUUUUUUUUð `ô$ Žô$½5€ÕŸ€ÕŸ€½5€Ûº Ž$ø=bô$½5€¤Ë€ÕŸ€Éj€Œa€Usjú—‚7 €$ŸYÕøÕøtP€çï½5€Éj1-1-I—1-=b$ø Žô$ÕŸ ŽÉj€s÷€[€j$Ÿ¤ËI—€…€…1-Ãçï$ø$ø[æUÌ1-ÃYçïÛºçï¤Ë€g€€,€±€[€[€= Œa€ÕŸYÛºŒa€±ÃI—I—tPŒºtPI—$øô$ô$YÕŸ€ÕŸ€ô$çïô$½5€€,€±€çï$ø ŽÕŸ=b ŽÛºYYUÌtPŒº½Žâ-¥$tP=bÃà Žô$ô$ô$ ŽI—tP$øh=b€…[æh[æ€7777øBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ð‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUPUUUUUUUUUUTUUUTýàaI—1-$ø ŽYYô$çïçïçï¤Ë€OX€I>$Ÿg€€,€¤Ë€Éj€ÛºÏ…ô$ô$ Ž$ø1-à Žô$ۺυۺçï¤Ë€½5€±€±€€,€˜–€½5€Ï…ÃÃô$Ûº¤Ë€±Ã Žô$ô$Yô$ô$ô$½5€½5€I>I>~¥}~¥}| 5g€€,€¤Ë€˜–€˜–€Œa€€,€Œa€¤Ë€½5€çï=bÃÏ…ô$1- ޽5Y ŽÃÃô$ÛºÃ$ø€…I—Y=btPO±ÃYÃçïÉj€±€s÷€[€ 50Ô$Ÿ 5~+k‚¥}| 5$Ÿ€,ñ€½5€çï Ž Ž Ž1- Žô$$ø ŽÉj€+k€7777øBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î40I$’I$’I$”’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©l|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUTUUUUUUUUUUTUUUUUUUð a€…€…s€Œa€Œa€Œasƒ+Ä|$ŸÉj€ÕŸ€€,€s÷€½5€çïô$±€±€€,€I>0ÔUsj7 ‚7 ‚7 €…€…‚7 €[€Œa€Œa€½5€¤Ë€˜–€s÷€Usg€€,€±€˜–€˜–€I>g€g€0Ô 5±²|$Ÿ±$øI—tP€…hŒº$øI—YhI—[æ[æI—$øÕŸ€±€s÷€g€I> 5[€Éj=bI—UÌ[æI—ÃçïçïI—I—UÌ=bçïô$Éj€s÷€g€ 5+Ä~±²~±²~7 €$Ÿ¤ËYÃô$ô$ÛºÉj€ô$Ûºô$ô$ÕŸ€çïs÷€I>I>I>j0Ô 5 50Ô½51-[æÃ7777øBUFRæbÿ« fÎ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎH0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð a$ø[æI—Ã$ø=b Ž1-Yçï ŽÕŸ€g€I>0Ô+Ä|±²~±²~±²+Ä|j$Ÿ$ŸI>I>I>Œa€˜–€¤Ë€½5€½5€½5€çï Ž Ž1- ŽÛºŒa€= jjI>I>g€I>s÷€€,€€,€ÕŸ€¤Ë€±€Éj Ž ŽY$ø1-Ãçï ŽÉj€ô$ Ž ŽÃÃô$çïUÌ[æ¥$ŒºUÌUÌ[æI—tP[æ=bçïçïYô$ÛºÉj€±€˜–€¤Ë€¤Ë€±€½5€ÛºÛºYà Žô$Ãô$Yçïçïô$ ŽÕŸ€½5€±€Œa€s÷€I>[€s÷€€,€Œa Ž$ø=b[æI—Œº˜ïtP¥$˜ï€…€7777øBUFRæbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Î\0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUPTUUUUUTUUUUUð atP[æUÌI—=b1-$ø=bÃô$½5€Éj€±€ô$UÌI— ŽÛº=b$øçïô$½5€¤Ë€[€s÷€s÷€= 5 5±²}€…€…ss‚7 ƒ+Ä~±²|= ±€Us0Ô 5+Ä~7 €jÉj€ú—€…€O€…s€O€Œa€Œa€Œa‚±²|Us[€= jj+Ä| 5+Ä}€…€…€…s€…s€O€Œa€Œa€Œas€…€ 5Œa€I>j0Ô[€[€±€½5€½5$øÕŸ€Éj€ÛºÉj€ÕŸ€Œa€I>7 ‚±²~7 ‚7 €j 5[€€,€g€= $Ÿ 5j= s÷€ÕŸY Ž$øÃ$ø1-YÛº0Ô7777øBUFRfbÿ« fÎ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÎUUUUUUUUUUUUUTD»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»^sœç9Îsœç9Îsœç;Þ÷½ï{Þ÷½ï{Þ÷½ï}ï{Þ÷½ï{Þ÷½ï{Þ÷€B„!B„!B„!„!B„ Š!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUPUUUUUUUUTUUUUU@ð `$Ÿ$Ÿj[€Éj€Éj€Éj€˜–€Œa€˜–€€,€g€€,€Œa€I>[€[€g€s÷€Œa€= j 5$Ÿ±²}ú—ú—ú—‚7 € 5= [€Œa€±€±€Éj€çï1- ŽÃçïŒa€¤Ë€˜–€¤Ë€±€ÕŸ€ÛºI>j+Ä~±²+Ä|jg€Usg€0ÔI>[€€,€±€€,€Œa€s÷€±€€,€g€I>= ½5€[€= 5$Ÿ= 0Ô0Ô= 0Ô0Ô= = Usg€I>= 0Ô0Ô$Ÿ+Ä+Ä}ú—‚7 €…€…ú—ƒ+Ä|0Ô€,€Éj€Œa€€,€˜–€s÷€g€Œa€±=b1-YYÕŸ€˜–€€,€s÷€€,€I>0ÔI>±²~±²~7 ƒ+Ä|$Ÿ¤Ë€I>7777BUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@ 0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUQUUUUUEUUUUUUUUUUUUUUUUUUUUUð `Œa€s÷€s÷€[€ÕŸ±Y¥$[æ Ž±€= j$Ÿ+Ä|+Ä+Ä|= ±€ô$ÃÃÉj€Éj€g€s÷€˜–€˜–Yô$YÕŸ€½51-1-Œa€0Ô$Ÿ±²|$Ÿ¤Ë Ž Ž Ž Žçï Ž$øYô$ô$YÛºô$ÕŸ€¤Ë€Us$Ÿ= 0Ô0Ô= Us˜–€Éj€½5 Ž$øÃh€…˜ïŒºŒº˜ïtP[æhÃ[æÕøI—Éj€€,€Usg€Œa€ÕŸÃ[æh[æ$øhŒºh=bô$=b$ø$øÃÉj€˜–€Us= $Ÿ 50ÔUs¤ËU̘ï¥$tP€…tP¥$ÉýŽÉØïI—77770ÔBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@ 0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUDýàa$øô$¤Ë€Ûº=b=b1-Éj€¤Ë€€,€Œa€Ï…1-[æI—ÃY Žçï$øY[æhO±O±I—I—1-$øçï Žô$Éj€˜–€s÷€OX€OX€s÷€s÷€±€€,€Œa€Ûºçï$øI—[怅tPŒº¥$Œºhäˀs÷€€,€Œa€±$ø€…˜ï˜ï€…¥$tPtPtPh½ŽÕø‚ çÜ1†Ü ç½ŽÕøO±I—YYÏ…ÛºYô$çïçï ŽI—I—€…hO±tP=bÏ…Ï…˜–€Œa€OX€I>I>0ÔOX€0Ô0Ô[€çÉÃ½ŽŒºtPI—h ŽO±=bI—çï€,€[€OX€0Ô|+k€77770ÔBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@80$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠ2ÇBT×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUQUUUUUUUUUUUUUUUUUUUUUUUQUUð b7 ƒ+Ä|$Ÿ[€çïYY$ø¤Ë€½5€ô$çïçïçï[€[€s÷€= j$Ÿ0Ôj+Ä|j= Us¤Ë€ÕŸ€ÛºÛº˜–€±€€,€¤Ë€˜–€±€Éj€Éj€Éj€½5€˜–€[€g€I>= $ŸI>˜–[æ˜ïYçï±€˜–€€,€½5Y1-=btP[æ€çïtP Žô$€,€0Ô0Ô$ŸjI>I>½5€ô$ô$Y½5€½5€Œa€¤Ë€½5€Ûºçï1- Ž$ø Žô$çïÛº[€[€Us˜–€€,Y=bUÌ=bô$çïÛºô$ÕŸ€Éj€Éj€ÛºÕŸ€½5€çïÉj€çï½5€I>jj+Ä|jjUs½5€ÛºÛºçïÉj€Éj€77770ÔBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@L0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUýà`½5€½5€½5€çïYO±€…tP$ø Žô$s÷€j 5|$ŸÉjÃ[ætPà Žô$Ã$øI—½Ž€…¥$€…O±$øtPI—O±Ãô$YYÃÃ[挺€…¥$€…Œº ŽY[怅I—[æhhO±I—1-ÃYçïÛºÛºYO±=bhtP€ô$ ŽYÃ=bO±[æhI—1-I—=b1-Y±€s÷€˜–€½5€½5€Ï…çï=bçïÏ…ô$ ŽÃçïÛºçïçïÉj€±€Œa€g€˜–€s÷€g€€,€I>OX€I>j[€½5€ÛºÛºô$½5€Éj€˜–€çïô$Ï…Ï…¤Ë€s÷€[€77770ÔBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@`0$’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ý¶Û`‹[\ÈS RØ×>•+k€" c¡*[çÂ2+k€" c¡,kŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUýà`= I> 5+kƒ}tPîb‚+kƒ| 5OX€Ï…Ãçïg€g€g€±€[€s÷€˜–€Œa€±Y˜–€½5€OX€= $Ÿj= €,€Ûº Ž[æ€ô$Éj€½5 ŽŒº$øO±YÛº½5€Éj€½5€€,€I>j 50Ô 5OX€Éj=b€…Œº€…O±Œº=bŒº€…1-ô$Ï…s÷€I>= 0Ô[€OX€0Ôjs÷€g€ô$=bçï±€½5€˜–€±€±€Éj=bh[æ1-$ø1-Ï…Ã Ž1-Ã=bYY[æèH€Þ‚ ç¥$ ŽÏ…Y=b=btPO± ŽÃ Žô$ Ž1-=bI—$ø ŽÛºÉj€Éj€Éj€77770ÔBUFR&bÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏBUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï{ß{Þ÷½ï{Þ÷½ï{Þ÷½à„!B„!B„!BB„!B„!B„!ŒcÆ1ŒcÆ0Š„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUýà`Ï…çïÏ…±€˜–€±€˜–€¤Ë€½5€Ï…Ï…Éj€±€ÛºÉj€±€˜–€±€s÷€I>I>I>OX€s÷€Œa€˜–€¤Ë€€,€˜–€¤Ë€Œa€¤Ë€½5€Éj€Ûºçïô$ ŽÏ…Ûº±€€,€s÷€g€Œa€¤Ë€Ï…Y=bÃ$ø Ž ŽçïÃ1-O±˜ï˜ïh[æ1-$øô$ÃYs÷€jI>Ï…Y[æ˜ïO±[æh€…h=bÃtP¥$tP€…€…I—I—O±$øÏ…±€OX€= s÷€ô$1-O±tP=bI—ÛºYô$=b[ætPhO±€ô$Œa€€,€= 5¥}}tP‚¥}~¥}| 5€,€˜–€Œa€s÷€[€OX€$Ÿ$Ÿ= 7777bBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’Km¶Ûm¶Ûm·m¶Û`‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©l­®ˆd)Ž„±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUýà`[€Œa€s÷€$Ÿ$Ÿj$Ÿ¥}~¥}~+k‚+k‚¥}| 5js÷€½5€½5€±€±€s÷€s÷€€,€˜–€¤Ë€½5€Ï…s÷€OX€g€OX€$Ÿ 5j 5= g€½5€˜–€Œa€˜–€¤Ë€Œa€˜–€˜–€±€½5€˜–€s÷€[€[€I>OX€0Ô= $Ÿ$Ÿjj0Ô= OX€0Ô= 5 5 50Ô= OX€±€Ï…Ï…±€ô$Y½5€€,€I>jjj[€ŒaO±±Y±YtPtPI—ÉÃ½Ž€…€ÛºŒa€OX€0Ô[€s÷ Ž[æ˜ïO±Yô$1-1-=b¥$Ü¥$˜ï˜ïtPhI—±€g€I>= [€±1-tPI—7777a€BUFRÆbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€(0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@3á@`˜–€˜–€€,€Œa€€,€½5ÃI—1-ÃYî €ÕŸYYYáÔ€ô$ô$î €ô$n61-I—ÃYÃ$ø1-1-zk€…zkbzk€…UÌ=bÃ=b Žô$î Y1-€…ÉÂbZ¥$bzkI—±Yn6zk±Y±Y˜ï˜ï¥$n6UÌ=bYáÔ€Éj€ÕŸ€áÔ€±€½5€¤Ë€˜–€Œa€s÷€Us€,€Œa€±€î $ø=bI—ÃYáÔ€î €½5€Éj€Éj€s÷€ 5$Ÿ= Uss÷€€,€±€½5€½5€±€˜–€áÔ€áÔ€î €ÕŸ€Œa€˜–€UsUs= $Ÿ= 0ÔI>˜– ŽYn6b Ž Ž¤Ë€±€a¨±€€,€½5€7777gÂBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€<0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUEUUUUUUUUUQUUUUUAUUUUUUUUUUUð `çïô$ Ž$øô$½5€˜–€= j+Ä| 5jUsÕŸ ŽÉj€˜–€˜–€€,€s÷€¤Ë€˜–€Éj€Éj€±€˜–€s÷€= jjjj7 € 5j¤Ë=btPÃÛº±I—1- ޽5ÃhUÌhI—çïŒa€$Ÿ+Ä|±²~±²~±²| 5= Œa€Ûº¤Ë€Œa€Œa€¤Ë€±€ÛºÛº¤Ë€ÛºçïÛºÛº¤Ë€€,€I> 5j±²+Ä|jI>Éj=bô$¤Ë€g€g€՟€ô$Y$ø[æUÌI—h€…€Éj ŽI—=b=b±€¤Ë€s÷€s÷€ÕŸÃÛº±€s÷€Us[€= [€= Usg€s÷€s÷€Éj€±€€,€ 5 57777a€BUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€T0’I$’I$’I%$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@UUUUUUUQUUUUUUUUUUUUUUUUTUð ` 5+Ä}€…ú—ƒ+Ä}ú—ƒ+Ä~±²| 5 50Ôj$Ÿ0Ô 5$Ÿj 57 ‚±²}€…ú—sú—sú—€I>˜–€ÕŸ€s÷€s÷€= I>= Us˜–€¤Ë€˜–€s÷€€,€I> 5±²|7 ‚±²+Ä|jg€çï=b$øçï¤Ë€ÕŸ€½5€çï=bh Žô$ô$±€Usj= 5$Ÿ$Ÿg€½5€ÕŸ€½5€¤Ë€¤Ë€€,€Us€,€s÷€€,€±UÌŒº€…[怅‚1†%Q1†¥$[æh1-Éj€½5$ø1-ô$ÛºÕŸ€ÕŸ€ÛºçïY Ž$øtPI—çï¤Ë€¤Ë€[€Us$Ÿ±²+Ä| 5Usô$hÃçïY7777a€BUFR&bÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï‚UUUUUUUUUUUUUUUUU\ç9Îsœç9Öµ­kZÖµ­kZÖµ­kZÞ÷½ï{Þ÷½ï{Þ÷½ï{!B„!ŒcÆ1ŒcÆ1ŒcÆ2„!B„!B„!@ŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èKŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUTUUUUTUUUUUUUUUUUUUýàa€…hhhÜÕøÜÉØï=btP=bÉj€¤Ë€Œa€g€I>OX€€,=bçï½5€g€I>OX€0Ôj= [€€,€ç€[€Ï…OX€jj 5j¥}}îb€ 5$Ÿg€I>$Ÿj$Ÿjjj$Ÿ[€s÷€g€[€0Ôj~+k‚¥}|jI>€,€€,€±€ÛºÏ…½5 ŽÉj[æÃ1-çï1-1-ô$Ûº¤Ë€¤Ë€¤ËY1-YÉj€½5€±€¤Ë€Éj€Éj€ô$1-1-ô$½5€Œa€I>$Ÿ¥}|+k‚¥}~+kƒ|= ˜–€ÛºÏ…˜–€½5€½5€½5€±€¤Ë€Éj€Ï…ÛºY±€I>$Ÿj7777bBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©ll#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUAUUUUUUUUUUQUUUUTUUUUUUUð `= = 0Ô$Ÿ= I>[€Œa€ÕŸ€çïô$ÃI—1-I—=b=bUÌ[æ$øI—I— ޽5€¤Ë€˜–€I>±²+Ä|jjj$Ÿ= g€g€s÷€Œa€˜–€¤Ë€Œa€€,€Œa€Œa€g€g€I>I>$Ÿ$Ÿ0Ôs÷ÃUÌUÌ$ø1-Ãñ€[€€,€¤Ë€ÕŸ€ÕŸ€¤Ë€½5€±€[€0Ô 5j+Ä| 5j0ÔÉj€ô$ÃY$øYÛºÕŸ[æ[æI—YÛºÕŸY±€j+Ä~±²~±²+Ä|jUsô$çïô$ÕŸ€g€s÷€= [€€,€€,€ÉjtPâ-ÕøŒº$ø¤Ë€Usg€[€€,€¤Ë€ÉjYYô$ÕŸ€7777|BUFRÆbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ,0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥µÏ„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@&% `[€OX€s÷€Œa€ªæYô$ ŽÛº·ô$Ã+7G7GC|+7G7GO±tP¥$±Y¥$¥$h€Ûº7GO±tPtPtP±Y€…tPŒº±Y7G+Y ŽY++C|ÃçïÏ…¤Ë€¤Ë€[€˜–€¤Ë€s÷€· ޱYtPéhtP7G+€ô$çïÃPŒa€[€€,€¤Ë€¤Ë€*¹€s÷€ 5$Ÿj 5$ŸŒa ŽèHÜéé˜ï7GÃÛºªæ¤Ë€ÃPçï[ætP€…êæ·s÷€€,€·ô$7G‚ ç²Ü ç²·tŒºhÃô$ÃPY+h˜ï+€Ï…ÛºÛºçï+€…·tÏÞ7777[BUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ@0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPð b çÕøâ-ÕøÉÀ…UÌ=bÕŸ€ÛºÃI—ÉÃèH²UÌÃtP1- ŽtP€…€…Õøâ-‚%QIð%Qâ-±Y€…=bÃYÃY Ž=bÛº¤Ë€¤Ë€±€Œa€¤Ë€±€Ûº Ž1-Ãô$$øÛº½5€¤Ë€€,€[€I>I>= €,$øUÌYçïô$à Žô$ÛºÃÃUÌ€…htP[æ=bÃÕŸ€±€s÷€g€I>˜–$ø ŽçïÉj€€,€¤Ë€Œa€˜–€¤Ë€ÕŸYçï±€¤Ë€s÷€€,€[€0Ô 5 5±²~7 ‚±²+Ä| 5 5$Ÿ$Ÿ[€$Ÿj= [€jŒa€g€I>$Ÿ= +Ä}ú—€7777|BUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀX0’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5ÐŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUýàaîb‚¥}|s÷€çï½5€¤Ë€Ûº¤Ë€¤Ë€¤Ë€¤Ë€¤Ë€˜–€Éj€Œa€s÷€±€g€€,€Œa€I>~¥}}tP‚¥}| 5[€Œa€s÷€s÷€[€˜–€s÷€€,€Ï…Éj€˜–€¤Ë$øÃ1-Ûº0Ô0ÔjI>I>gÂ1-[æ ŽÏ…½5€±€Ï…Œa€Œa€½51-ÜtP1-çï½5€Éj€¤Ë€s÷€[€OX€= Œa€Ûº ޽ހ½5€Ï…ô$ ŽI—€…htP˜ï[挺€…[æ€Ûº½5€g€I>0Ô0ÔOX€g€±YYY˜–€˜–€[€[€˜–€s÷€¤Ë€Éj€Ï…¥$€…€Éj±Y[æ Ž±€ÛºŒa€Œa€±Y=b$øÛº€,€¤Ë€7777|BUFR&bÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÂUUUUU]kZÖµ­kZÞ÷½ï{Þ÷½ï{Þ÷½ï{ç9Îsœç9Îsœç9Îsœï{Þ÷½ï{Þ÷½ï{Þ÷½÷½ï{Þ÷½ï{Þ÷½ï{ފƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUTUUUUUUUUUUýà`¤Ë€¤Ë€s÷€Œa€Éj€Ï…ÛºtPh[æ1-I—¥$hI—I—ۺυÉjYŒa€½5€OX€s÷€OX€I>g€OX€s÷€˜–€¤Ë€¤Ë€Œa€€,€0Ô$Ÿ¥}~¥}~+k‚+k‚¥}|jOX€±€˜–€¤Ë€˜–€˜–€Éj€¤Ë€½5€½5€ô$=bO±tPtP±Y€…tP€çïÉj€Œa€Œa€OX€çïtP€…[æ€ÛºçïÉj€ÉjÃÛº ŽÃô$ô$Ûº¤Ë€±€Œa€s÷€= $Ÿ 5|€,€ô$[æ=bÛº±€±€½5€Œa€½5€Éj€½5€½5€¤Ë=bÏ…s÷€$Ÿjj[€I>OX€[€¤Ë€çïYÛºÉj€Œa€s÷€€,€OX€OX€[€s÷€¤Ë€¤Ë€½5€7777bBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUPUUUUUUUUUUUUUUUTð `Éj€¤Ë€¤Ë€Œa€s÷€çïô$ÕŸ€€,Y1-UÌUÌUÌÉj€Œa€¤Ë€½5€¤Ë€s÷€˜–€ÛºçïÕŸ ŽI—UÌ1-ÃÕŸ€¤Ë€= = ±€ô$ ŽÉj€j0Ô0ÔI>0Ô+Ä+Ä|0Ô±€ÛºŒº˜ïŒº˜ï$ø½5€½5€I>jjI>s÷€ÕŸ€€,€Éj€¤Ë€˜–€[€€,€Œa€˜–€¤Ë€ô$½5€Éj€±€s÷€g€I>+Ä~±²}€…€…€…‚7 ƒ+Ä|= I>$Ÿg€Us$ŸI>s÷€±€ÛºÛºçï±€Œa€Usj±²+Ä}€…€Oú—‚7 €j[€= 5 5 5 50Ô= UsUsUsI>j0Ô±²+Ä| 57 ‚7 €7777€BUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠB˜èJØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUPUUUUPUPUUð b±²|j¤Ë€Éj€±€ÕŸ€Œa€¤Ë€ÕŸ€±€Éj€ÕŸ€Éj€¤Ë€Œa€UsI>[€I>j[€$Ÿ= s÷€çï1-Œº€ÛºÉj€çï Ž1-$øô$½5€½5€½5€½5€ÕŸ€ô$ÕŸ€Éj€±€˜–€±€Œa€g€˜–€Œa€¤Ë€ô$Ûº¤Ë€s÷€Œa€g€Usg€s÷€s÷€Œa€ÕŸ[æUÌtP€ô$çï[€Us 57 ‚7 ƒ+Ä|$ŸŒa€Us0Ô 50Ô0Ô0Ô0ÔjUs 5$Ÿ$Ÿ$ŸI>0Ô$Ÿ$Ÿ€…€…ú—‚7 ‚7 ú—‚7 ƒ+Ä|±²~±²~7 ƒ+Ä+Ä|j[€[€0Ô$Ÿú—€…‚±²}ú—€…‚7 €$Ÿ˜–€Ûºçï¤Ë€s÷€Usg€7777€BUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï00$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `s÷€½5€Éj€çï€,€€,€= = $Ÿjú—ú—ƒ+Ä~±²| 5g Žçï±€€,€= €,€±€g€$ŸI>±€ÛºŒa€ô$ÃUÌtPUÌ1-=bI—UÌI—hŒº‚%Qô}h$øçïÛº±€¤Ë€½5€Éj€ÕŸ€˜–€ÕŸ€…UÌ¥$€…Y$ø ŽYÕŸÃ=bŒºŒºñ€±€€,€€,€¤Ë€ÕŸ€ô$ Ž$øŒa€¤Ë1-hY½5€s÷€= [€€,€½5UÌI—I—tPh¥$ ŽÛºÛºÛºUÌ1- ޽5€˜–€˜–€€,€I>I>$Ÿ$Ÿ0Ô½5€ô$ÛºŒa€0ÔjI>½5€±€€,€½5€Ûº1-1-ô$çï7777€BUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏD0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUQUUUU@QUUUUPUUUUUUUUUUUð `ô$¤Ë€¤Ë€Œa$ø$ø$øÃçïÉj$ø1-˜–€½5€¤Ë€I>= [€0Ôs÷€UsUs½5 ޱ€g€Œa€Éj€= +Ä|$ŸŒa€çï=b¤Ë€= I>Us0Ô0Ô= = UsI>0ÔUsI>+Ä~±²~7 €$Ÿ 5+Ä|$Ÿ= Us¤Ë€½5€Œa€Œa€€,€˜–€¤Ë€˜–€¤Ë€˜–€Œa€˜–€ô$¤Ë€g€ú—ƒ+Ä}ú—‚7 €0Ô€,€¤Ë€¤Ë€UsŒa€I>[€s÷€[€€,€˜–€Œa€˜–€¤Ë€Œa€±€˜–€[€j+Ä~7 ‚±²|0Ôs÷€ô$ Ž¤Ë€¤Ë€±€g€UsI>Éj€˜–€[€± ŽhÃô$Œa€0Ôg€0Ô0Ô$Ÿ±€7777€BUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï\0 $’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[èFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUU@@UUUUU@UEUUUUUUð `±YÕŸ€˜–€s÷€¤Ë€Éj€±€¤ËUÌI—tPI—hh[æ$øY¤Ë€½5€Œa€˜–€˜–€±€½5€ÛºÕŸ€¤Ë€Ûºô$ Žçïô$ÕŸ€çï=bÕø Ž$øÃçïñ€[€I>j$Ÿ0Ô+Ä+Ä~±²|+Ä~±²+Ä|j 5 5j$Ÿ$Ÿ 5±²}€…‚7 ‚7 ‚±²+Ä|s÷ Ž ޽5€±€g€jj= 0ÔŒa€Œa€[€ 5 5+Ä+Ä}ú—€…€…‚7 €…€…ú—€ 5I>¤Ë€¤Ë€g€Us+Ä|$Ÿjjj0Ô[€€,€g€$Ÿj 5I>Éj Ž1-Ûºg€I>I>$Ÿ$Ÿj7777€BUFR&bÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏUUUUUUUUUUUUUUUUU]ï{Þ÷½óœç9Îsœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{Þ€!B„!B„!BˆB„!B„!B„ ŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUAUUUUUUUUUUUUDUPUUUUUUUð `j$Ÿ$Ÿ 5 5 5 5ú—ú—€…‚7 €…s€…‚±²|= s÷€g€[€$Ÿ+Ä+Ä|±²|jUsg€s÷€[€Usg€UsUsÕŸ€Ûº1-tPÉÃh1-Ã1-Œa€€,€¤Ë€ô$€,€Us[€[€Us[€$Ÿ+Ä| 5$Ÿ 50Ô0Ô[€½5€Ûºô$ Ž ŽÉj€½5€Éj€Éj€çï±€€,€±€g€0Ô0Ô0Ô7 €7 ú—ú—‚7 ƒ+Ä| 5$Ÿ$Ÿ 5j 5+Ä+Ä~±²|j 5I>g€[€Œa€$Ÿ$Ÿj= jI>s÷€ÉjYÃ Ž Ž€,€0Ô$Ÿj$Ÿjj= I>Œa€[€[€±€7777bBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@ 0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ý¶Û`‹pC!Lt%Kc_Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTUUUUUUUUUUUUUUUUUUUUUUPð `½5€g€[€j 5j0Ôs÷€€,€g€0Ôjjjjj0Ô 5 5j 57 ‚7 ‚±²~7 ‚7 ƒ+Ä|I>¤Ë€Œa€g€Us$Ÿjj= Usg€s÷€I>s÷€çï½5€s÷€g€Us= I>[€Œa€¤Ë€±€ÕŸ Ž ŽYçïçï¤Ë€ÛºÃUÌI—h[挺ŒºÃÉj€¤Ë€Usg€€,€Ûºç€€,€UsI>I>$Ÿ= €, Žô$[ætPtP€ÛºI—1-I>js÷€0Ôj0Ô0Ô˜–€¤Ë€±€s÷€s÷€€,€€,€˜–€½5à Žô$=bçï±€Us€,€€,€ 5 57 s€…€…€$Ÿ€,€7777÷€BUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@$0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUTUUUUUUUUUUUUUUUUUUUUUUUUUð `Us= [€= I> 5j+Ä+Ä| 5 5$Ÿ$Ÿ0Ô0ÔI> 5±²+Ä|[€ÕŸÃÛº½5€±€g€çï±€Œa€±€Éj€˜–€±€çïÕŸ€Œa€0Ôj+Ä|±²+Ä|j[€ô$ÕŸ€ÕŸ€ô$ÛºÕŸ€½5€±€Œa€¤Ë€çïçï¤Ë€Éj1-Ãçï½5€= 0Ô$Ÿ 5j0Ô€,YŒa€±€Œa€Œa€I>[€= ¤Ë€ÕŸ€ç€Œa€Éj$øÉjÃI>0Ô 5 5$Ÿ= ˜–€ÕŸ€Éj€Éj€ÕŸ€Œa€˜–€˜–€½5€˜–€Ûºs÷€[€ÕŸ€ÕŸ€ÕŸ€ÛºI—˜–€= 0Ô€,€ô$ ŽÃÕŸYÛº¤Ë€Us= ÉjI—7777÷€BUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@80I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ð‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTADEUPTUUUTUUUUUUUUUð aI—ô$Œa€Uss÷€g€g€Us0Ôj±²~±²|$Ÿ0ÔI> 5±²+Ä|= 5±²| 5±²|j+Ä|I>[€[€= I>[æ€$Ÿ+Ä+Ä~±²|0Ô0Ôj7 ‚±²+Ä}ú—€…€…ú—‚7 ƒ+Ä~7 ú—ƒ+Ä| 5ú—‚7 ‚7 €…‚7 ú—€jI>I>= = I>0Ô0Ô$Ÿ$Ÿ$Ÿ0Ô$Ÿjjj 5 57 ú—‚7 ú—€…‚7 €0ÔUsg€€,€0Ô0ÔI>0ÔUsI>I>= [€I>= 0Ô0Ôj 57 €7 ƒ+Ä|j˜–€çïÛº½5€±€¤Ë€s÷€g€Us¤Ë€Œa€˜–Ãs÷€g€Œa€g€±€Us7777÷€BUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@P0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Ûm¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©n|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUT@@UUUUUUUUð `$ŸI>0Ô 5I>ÛºI—h½ŽÉÃŒº1- ŽYUÌÕŸ€çïÕŸ€½5€Ûº[æ€ô$±€g€[€g€Œa€ÕŸ€Ûº½5Y$ø¤Ë€€,€g€s÷€Us€,€Œa€s÷€Us[€€,€ÕŸ€Éj€I>I>= j[€0Ô 5$ŸUss÷€I> 5$Ÿ= $Ÿj$Ÿ 5 5I>= 57 €+Ä+Ä}ú—ú—ú—€$Ÿ 5= +Ä+Ä+Ä+Ä+Ä|jj 5$Ÿ= 0Ô= s÷€ 5±²~±²~±²~±²+Ä|$Ÿ€,ÃÕŸ€€,€= g€˜–€˜–€s÷€I>= $Ÿs÷€g€[€[€$Ÿ[€j= s÷€€,€€,€s÷€s÷€= 7777÷€BUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@d0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUPEUUUUUUUUUUUU@ð `I>I>I>0Ô0Ô[€s÷€[€[€Œa€ô$ Ž˜ï€ÕŸ€[€I>j0Ô0Ô[€€,€çïô$±€½5€s÷€Œa€½5€˜–€Usg€[€UsÛºÛºYçï€,€€,€¤Ë€½5€±€±€¤Ë€ô$[ƒ+Ä+Ä|+Ä| 5+Ä| 5 5$Ÿ$Ÿ0Ôs÷€±€±€$ŸjjUs[€$Ÿ$ŸŒa€s÷€Œa€Us€,€s÷€= = 0ÔUs0Ô= 0Ô[€˜–€çïô$ÕŸ€Éj€±€Œa€˜–€¤Ë€s÷€€,€˜–€˜–€Éj€€,€±€$Ÿ 5±²|= ¤Ë ŽYŒa€I>j 5±²~±²+Ä}s€…ssss€…ú—‚7 ƒ+Ä~±²+Ä~7 € 5+Ä|7777÷€BUFR&bÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏBUUUUUUUUUUUUUUUUUUUUUUUU^÷½ï}ï{Þ÷½ï{Þ÷½ï{Þ÷€B„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œ„!@‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èKçÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUPUUUUQUUUUUUUUUUUUð b±²|±²| 5+Ä}€…s€…sú—€…€…‚7 ‚7 ‚±²~±²}ú—€ 5$Ÿj±²|$Ÿ+Ä|= j$Ÿ 5 5j 5j0ÔI>s÷€¤Ë€½5€çï½5€ÕŸ€½5€s÷€I>j0Ô 50ÔUs½5€±€$Ÿ±²+Ä+Ä|I>g€¤Ë€€,€€,€s÷€ÕŸ€ÛºÃô$tP˜ï[æèH˜ïÃ0Ôj+Ä| 50ÔÕŸ€ô$s÷€Éj€ÛºÛº±€ÛºçïÃ¥$[æ=b[æñ€Œa€g€ 5g€j$Ÿj0Ô Ž1-Ãçï= = = Œa€˜–€s÷€[€g€ 5˜–€çïÛº˜–€= €,€g€s÷€€,€7777bBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€0 $’I$’I$’RI$’I$’I$›m¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c­sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUATUUUUUUUUUQUUUUUUUUUUUUUUð `[€[€g€= $ŸI>I>$Ÿ= s÷€[€$Ÿ0Ô[€±€Œa€˜–€UsUsI>0Ô7 ú—€ 5$Ÿj+Ä|= $Ÿ$Ÿ0Ô+Ä|0Ô 5I>s÷€çï1-çïUs€,€s÷€€,€g€½5€˜–€ÕŸ€ÉjI—UÌ[挺I—½5€€,€¤Ë€Éj ޽5€˜–€s÷€Œa Ž[€0Ôjj$Ÿ+Ä|= [€= = = = I>€,€g€€,€s÷€Œa€¤Ë€ÛºY˜–€g€€,€Œa€Œa€s÷€s÷€Éj€±€˜–€Œa€s÷€I>UsI>s÷€€,€€,€[€g€˜–€g€s÷€0Ô$Ÿ0Ô 5j0Ô€,€ÛºÛºÕŸ€±€Œa€ÕŸYÉj€çïô$I—7777ïBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€(0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUð aÃYÕŸ€ô$ô$ÕŸ€±€Us= ±²+Ä~7 €0Ô½5€Éj€Éj€ÕŸ ŽÃ=bYÃUÌI—$øÉj€ÕŸ€çïçï Žô$ÛºçïÛº½5€ÕŸ€½5€ÕŸ€çï$ø1-Ã$øUs[€jjj€,€½5€s÷€Ûº1-à Žçï½5€Œa€˜–€[€€,€˜–€[€0Ô0Ô0Ôj 5 5$Ÿ 5jjg€s÷€Œa€= I>I>s÷€g€€,€[€˜–€¤Ë€±€€,€Œa€Œa€˜–€g€¤Ë€s÷€¤Ë€±€s÷€±€˜–€½5€ÕŸ€±€s÷€j½5€±€¤Ë€Œa€½5YÛº½5€¤Ë€g€Us€,€s÷€[€g€˜–€€,€[€gÂ=btPtP€ô$ Ž7777ïBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€@0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ …1Ò¥±®|#)Ò¶¸!¦:¥±®„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUQUUUUTUUUUUUUUUUUDUDUð aYÛº½5€¤Ë€±€ô$UÌUs€,€¤Ë€[€= I>g€Œa€UsŒa€çïÃ[€Us 5+Ä|$Ÿjj0Ô$Ÿg€s÷€Œa€€,€s÷€g€g€€,€[€±€€,€s÷€ 5 5j+Ä~±²+Ä|0Ô= Éj€çïà Žô$Éj€½5€˜–€±€Œa€Œa€Œa€¤Ë€±€Œa€¤Ë€çïô$½5Y˜–€g€s÷€= 0ÔUs¤Ë€Ûº±€Éj€˜–€[€s÷€s÷€s÷€g€˜–€= g€= Us0ÔUs[€+Ä|±²}€…€…ú—‚7 €…ú—‚7 ‚±²~±²~±²+Ä~±²+Ä|+Ä| 5$Ÿg€= j±²|±²~7 €0Ô[€€,€s÷€[€s÷€7777ïBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€T0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUU@UUUUEUUUUUUUð `Usg€[€[€g€€,€[€$Ÿ= [€€,€Œa€I>0Ô€,€= $Ÿ= s÷€½5€½5€Œa€g€Us[€g€¤Ë€˜–€s÷€˜–€Ûº¤Ë€ô$U̘ï€çïÛºŒa$øÛºg€€,€±€çïô$çï±€Œa€¤Ë€çïÛº½5€±€Éj€çï¤Ë€g€s÷€±€¤Ë€$Ÿ±²+Ä~±²~7 ‚7 € 5 5j0Ô$Ÿ 5 5j 50Ôj0Ô 5$Ÿ$Ÿj$ŸI> 5+Ä| 5jj= ˜–€ô$Éj€˜–€= j±²~±²~±²~7 ƒ+Ä|+Ä+Ä| 5jj$Ÿjjj±²~±²+Ä|0Ô0Ô0ÔI>Us0Ô$Ÿj$Ÿ$Ÿ0Ô0Ô0Ô7777ïBUFR&bÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï‚UUUUUUUUU\ç9ε­kZÖµ­kZÖµ­kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷ B„!B‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `= ±€[€I>$Ÿ$Ÿ= $Ÿ±²}ú—ƒ+Ä| 5I>Us= g€½5€[€[€= 0Ô$Ÿ0Ô$Ÿ[À,€Ûº¤Ë€= I>jjUsUs[€$Ÿ0Ô0ÔUs= I>Œa€s÷€¤Ë€ô$ô$YÉj€[€Œa€= ½5€ÕŸ€½5€½5€s÷€€,€Éj€Éj€Œa€Ûºç€UsI>I>€,€UsI>g€Éj€Éj€½5€˜–€g€Uss÷€$Ÿ$Ÿ$ŸUss÷€[€Us[€±Y Ž˜–€Us= j 5I>½5€Éj€Œa€g€g€[€g€s÷€˜–€g€[€Us[€˜–€Œa€€,€s÷€s÷€I>= 5j$Ÿg€g€g€€,€s÷€€,€g€[€7777bBUFR¶bÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¹$’I$’I$’[m¶Ûm¶Ûm¶àŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Êt­®ˆd)Ž„­sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]YŸ dÈ~ð#`€,€çïYUÌ«˜† “à€O€$Ÿ’|%ªˆ¸Ø“à @€0Ô0Ôa¨†  @ 53á@˜–I—1†$øÈ ®` 5j0Ô0Ô$ø @ @j0ÔÃP @“àO€@@±ÏÞV~ˆÈ~ð\À9ûÀgÂ’ÕĬü L¸ q°ã`9ûÀ€,«?Äd?xýà&% ^šÀ½5€’|UÌÄ´ ÓX-P2Z jÏÀÉj’Õ1†¬ü?x øPã`3á@Éj1-$øŸ¼ÈŒ0#`F0À0Ô’|ô$† Ð @ã`3á@€,YŸ dÈÐ @@¤Ë€·UÌc |(³ðI>mÝÕŸ€7777jBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ 0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$¶Ûm¶ÐŠ …1Е-sáN•°!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUEUTUUAUUUUQUUUUð a$ø¤Ë€½5€€,€[€±€ô$Éj€[€€,€€,€g€Œa€ÛºŒa€Us 5 5g€s÷€0Ô= $Ÿ$Ÿ$Ÿ7 € 5j0Ô0Ô 5 5j+Ä+Ä| 5+Ä|jj 50Ô±²~±²|$Ÿ0ÔI>j0Ô0Ô 57 €j+Ä+Ä+Ä| 5 5$Ÿ 5$Ÿ±²}ú—ú—‚±²~7 ú—‚7 ú—ú—ú—sú—ú—sú—ú—€…‚±²| 57 ‚7 ‚±²+Ä~7 ú—€…€Usg€$Ÿj 5 5+Ä| 5j$Ÿ$Ÿú—€js÷€g€Œa€±€Éj€Éj€½5€ô$±€Œa€7777€BUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ40$’I$’I$’II$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†S RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUQUUUUUTUUUUUUPQUð `€,€s÷€€,€±€½5€½5€€,€= 50Ô0Ô7 ‚±²~7 ƒ+Ä| 5jI>0Ô$Ÿ$ŸI>$Ÿ 5$Ÿj˜–€Œa€I>jI>g€¤Ë€ô$$ø1-ÕŸ€g€g€¤Ë€Éj€±€˜–€g€0Ô$Ÿj$Ÿ 5= Us0Ô 50ÔI>g€±€= 0Ô 5+Ä|j$ŸUs[€±€Œa€€,€$Ÿ= = I>0Ô= 5jj$Ÿ¤Ë€s÷€€,€g€Us0Ô+Ä| 5$Ÿ$Ÿ 5 50ÔjjjUs˜–Y˜–€Us= $Ÿ 5 57 ‚7 €±²|+Ä~±²| 5jUsgÂY7777€BUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀH0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUPUUUQEUQ@UUUUUUUUUUUð aâ-‚ 猺I—1-çï¤Ë€s÷€Éj€ÕŸ€Éj€Œa€Usg€Us$ŸI>= Uss÷€Usg€¤Ë€€,€[€ 5±²}€…ú—ú—‚7 ƒ+Ä|[€Œa€[€[€g€I> 5 5 5j$Ÿj 5+Ä|+Ä~±²+Ä}ú—ú—ss€Œa‚±²| 5 5jj±²| 5j 5jj 5+Ä|7 €…‚7 ‚7 €…sú—ƒ+Ä|$Ÿ€,€˜–€¤Ë€¤Ë€¤Ë€±€ÕŸ€Éj€ÕŸ€¤Ë€çï¤Ë€s÷€˜–€g€g€UsUsg€Us= I>g€[€Œa€€,€€,€s÷€I>g€[€¤Ë€˜–€Éj€Œa€UsI>˜–=b€…h Žô$˜–€¤Ë€½5€7777€BUFRöbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ`@"""""""""""#3DDDDEUUUUUUUUUUUVfffffffffffwpŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[%K|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±¯„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUQUTPPU@UTEUUð `Éj€ÕŸ€±€s÷€0Ô$Ÿj= 0Ô$Ÿ= 0Ô$ŸI>g€[€Usg€UsI>Œa€Usj 5 5 5jI>0Ôj 5 5+Ä| 5= $Ÿ±²~±²}ú—s€…ss€…ƒ+Ä|j 5±²+Ä~±²+Ä+Ä~±²~7 ‚7 ‚±²| 5 57 ‚7 ‚±²~±²+Ä~±²~7 ‚7 ‚±²|+Ä~±²|Os€…€…‚7 €jUs 5±²~7 ƒ+Ä~7 ‚7 ‚7 ‚±²}ú—‚±²+Ä| 5+Ä~7 ‚±²~7 ú—ú—€ 5$ŸI>g€s÷€€,€0Ôj+Ä| 5+Ä| 50Ô= [€= = g€= 0Ô7777€IBUFR&bÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÂUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷½ï{ÞðB„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1ŒcB„!@Š2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@AUUU@UUTUUUUUUUUUUUUUUQUUUEUð ` 5$ŸI>[€g€g€g€g€ 5±²+Ä+Ä|±²+Ä|$Ÿ$Ÿ 5±²}ú—€$Ÿ$Ÿ[€0ÔI>$Ÿj 5+Ä}ú—ƒ+Ä|0ÔUs˜–€€,Ø–€[€[€ 5$Ÿ±²| 5s÷1-¥$‚1† ç= 0Ô= 0Ô$Ÿ= I>j$Ÿg€½5€˜–€0Ô= $Ÿ0Ô$Ÿ[€¤Ë€ÛºÉÃŒº˜ïŒºY€,€€,€ÕŸUÌtPI— ŽŒºô}ô} çUÌŒºUÌ Ž¤Ë€[€±€ÕŸ Ž1-ô$±€ 5+Ä| 5j= $ŸI>s÷€¤Ë€j 5+Ä|I>s÷€Uss÷€±€€,€7777bBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUEUUUUPU@UUUUU@UUUUð `UsUs= I>I>I>UsŒa€ÛºI—[æ€Éj€ÕŸ€g€€,€g€Œa€g€ŒaY=bg€$Ÿ+Ä~±²|0Ô$Ÿ$Ÿ€,€€,€= 0Ô0Ôg€j= jjj7 €$Ÿ˜–€[€I>I>UsI>I>Us[€¤Ë€€,€0Ô$Ÿ= 0Ô0Ô7 ‚7 ‚7 ‚7 €…s‚7 ‚7 ‚±²~±²~±²|$Ÿ 5+Ä+Ä|j 5$Ÿ 5±²~7 ƒ+Ä~±²}€…‚±²~±²| 5s÷€˜–€±€¤Ë€g€±€½5€¤Ë€Éj€¤Ë€½5€ÉjY€,€I>= jj+Ä+Ä~7 € 5$Ÿ˜–€½5€±€Éj€½5€½5€Éj€½5€Éj€Éj€Ûºô$ô$¤Ë€7777jBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï(0’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹:V×D2ÇBT·>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUPUUUUUUUUUUUUUUUUUUUUUUPUUUð aY¤Ë€s÷€s÷€˜–€$Ÿ+Ä+Ä~±²|Œa€˜–Y[€[€$ŸUs= 0Ô€,€g€g€½51-[æ€Éj€ 5j 5$Ÿ$Ÿ€,€Ûº½5€˜–€¤Ë€€,€s÷€s÷€Éj€˜–€UsI>= [€Œa€s÷€s÷€¤Ë€ÕŸ€= j= ˜–$ø=bçï½5€€,€g€Œa€€,€ÕŸ€½5€±€½5€˜–€€,€Éj€UsÉj€¤Ë€0Ô0Ô 50Ô0Ô$Ÿj$Ÿj0Ô$Ÿ$ŸI>= Us€,€€,€g€0Ôj0Ôj7 ú—ú—€…€…€…‚7 ‚7 ‚±²~±²+Ä| 5 5$Ÿ$ŸUs¤Ë€¤Ë€±€g€= ¤Ë€˜–€˜–€g€7777jBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠS |#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUTUUUUUUUUUUUUU@Eð `€,€ÕŸ€ô$Œa€[€½5€¤Ë€Œa€g€[€±€± ŽÃÃç€Œa€±€Éj€Ûºô$ô$½5€Œa€g€Us[€g€UsŒa€Us$ŸI>I>g€I>€,€€,€s÷€I>I>[€[€€,€±€Éj€¤Ë€˜–€½5€UsŒa€g€ŒaY Ž¤Ë€Éj1-±€= j 5+Ä~±²~±²| 5I>s÷€[€g€s÷€€,€¤Ë€±€½5€ÕŸ€Ûº¤Ë€¤ËY ޱ€Éj€Œa€¤Ë€[€[€= UsÉj€Ûº˜–€½5€Œa€g€s÷€½5€g€g€€,€€,€s÷€½5€çïô$˜–€g€$ŸjUs 5 5I>€,€UsI> 5+Ä~±²~±²|+Ä|7777jBUFRæbÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏT0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUQU@UUUUUUUTEUUUUUUUUUUUð `$ŸUsI>$Ÿ$ŸUs[€¤Ë€±€Œa€jI>I>jú—ú—ú—€…ú—ú—‚7 ú—‚±²|j= 5I>j+Ä|±²~7 ƒ+Ä|j[€¤Ë€[€$Ÿ$Ÿ+Ä+Ä+Ä| 5 5j$Ÿ[€0Ô$Ÿj0Ô 5 57 ‚±²~±²|I>I>g€Us= Us0ÔI>0Ô= g€s÷€˜–€€,€s÷€€,€[€0Ô±²|0Ô+Ä|[€ÕŸ€ô$½5€˜–€€,€˜–€˜–€UsÉjhh[æ Ž[æ¥$UÌ$øý5€I>Us= 0Ôg€€,€Éj€¤Ë€¤Ë€[€s÷€Usg€[€€,€˜–€¤Ë€±€Œa€½5€€,€Usg€€,€g€I>7777jBUFR&bÿ« fÏ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏUU]kZÖµ­kZÖµ­kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½ï½ï{Þ÷½ï{Þ÷½ï{ÞðŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUTPUUUUUUUUUUUð `= €,€Œa€ÛºYÕŸ€±€s÷€g€= g€Œa€s÷€€,€¤Ë€˜–[ætP€…€…UÌ1-1-YÛºçïçïÉj€ÕŸ€±€[€[€˜–€€,€s÷€Œa€˜–€½5€¤Ë€Œa1-ô}½Ž[æ=bô$ÕŸ€Éj€±€Éj€½5€Œa€Us0Ô[€$Ÿ= 0Ôj0Ô0ÔI>˜–$øÃÕŸ€Œa€ 5+Ä~±²~7 €j$ŸUs0Ô+Ä~±²+Ä|j$Ÿjj0Ô[€Uss÷€˜–€¤Ë€s÷€= = 0Ô= Œa€±€ÕŸ€Éj€˜–€g€Œa€€,€˜–€€,€¤Ë€±€çïçï½5€ÕŸ€ô$ÕŸ€±€½5€Ûº¤Ë€½5€Éj€½5€¤Ë€ç[æ€Ûº½5€7777bBUFRæbÿ« fÏ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUU@QUUUUUUð a$øÕŸ€Œa€±€ÛºÕŸ€ÛºÃ$øÕøâ-˜ïhI—=bYYçï ŽhU̱Y1-±€Œa€= g€g€€,€s÷Ãh‚ ç1†bZçï½5€s÷€Œa€€,€˜–€ÕŸ1-I—¥$èH±Y€Éj€j[€UsI>$Ÿ0Ô 5˜–½Ž€±€s÷€Éj€Ûº±I—Ûº˜–€Œa€ÛºÃUÌtPY0Ô+Ä|jjj= s÷€˜–€s÷€˜–€˜–€ÕŸ€˜–€s÷€[€$Ÿj0Ô$Ÿ0Ô$Ÿ[€g€ 57 ‚7 ‚7 €7 €j¤Ë€Œa€±€½5€€,€¤Ë€ô$1-1- ŽYY±Yâ-‚V%tP€ÕŸ€±€±€Éj€½5€Ûº½5€€,€7777ïBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@0’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹:V×D2ÇBT¶9ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUTUUUUUUUUUUUUUUUUUð a=b çñ€˜–€€,€$Ÿ 5±²|0Ôs÷€˜–€˜–€s÷€[€I>$Ÿ0ÔUss÷€€,€s÷€½5€½5€ô$h[æ Ž1- Žô$ÕŸ€çï Ž ŽÉj€Œa€˜–€g€g€Œa€g€€,€g€[€g€Usj$Ÿ 5±²}ú—€±²|0ÔÛº$ø ŽÕŸ€g€Œa€[€Us[€[€g€±€½5€Ûº1-[ætPhUÌÃÉj€±€0Ô 5s÷€s÷€ÕŸ€Œa€$ŸjI>Us[€UsŒa€ô$À…=b±€½5€¤Ë€½5€ÕŸ1-çï±€s÷€[€[€g€Œa€€,€½5€˜–€s÷€€,€s÷€çï½5$øI—ŒºI—Œº€çï$Ÿ±²| 5±²|7777ïBUFRöbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@0@DDDDDEUUUUUUUUUUUVfffffffffffgwwwwwwwwwwwxˆˆˆˆˆˆˆ€ŠB˜èJ–ƹðŒ§JÚà†B˜èkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUTUQUPUUUUUð b7 ‚7 €j±²|[€˜–€€,€= [€Us= 0Ô0Ô0ÔUs˜–€ÕŸ1-1-Yg€g€jjjg€½5€ô$$øg€[€g€˜–€±$ø€…€…Ã1-çïŒa€Éj€s÷€UsUs˜–€çï½5€Éj€€,€= Us0ÔI>I>Us[€½5€±€çïÉj€±€±€[€I>$Ÿ±²|jUs$Ÿ+Ä|+Ä+Ä|+Ä| 5$ŸjI>$Ÿ 5±²~±²+Ä|±²~7 ú—€…ú—‚7 ƒ+Ä|j$Ÿg€= ˜–€½5€€,€g€[€g€Us 5+Ä~7 s€Œa€Œaú—€0Ô0Ô˜–€[€g€[€g€˜–€Œa€½5€7777€±BUFRöbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï@P@"""""#33333333333DDDDDDDDDDDDUUUUUUUUUUUUffffffffffffwwwwwwp‹Êt­®Æ¹ðŒ§JÚà†B˜èJ–ƾ”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUPUUUU@UUUUUUUUUUUUUUUUPUUð a1-[æÃÛºçï½5€[€= Œa€˜–€€,€¤Ë€¤Ë€[€¤Ë€½5€±€¤Ë€€,€0Ô 5$Ÿ7 ú—‚7 €UsÛºYÕŸ€˜–€Œa€¤Ë€g€Œa€±€±€Ûº½5€Ûº±€¤Ë€s÷€ 5 5j7 ú—ƒ+Ä|UsÕŸ€Ûºs÷€˜–€˜–€¤Ë€[€¤Ë€˜–€±€½5UÌô$ô$à Žñ€I> 5 50ÔI>Éj€ÕŸ€½5€±€s÷€¤Ë€½5€ÕŸ€±I—I—htPI—UÌçïŒa€±€½5€ÕŸ€±€I>= $Ÿ[€€,€I>0ÔjI>s÷€0Ô= 0ÔI>ÉjI—=bY½5€I>7 €Œa€…s‚7 €$Ÿ½5€ô$±€¤Ë€¤Ë€s÷€¤Ë€7777€±BUFR&bÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏBUUUUUUUUUUU]kZÖµ­k[Þ÷½ï{Þ÷½ï{Þ÷½ï|ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷ B„!B„!BŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUTUUUUUEUUUU@UUUUUPUUUUð `€,€¤Ë€½5€Ûº Žô$ÕŸ€çïÉj€±€s÷€I>= ±²}ú—‚7 ƒ+Ä|g€Œa€¤Ë€s÷€Usg€s÷€UsÉj€Éj€Éj ŽÉj€s÷€= $ŸjUs+Ä+Ä~7 ‚±²|I>±€çï½5€g€½5€±€€,€g€¤Ë€¤Ë€˜–€½5YÕŸ ޽5€ÕŸ€ 5jj+Ä|jj1-[æYô$ÕŸ€Œa€¤Ë€˜–€Éj€Œa€¤Ë€¤Ë€±€˜–€[€[€$Ÿ+Ä}€…ú—‚7 ‚7 ƒ+Ä|js÷€¤Ë€¤Ë€¤Ë€€,€Œa€g€I>[€I>Us˜–€€,€g€0Ô0Ô 5 5 5jI>7 ú—€$Ÿ0Ôg€0Ô$Ÿ 5j0Ô 5$Ÿ$Ÿ0Ô€,€g€[€½5€7777bBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS c\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðU@QU@UUUUUUUUUUUUUUUUUUUUUUUUð `= [€ 5= 0Ô+Ä}€…‚±²}€…€…€…‚7 ‚7 €…‚±²|j+Ä|$Ÿ= I>= 5+Ä}€…€Œa‚7 ú—ƒ+Ä|$Ÿ¤Ë€çïÃÛºÛº¤Ë€Œa€s÷€€,€±€ÛºçïY ޽5Ã1-1-ÃÕŸ€Ûº¤Ë€˜–€€,€¤ËñYÉÀ՟€çïÕŸYÃh˜ï±Y€…â-‚²¥$[æ=bUÌô$½5€ÉjY[æâ-â-Œº[怱€Éj€ÕŸ€±€ô$I—½ŽÉñYâ-¥$[æUÌçïô$±€€,€s÷€˜–€Ûº1-Y$ø ŽÃYçïçïô$=bUÌI—=bYÛº€,€[€I>I>0Ô0Ôj0Ô˜–€7777BUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€ 0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUU@UUUUUUUUUUUUUUð `½5€Ûº±€¤Ë€±€Œa€€,€Œa€Éj€ÕŸ€Ûºô$[€˜–€s÷€I>= 0Ôg€$Ÿú—€j+Ä+Ä|0Ô= = [€g€UsI>g€Œa€Éj€½5€s÷€g€¤Ë€ÕŸ€çïÕŸ€€,€Usg€= j 5 5[€s÷€€,€Us+Ä|j+Ä+Ä|j0Ôj[€ 5$Ÿ±²+Ä~7 ‚7 €Œa€ÛºÕŸ€½5€¤Ë€˜–€I>I>Uss÷€Œa€çïÃ1-$øô$ Žçïçïçï Žô$ÕŸ€ÕŸ€ÉjÃ=btP1-Éj€s÷€˜–€çïÕŸ€Ûºô$1-[挺ô}ô}±Y˜ï€…I—Ûº˜–€[€½5=bÕøô}IðÉÀçïÕŸ€˜–€½5€7777BUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€40I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUDUUUUUUUUUUUUUUUUTUUUUUð `ô$U̘n½ŽŒºÕøÉÃtP$ø ŽçïçïÉj€Ûº=bô}±²‚Õø€½5€g€€,€[€Œa€Éj€½5€±€¤Ë€¤Ë€˜–€g€[‚±²|$Ÿss€…€jI>˜–€€,€˜–€±€±€˜–€s÷€Usg€Œa ŽÃÃçïÉj€s÷€±€g€Us0ÔI>s÷€¤Ë€±€±€Éj€½5€[€= = [€¤Ë€ÕŸ€ÕŸ€Éj€ÕŸ€ÕŸ€Œa€€,€Œa€€,€Œa€½5€Œa€s÷€s÷€Œa€¤Ë€€,€g€[€I>I>I>Us0Ô= Usg€˜–€Œa€Œa€UsI>$Ÿj±²|jI>g€[€0Ôj 5 5 5 5j= [€Œa€Œa€€,€Us= I>7777BUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€H0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶í¶Û`‹pC!Lt-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðDUUUTUUUUUUUUUUUUQUUUUUEUUUUT@ð `j+Ä|7 ú—‚±²|j0Ôg€I> 5 5 5$Ÿ= Us0Ô0Ô$Ÿ$Ÿ 5+Ä| 5j$ŸI>g€s÷€Us$Ÿ$ŸI>I>g€s÷€±€½5€Éj€±€±€˜–€Œa€g€I>0Ô= jjj= g€s÷€[€g€€,€s÷€¤Ë€½5€½5€½5€½5€½5€½5€½5€½5€çïçïŒa€0Ô+Ä|$Ÿ˜–ÃYÕŸ€±€g€s÷€Œa€˜–€½5€ÕŸY½5€±€˜–€¤Ë€¤Ë€Ûº½5€g€= +Ä|jI>[€g€= s÷€= 0Ô[€[€g€g€g€Œa€˜–€Ûºs÷€= jj7 € 57 ƒ+Ä~7 €…‚7 ‚±²|j7777BUFRæbÿ« fÏ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï€`0I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUUUUUUUUUUUUUUUUUUUUUUUUUUð `$Ÿj 5jŒa€g€s÷€Éj€Éj€= = = I>g€0Ôú—‚7 ‚7 ú—‚±²|= ±€çïçï½5€±€Éj€Œa€s÷€s÷€˜–€çïÛº Žô$$øYÕŸ€Œa€€,€Us$Ÿj[€˜–€½5€Ûº€,€€,€Œa€˜–€s÷€±€½5€ô$YYô$Yçïô$YÛºÉj€g€[€s÷€˜–€Éj1- ŽÉj€Ûº¤Ë€½5€˜–€±€ÉjY ŽÃô$ô$½5€Œa€Œa€j 5j0Ԥˀۺ1-1-Ã$ø Ž Ž1- ŽhI—tP€…tP[æ[æh[ætP$øô$çïÕŸ€ÛºÛº½5€¤Ë€¤Ë€±€ÕŸ Ž=b1-UÌhI—7777BUFR&bÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï‚UUUUUUUUUUUUUUUUUU^sœç;Þ÷½ï{Þ÷½ï{Þ÷½ï}ï{Þ÷½ï{Þ÷½ï{Þ÷€„!B„!B„!„!B„!B„!BÆ0‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±¯„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUPUUU@UUUUUEUUUUUUUUUUUð aÃô$=btPh[æ[ætP$øô$Éj€Éj€¤Ë€g€Œa€˜–€€,€g€g€Éj€g€g€gÂY¤Ë€˜–€€,€Us[€= +Ä+Ä}ú—ss€…ú—€g€ 5$Ÿj0Ô0ÔUs¤Ë€s÷€€,€g€Us[€0Ô+Ä}ú—‚7 ss€…‚7 €I>˜–€ÕŸ€½5€¤Ë€¤Ë€ÛºÉj€½5€Œa€Éj€[€[€çï¤Ë€€,€= j 5+Ä|jUsI>s÷YÉj€€,€= I>[€[€±ÃI—[æhhUÌô$Œa€I>= 0Ô= [€çï$ø[æÃ Ž€,€Éj€ô$ ŽI—I—[怅Œºh ŽYÛº¤Ë€s÷€Us7777bBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTUUUUUUUUUEUUUUUUUUUUUUUð `g€= g€ۺçïà ŽçïÉj€±€½5€ÕŸ€½5€çï ޱ€±€˜–€¤Ë€s÷€I> 5 5±²~±²~7 ƒ+Ä|$ŸUsŒa€€,€s÷€[€UsÉj ŽÃYÕŸ€±€g€I>$Ÿ+Ä~±²+Ä~7 ‚7 sú—‚7 €j= $Ÿ0Ô= 0Ô$Ÿ= [€± Žô$ÕŸ€Éj€Œa€˜–€Us= +Ä|0Ô±€Éj€Éj€ÕŸ€½5€˜–€±Y½5€ÛºÃ$øYY Žô$YYÛº€,€[€j0Ô½5Ã$øô$ô$YY Ž$ø1-=b=b$øYô$ÛºÕŸ€çïÛºYçïô$ÛºÛºYÃô$ÛºÕŸ€7777æBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ$0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUPUUUU@UUUUUAUUUUUUUUUð `çïÉjYÃÃI—UÌUÌI—=bUÌI—UÌ=bUÌ$øÃô$çï Ž=b[æ[æYô$ Ž$ø1-Ã=bI—ÃÉj€˜–€[€[€= 5+Ä~7 ú—‚7 €s÷€Ûº=bÃ Ž Žçï€,€¤Ë€ÛºYô$Éj€¤Ë€¤Ë€½5€±€€,ƒ+Ä+Ä~7 ú—‚7 ƒ+Ä|[€½5 Ž$øô$€,€Us€,€±€˜–$ø$øÃ$øçïçïÉj€ÛºÛºÕŸ€g€±²+Ä|I>ÕŸ€Éj€ÕŸ€Éj€Éj€ô$ÕŸ€˜–€¤Ë€˜–€±€s÷€¤Ë€˜–€½5€Éj€±€¤Ë€±€˜–€s÷€= j0ÔUsUsI> 5 5jj= ˜–€Éj[æUÌ7777æBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀ80’I$’I$’I)$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUQUUUUQUUUUUEUUUUUUUUUUUð `ô$±€½5€Ûº˜–€€,€¤Ë€€,€Œa€˜–€ÕŸ[æÉ‚Ið€…YUÌtP[æ¥$€…ŒºtP[æ Ž Žô$çï½5€€,€0Ô$Ÿ±²|g Žô$ÛºÛº¤Ë€±€ô$hhh[æ=bçïs÷€I> 5+Ä| 5[€± Ž1-Ãô$ÕŸ€Ûº±€ÕŸ$ø€…˜ï˜ïtPI—=b ŽÉj€˜–€j7 €$Ÿs÷Y[æ˜ïUÌÃÛº¤Ë€€,€¤Ë1-Ã Ž¤Ë€ÕŸ€ÕŸ€s÷€s÷€0Ô+Ä|+Ä|= I>˜–1-[æÃô$ÕŸ€¤Ë€±€½5€ÛºÛºô$Ûº½5€½5€¤Ë€¤Ë€Œa€€,€0Ô$Ÿj$Ÿ7777æBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀP0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUPUUUUUUUUUUUUUUUTUUýà`= s÷€¤Ë€½5€½5€˜–€s÷€€,€€,€Œa€±€ô$ ŽÛºÏ…Éj€±€¤Ë€€,€OX€Œa€s÷€g€OX€[€g€€,€½5€˜–€˜–€¤ËY˜–€çïçïô$YYô$ô$ÃÃYô$Œa€+k‚¥}|= ½5€Éj€ÛºçïÏ…±€±€çïô$Ã$øÃ Ž=bŒºh$øYYô$Ï…±€½5€˜–€Éj€Ï… Ž1-Ï…çïçïçï ŽhhtP[æhI—YÛº[€[‚¥}~+k‚¥}}îb€OX€Éj ŽÃÏ…¤Ë€€,€s÷€±€Ï…½5€˜–€g€[€˜–€g€j¥}~+k€ú>îb‚+k€jI>Éj1-=bY ŽÉj€7777æBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏÀd0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS c\øFS¥mpC!Lt%Kc_Êt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUUUUUUUUTUUUUUUUUUUAð `½5€ÛºI—ÃUÌô$˜–€= €,€Us$Ÿj 57 s€Œaƒ+Ä|0Ôs÷€Éj€¤Ë€€,€Œa€€,€˜–€¤Ë€±€€,€±€[€ÛºYUÌUÌäˀg€Œa€€,€j€,Y$ø±€ÕŸ€˜–€±€ô$YYÕŸ€ô$€,€€,€I>0Ôj±²~±²}€…€Œa€Œasƒ+Ä| 57 €0Ô0Ôj$Ÿ= jj 5+Ä~±²~7 ú—‚7 €$Ÿ€,€½5$øI—h€…tPUÌI—[æUÌh[挺‚ô}½Žh1- Žô$Éj€s÷€I>½5€çï ŽÛº½5€¤Ë€Œa€s÷€¤Ë€±€g€Œa€[€ 5+Ä+Ä|7777æBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUUUUUUUPUUUUUUUUUð b7 ‚7 €…‚7 ‚7 €…€0ÔÉj$øñ€s÷€I>I>I>Us¤Ë€çïô$½5€[€[€= +Ä}€…ú—s€Œasú—€$ŸÛº=b1-ô$¤Ë€€,€˜–€Éj$ø$øÛºÕŸ€½5€ÕŸ€s÷€7 €ú—sss‚7 €j[€0Ô 50Ôj 5UsŒa€½5€[€s÷€g€€,€Œa€€,€$Ÿ+Ä~±²~±²+Ä|j[€±€ÕŸ€[€I>0Ô0Ô= = [€˜–€s÷€Œa€˜–€g€€,€$Ÿj 5±²}€…ƒ+Ä|±€±€Œa€Œa€s÷€Œa€Œa ŽÃ ŽYYÕŸ€½5€˜–€g€ 57 ‚7 ú—€…ú—‚±²|= ˜–€7777æBUFRæbÿ« fÏ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUU@UUUUUUUUTUUð `Éj€¤Ë€s÷€Œa€s÷€I>€,€s÷€± ޱ€Us= = j 5+Ä|7 ‚±²|$Ÿ0ÔÉj€çïUÌ=bÉj€Ûºs÷€¤Ë€½5€€,€Éj€ÕŸ€Ûº Ž=b€…€ÛºUs= j= j 5jŒa€ÕŸ$øô$½5€Éj€½5€Éj€˜–€Ûºç€¤Ë€Éj€¤Ë€½5€g€0Ô 5ú—ú—ú—€…ƒ+Ä|0Ôg€½5€¤Ë€Œa€˜–€Œa€˜–€¤Ë€½5€ÕŸ€çï ŽÉj€˜–€Éj€Us 5€…‚7 ú—ú—ú—€ 5[€ô$$ø1-I—1-ô$Ã1-ŒºtPhI—YÕŸ€0Ôj$Ÿ$Ÿg€j±²~7 ‚±²|Us˜–=bh1-ÕŸ€s÷€g€Œa€Œa€7777æBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ï,0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTUUUUUUUUUUUAUUUUUUUUUUTð `= I>g€I>I> 5 5$Ÿ±²|ú—‚±²~7 ú—‚7 ú—€= [€g€g€g€s÷€˜–€¤Ë€g€I> 5j 5 57 ‚7 ƒ+Ä~7 ƒ+Ä|j$Ÿ±$øI—hI—1-I—$øUÌUÌI—=b Žô$çï=btPUÌI—=bÃÛº[€0Ô€,€ÉjY$øÛºYÃ[怅€…tP[æY€,€Us0Ô€,€Œa€j+Ä+Ä|I>ÕŸ€ÕŸ€ô$=b1-=bçï½5€ÕŸY ŽI—=b=b=b[æ=b1-çïs÷€= I>[€€,€¤Ë1-1-Ãçïô$ÛºçïY$ø=b=bUÌÃÕŸ€¤Ë€¤Ë€I>0Ô+Ä|7777æBUFRæbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏD0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUTUUUUUAUð a€…ss‚7 €0ÔŒa€˜–€ÛºÛº€,€½5YÛº1-=b[æI—=bô$çï ŽçïÉj€Ûº€,€s÷€Ûº$ø1-hÉÂV%%QÕø¥$€…h[æI—=bI—I—tPtP=bÃ$øI—=b1-Éj€g€= Us[€= g€g€s÷€g€s÷€½5€±YÕŸ€çïÛºÃ=b Ž$øçïÕŸ€çï Ž1-hÉÂ1†²²ô} ç çÉÃ¥$[æI—1-I—I—1-=b1-UÌUÌ Ž= j+Ä|$ŸUsÉj€ÕŸ€çïçïÛºYÃÃçï$øçïçï±€s÷€Usg€= $Ÿ 5+Ä~±²|Usg€Œa€g€7777æBUFRæbÿ« fÏ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏX0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!§BT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUPUUUEUUUð `[€s÷€s÷€g€g€s÷€€,€s÷€[à Žý5€Us0ÔI> 5j$Ÿ€,€½5€Ûº±€˜–€˜–€±€˜–€½5€ÛºçïŒa€Us0Ôj+Ä}€…€…‚7 ú—ú—ú—ú—€$ŸUsYÃ1-ÕŸ€ÕŸ€çïŒa€0Ôj$Ÿ7 ‚7 €7 ss€…€…€…€…€Œa€Oú—‚±²|+Ä|ú—€…s€jI>±€ÕŸ€Us+Ä~7 ú—€…s€Œaƒ+Ä| 5+Ä+Ä|7 ƒ+Ä|0Ô0Ô0Ô[€s÷€Œa€= 0ÔUs±€ 5ú—s‚±²|j0Ô±²|jŒa€ô$1-ÉjÃY Ž ŽYÃI—±Y€…€7777æBUFRfbÿ« fÏ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÏUUUUUUTD»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»°]kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷¾÷½ï{Þ÷½ï{Þ÷½ï{À!B‹:V×D2ÇBT¶5Ï„e:V×D2ÇBØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUAUUUUUUð a=bI—1-çïYÕŸ€˜–€€,€$Ÿ 5= [€s÷€g€±€Éj€çïÉj€ô$$ø1-I—UÌ1- ŽÉj€ô$¤Ë=bÕŸ€ÕŸ€Éj€Éj€ÕŸ€ô$Y½5€ô$Éj€ÕŸ€ÛºÃ1-=bhUÌ$øÛºÕŸ€½5€½5 ŽÛº¤Ë€[€s÷€½5€ÕŸYô$ô$ÛºçïYÃ[æ=bUÌ[æh1-1-$øÛº½5=b$ø ޱ€½5€ô$çï Žô$ô$ ŽÃ Žô$ô$ Žô$Éj€ÕŸ€ÛºÕŸ€ÕŸ€±€g€€,ƒ+Ä~±²|jUsçï ŽY1-ô$ÃYÛº$ø=bŒºh$ø1-I— Žô$s÷€[€[€$Ÿj7777BUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUUUUUUUUUUUUPUUUUUQUUð `g€¤ËÃY Ž1-ÛºÕŸ€ô$ô$ÕŸ$øŒa€UsI>g€g‚±²}€…s€Œa€O€Os‚±²|j+Ä|[€UsI>g€¤ËÃI— ŽÛº=b1-ô$çïÕŸ€ô$YUs= g€s÷€Éjhh½ŽI—YÛºÉjY[€s÷€Éj€ÕŸ€ô$YÃI—çïÉj€s÷€0ÔUsI>0Ô$Ÿ¤Ë€ÛºÃ1-ÛºÕŸ€ÛºÕŸ€¤Ë€¤Ë€˜–€±€I>$Ÿ+Ä~±²~±²}ú—ú—€Os€…€O‚7 €js÷€Ûº Žçï½5€½5€¤Ë€±Ã=btP€…€…˜ïÕø˜ï$øçï[€0Ôj7 €I>ÛºÃô$YÕŸY¤Ë€7777 ŽBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶ÛrI$’I$’I%¶Ûm¶Ûm¶ÛnÛ`ŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[%:V×D2ÇBT·>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUUUUTUUUTUUUTUð `€,€½5€ô$ô$ÕŸ€ÕŸ€˜–€€,€g€gƒ+Ä+Ä~7 ú—s€…€js÷€Éj€Œa€g€I>= = [€¤Ë€½5$ø ŽYÛºYI—Y€,€€,€g€= Us[€€,€ÛºI—$øÛº˜–€g€Uss÷€Œa€ô$[æhhŒºŒºhI—ô$çïÕŸ€ÕŸ€½5€ô$YI—hhUÌI—=b1-YYYÕŸ€Éj€$Ÿ±²+Ä+Ä|$Ÿ½51-çï±€½5€˜–€Éj€¤Ë€ÛºÉj€±€Œa€Œa€g€j7 €…ss€…‚±²|0Ԥˀô$YÛºÛº Žô$ÛºÛºÛºçï½5€˜–€I>I>j 5+Ä| 50Ô0Ô7777 ŽBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@40$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUDUUUUUUUUUUUUUUUUUUUUð ` 5s÷YI—h ŽYô$ô$Ã=b€…tP¥$¥$€…hUÌ$øÛº˜–€€,€Usg€˜–YI—[æ[æ ŽÛºçïÃYY½5€½5€€,€g€g€UsI>0Ôj±²|+Ä|$ŸI>€,€¤Ë€±€±€s÷€s÷€½5€½5Ã=bà Ž1-1-1-=bçï€,€UsI>0Ô€,€Éj€ÕŸY ŽY±€ÛºÕŸY ŽÃ1-1-YÃô$Ûº€,€= 0Ô$Ÿ€,€$ŸUss÷€˜–€ÛºYÕŸ€ô$Y Žô$Y1-UÌI—I—I—1-ô$ÛºUs˜–€[€½5€¤Ë€Œa€½5€Éj€Ûºô$Ûº Žô$7777 ŽBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@H0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUPUUUð a Ž$øI—1-$øô$Éj€ÕŸ€±€˜–€€,€s÷€½5€ÛºçïÛºÛºYçï=bÃY$øYÛº½5€ÛºI—˜ïô}%Q ‚ çâ-hI—UÌ[æÃYYYÃô$ô$ô$ô$±€½5€ô$$øÃ=b1-1-$øI— ŽçïÛº±€s÷€˜–€Éj€ÕŸ€ÕŸ€ô$Ûº½5€ÕŸ€ÛºÛºô$1-1-=b=bUÌÃs÷€0Ô$Ÿ±²~7 €O€Œa€Œaú—€= I>0Ô$Ÿ[€s÷€UsUs€,€±€±€±€Œa€[€0Ô0Ô 5= 5+Ä~±²}ú—‚7 €0Ô0Ô$Ÿ= = Usg€g€€,€˜–Yçï Ž Ž7777 ŽBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@\0$’I$’I$’JI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹[\ÈS RØ×>”é[\ÈS RØçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@ð `ÛºÉj€½5€ÕŸ€çïÛº½5€s÷€Œa€çï Ž1-1-çïà Ž$øÃ1-UÌÉÃŒº±YèH¥$hI— Žô$YçïÕŸ€ÕŸ€ô$=b€…â-‚¥$=b$ø$øhŒº[æ1-1- Žô$ô$ô$à Ž$øÃô$ Žô$Ãà Žô$1-UÌI—[æ$ø$ø Ž ŽYÛºçïÕŸ€çïÛºÉj€Éj€ÛºçïY Ž$ø$ø$øÃ$øô$Y1-$øI—I—$ø$ø1- ޽5€˜–€s÷€= Us$Ÿ$Ÿ[€ÕŸ€çïÉj€¤Ë€¤Ë€˜–€˜–€½5€¤Ë€Œa€€,€s÷€Us= j$Ÿ 5j€…€Œa€Œa€7777 ŽBUFRVbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐBUUUUUUUUUUUUUUU^sœç9Îsœç9Îs½ï{Þ÷½ï{Þ÷½ï{Þ÷Þ÷½ï{Þ÷½ï{Þ÷½ïx!B„!B„!B„B„!B„ Šc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð„ B€€B„!B„!BB„!B„!B„!B„!B„!@B„!an6tÿtþŸcŸcŸcŸctÿtÿ“†ü€,€g€g€€,€gƒtÿtþŸcŸc“†ÿtþbZô$n6tü˜–€½51-±ƒ“†ÿ“†ÿtýèHbZŸctÿtÿtýèHŸcèHn6èHô$zzzbZ¤Ë=bC| ŽÃ Ž1-C|[æ1-Y=bYÛº½5€½5€¤Ë€gƒ“†þbZbZèHtüs÷€çï$øÃçïô$ ŽYYC|O±ŒºO±Ã$øÃÃý5€±€g€Œa€¤Ë€çïY=b[æO±Yçï½5€ÃPçï Ž Žh=bYô$ô$ô$¤ËƒtÿtþbZ“†ÿtü½5$ø¥$齎܌ºtPO±€7777ŸBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ 0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[ŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUPUUUQUUUð `çïô$Y=b1-YÕŸ€€,€¤Ë€g€+Ä~7 ‚7 €$Ÿs÷€±€½5€±€Œa€Éj€Éj€±€Éj€½5€Éj€ÕŸ€€,€€,€s÷€0Ô= j+Ä|7 ú—ƒ+Ä|$Ÿs÷€UsUsUsUsUs[€±€½5€çïçï±€½5€g€I>0ÔI> 5±²~±²}ú—‚7 ƒ+Ä|0Ôg€I>I>[€UsUsUs0ÔUs[€Usj±²}ú—€…€…€Œa€…s€…‚±²|j¤Ë€ô$ÛºÕŸ€¤Ë€±€€,€s÷€[€€,€g€[€= j+Ä|€…s€Œa€…‚7 ú—ú—ƒ+Ä|I>¤Ë€¤Ë€¤Ë€[€$Ÿ$Ÿ$ŸjUsj±²~7 ‚7 s€7777a€BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ$0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUUUUUUUUPUQUT@EUUUUUUð asú—€Œa€…s‚±²|0ÔÕŸ$øô$½5€s÷€s÷€0ÔI>€,€ÕŸ$øÉj€çï±€Éj€s÷€I>7 ‚7 €…s‚7 €jI>Us€,€Œa€˜–€[€I>= Us¤Ë€çïÃY=b€…h€çïUs= I>0ÔjUs±€çïYYY€,€g€s÷€€,€±€½5Yô$Ûº½5€Éj€[€Us= ±²}ú—s€…€…ú—€$ŸUs0Ô 5 5j+Ä| 5€,€½5€ÕŸ€g€I>+Ä| 5+Ä~±²}ú—€ 57 € 50ÔI>0Ô 50Ô$Ÿ$Ÿ[€¤ËÃI—[æ[挺tPtP[æ=b=b=b ŽY$ø[æ€7777a€BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ80$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ„©q”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUTUUUUUUUUUUUPUUUTUUUUð aUÌ ŽYÃ1-$øI—[æ Ž€,€[€j$Ÿ 50Ô[€ÛºtPUÌ[æÃÕŸ€ÛºYY ŽI—I—ô$˜–€g€$Ÿ$Ÿj±²~7 ‚7 ú—‚±²| 5$Ÿ˜– ޽5€[€0Ôjj0Ô= s÷€Éj€€,€[€I>g€ۺ˜–€±€g€Us$Ÿ= €,1-=bÃUÌ ޽5€s÷€€,Y€…UÌ Žçï¤Ë€I>g€€,€$ŸUs€…‚7 ƒ+Ä|Usô$Y Ž˜–€s÷€= = 0Ô= [€[€I>0Ô€,€= 5€…ƒ+Ä| 5 5$Ÿ[€s÷€¤Ë€g€[€˜–€Éj€s÷€Œa€Œa€ÕŸ€çïçï=bUÌ7777a€BUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ЀL0$’I$’I$’JI$’I$’I$›m¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹[\ÈS RØ×>”é[\ÈS RØ×>•+k€" c¡*[\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUð a[æ[æI—1-$ø$øô$ÕŸ€½5€±€ô$ Ž$øYÕŸ€€,€ÕŸ€±€¤Ë€˜– ŽI—YÛºÛºÉj€½5€s÷€I>I>jj[€Œa€ô$1-Ûº€,€s÷€s÷€g€½5€±€ô$€…±Y¥$ŒºÉñY˜ï[æ$ø$ø$øUÌ1-tPâ-I—=b ŽÉj€¤ËYUÌtPtP=b Ž=b1-YÛº±€s÷€€,€€,€¤Ë€ÕŸ€çïÃçï±€±€€,€±€˜–€¤Ë€½5€Ûºçï½5€½5€Œa€g€0Ô+Ä}ss€…€$Ÿ¤ËtP˜ïUÌÕŸ€çï±€Œa€ÕŸYUÌI—=bçï±€¤Ë€g€= j$Ÿj±²|I>˜–€7777a€BUFR&bÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ЂUUUUUUUUUUUUU\cÆ1ŒcÆ1Œg9Îsœç9Îsœç9ÎsœëZÖµ­kZÖµ­kZÖµ­o{Þ÷½ï{!B„!B„!BˆB„!B„ Št%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUPUU@UUUUUUUUUUUUð `ô$YÕŸ€¤Ë€˜–€Us0ÔI>s÷€¤ËY[æ¥$€…[æ=bYÃÃô$Œa€= UsŒa€˜–€¤Ë€½5€g€j= = g€s÷€¤Ë€˜–€Us= jj 5+Ä+Ä|€…€…€…€…ú—‚7 ‚7 ‚7 ‚±²| 5+Ä+Ä| 5$Ÿ$Ÿ 5j 5$Ÿj7 ‚7 ú—ú—‚±²|0ÔUsŒa ŽÉj€Œa€½5€Éj€Éj€ÕŸ€Éj1-$øÃ$øÛºÉj€Éj€˜–€UsÛºý5€[€€,€½5€ÕŸ ŽÕŸ€±€±€Œa€±€çï±€¤Ë€½5€€,€UsUs0Ôj+Ä}€…ú—€…ú—s‚±²|= Y$ø¤Ë€Œa€g€Us= €,€7777ÿBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀ 0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUEUUUU@UUUUð `s÷€¤Ë€¤Ë€˜–€¤Ë€˜–€€,€g€UsUs[€g€g€I>s÷€½5€çïô$±€€,€Usg€[€UsUss÷€Œa€çïUÌ ŽÛºÕŸ€ô$€… Ž ޱ€¤Ë€ÕŸ€ô$Éj€ÕŸ€¤Ë€s÷€I>$Ÿ$Ÿ= I>= $Ÿg€çïŒa€[€UsŒa€0Ô$Ÿ±²~±²|jI>ÛºÃÃÉj€±€s÷€[€s÷€g€˜–€Ûº1-ÉjYg€Œa€Us0Ô 5 5 5±²|$Ÿg€՟€¤Ë€Éj€s÷€= s÷€I>[€˜–€½5€Œa€Ûº½5€g€g€0Ô7 ‚7 ú—€…€…€…ƒ+Ä|I>g€Œa€±€g€Us= 0Ô$Ÿ$Ÿ= = 0ÔI>$Ÿj7777sBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀ 0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUU@UUUUUUUUUUUUUUUUDýàc~+ktPîbtP€ú>€ú>ƒ|g€s÷€OX€I>0ÔI>[€±€€,€½5€çï¤Ë€€,€[€[€0Ô0Ô$Ÿ$Ÿ[€˜–€½5€Ûº˜–€Éj€€,€Œa€s÷€s÷€[€[€[€[€[€g€OX€= I>= j~+k‚+kîb€ú>€ú>îb€ 5j$Ÿ0Ô$ŸOX€I>OX€[€Œa€ÛºÏ…À…€Ûº˜–€€,€˜–€OX€[€0Ô 5 5€,€[€j 5j 5 5$Ÿ$Ÿs÷€¤ËÃ1-1-$øY¤Ë€€,€€,€I>I>[€s÷€±€Ï…Éj€˜–€½5€¤Ë€±€€,€¤Ë€çï Ž˜–€[€= = s÷€0Ôîb€ 5+k‚+k‚+kîbƒ|7777sBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀ80’I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÐŠt%Kc\ùÒ¶¸!¦:¥±®|#)Ò¶¸!¦:¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUQUUUUUUUUUUUUUUUUUU@UUUUUUUUUð `[€˜–€¤Ë€[€s÷€[€0ÔI>g€˜–€g€[€= j+Ä| 5g€çïUÌÃçï€,€s÷€I>= g€g€€,€ÛºŒa€g€€,€€,€s÷€s÷€g€½5€$ŸjjI> Ž$ø ŽÛºÕŸ€Éj€½5€ÛºÛº1-1-=b=bYô$€,€UsI>js÷€g€Uss÷€çï1-1-1- ŽÃÃÃ$øÃÃô$¤Ë€½5€ÕŸ€Éj€˜–€¤Ë€€,€s÷€g€UsŒa‚7 ‚±²|$Ÿg€g€I>= 0ÔI>€,€Éj€ô$h˜ï ŽÕŸ1-ô$±€ÛºÃ$øÃà Ž1-1-Ãs÷€€,€s÷€s÷€I>$Ÿ0Ô0ÔŒa€7777sBUFRÖbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!‚LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀL@"""""333334DDDDDDDDDDDEUUUUUUUUUUUVfffffffffffgwwp‹:V×D2ÇBT¶5Ï„e:Zà†B˜èJšçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ aY Ž$ø1-$ø ŽçïÃP¤Ë€˜–€€,€¤ËÃŒº‚ çÏÞYÛºYY1-O±Œº[æ[æC|1-C|O±=b Ž Ž$ø=bO±C|C|O±€Ï…ÃP±€Ï…=btP˜ïŒº¥$¥$1-¤Ë€˜–€¤Ë€C#€0ÔŒa€Ï…Ï…ÛºÃPŒa€˜–€Œa€˜–€˜–€±€Ûºçï±€ô$ô$ Ž1-Œº¥$ŒºŒº€˜–€ 5C#€çïC|[æ$ø½5€çïYÏ…˜–€±Ã[æ$ø[ætPC|C|=b=b½5€ÃPÛº˜–€g€½5€±€€,€€,€g€g€C#€±€¤Ë€= $Ÿ[€ô$˜ïtPŒº=bO±Yô$¤Ë€½5€Œa€€,€7777ÔBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀh0 $’I$’I$’RI$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUUUUQTUUTUUUUUUUUð `[€[€Œa€Œa€€,€Œa€Usj±²| 5$Ÿ= Œa€I>¤Ë€¤Ë€I>0Ô±²}ú—‚7 ‚±²|$Ÿ€,€ÕŸ€Ûºç€g€s÷€$ŸI>= = $Ÿ+Ä~7 ‚7 ‚7 €…€Œas€Œa€Œasú—€jŒa€½5€˜–€Us$Ÿ$Ÿ$Ÿ0Ô 5+Ä|$Ÿjj€…‚7 €…€Œasú—€$Ÿg€Œa€[€= I>= = UsI>I>Us= $Ÿ±²}ú—ƒ+Ä~7 ‚7 €…‚7 ú—ú—‚±²|I>Ûº Žô$±€€,€s÷€0Ô[€˜–€¤Ë€Éj€¤Ë€Éj€ÕŸYÕŸ1-1-±€ô$UÌÃ$ø$ø[æ‚htƒV~ ŒºYY1-=btP€7777sBUFR&bÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÂUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½à„!B„!B„!BB„!B„!BÆ1ŒcÆ1ŒcÆ1ŒcB„!B„!B„!JP‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„µÏ„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUTTUUUUU@DUUUUUUð aŒºhhâ-Œº¥$€…=bçï½5€˜–€I>±€ÕŸYô$YÉj€Œa€çïÕŸ€[€= g€˜–€½5€Œa€[€Us[€€,€g€Éj€ÕŸ€˜–€Usj0Ôg€Us€,€¤Ë€Us0Ô+Ä~7 €$ŸUs¤Ë€˜–€I>= +Ä~7 ƒ+Ä~7 ‚7 ‚7 €$Ÿ¤Ë€½5€ÕŸ€Ûº€,€g€s÷€s÷€I> 5+Ä+Ä~±²+Ä}€…€Os€Œa€O‚±²| 5Us¤Ë€€,€= = jI>g€UsŒa€g€I>±²+Ä+Ä|+Ä|+Ä| 5˜– ŽÃ ŽÉj€˜–€g€s÷€I>I>˜–€¤Ë€0Ô= UsÉj€€,€˜–€s÷€g€±€Œa€7777ÿBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUTUUUUUUUð `ÕŸYI—€…¥$èHI>7 ‚±²~±²+Ä| 50Ô˜–$øÛºI—I>jUsUss÷€[€= Ø=bÛºg€[€[€s÷€s÷€±€¤Ë€½5[æÕøèH±YÃtPtPŒºh[æI—=bhI—˜ï1-Éj€½5€Éj€g€g€[€€,€±€¤Ë€s÷€¤Ë€¤Ë‚±²}€…ú—ƒ+Ä~±²~7 ‚7 ‚7 €…ú—€…€Œasú—€…€…€…ssú—ú—‚7 ƒ+Ä+Ä}ú—s€Œa€…ss‚7 €j€,€˜–€˜–€€,€€,€j= j$ŸUs¤Ë€€,€[€˜–tP€Œa€¤Ë€g€¤Ë€ÛºÉj€Œa€g Ž Ž1- ŽYÛº7777ŽBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð,0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUU@UUUUUAUUUUPUTUUUUUð `Ûºçïç€˜–€Œa€€,€˜–€s÷€Us$Ÿjj±²~±²~±²|= ˜–€˜–€¤Ë€Œa€s÷€˜–€g€Œa€s÷€= [€g€Éj€€,€¤Ë€$Ÿ+Ä}ú—ú—‚±²|Œa€Œa‚±²|˜–€ÕŸ€½5$øI—=b ŽÉj$øÉj€Éj[æÃÛº½5€Éj€±€½5€˜–€= $Ÿ+Ä~7 €s÷€ÛºÉj€±€s÷€[€€,€s÷€[€= = $ŸI>j$Ÿ±²|$Ÿjj7 ‚±²| 5I>I>[€I>I> 5+Ä|jUsUsUs[€Us˜–€˜–€Éj€ÛºÉj€˜–€çïô$Éj€ÕŸ€Éj€ÛºŒa€$Ÿ±²}€…€…ss€Osú—ƒ+Ä|$Ÿ7 ƒ+Ä|7777ŽBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUAUUUUPAUUUU@UUUUPUUUU@ð b±²}€…€Œasssú—€…€€,€Œa€½5€˜–€s÷€Uss÷€g€€,€g€= j= [€¤Ë[æ=b¤Ë€jj+Ä+Ä|$Ÿ˜– Ž1-ô$çï±€g€½5Y$øÉj€ÕŸ€ÕŸ€s÷€0Ô= I>$Ÿ±²}ú—€±²~7 €j€,ÃI—UÌ ŽŒa€±€g€g€g€Œa€˜–€s÷€[€0Ô€…s€…‚±²}ú—€O‚7 €jUsŒa€g€s÷€¤Ë€g€€,€I>[€Us˜–€˜–€€,€s÷€= j±²}ú—‚7 €…€…‚±²|j[€g€Us[€I>0Ôg€I>= s÷€= I>Œa€Us 5j+Ä}s‚7 €…‚±²}ú—ú—€7777ŽBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐX0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS c\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUU@UQ@UUUUUUUUPUUð ` 5= 0Ô= [€˜–€Œa€€,€g€Œa€±€€,€¤Ë€çïÃhY[æÃô$˜–€[€$Ÿ0Ô[€Œa€±€[€ 5+Ä+Ä~±²}€…‚7 ‚7 €j= I>g€g€0Ô 5+Ä|s€…s‚7 €7 €g€I>±²~±²| 5±²}€…‚7 €±²}ú—ƒ+Ä}ú—€…ƒ+Ä}ú—ú—€…‚7 € 50ÔI>Us[€[€UsŒa€±€[€€,€s÷€0Ô+Ä|j 5jj[€€,€¤Ë€¤Ë Ž1-ÕŸ€Œa€I>UsÉjÃô$€,€˜–€ 5±²}ú—‚±²+Ä|7 ú—‚7 €$Ÿg€˜–€˜–€[€0Ô$Ÿ$Ÿ0Ô[€7777ŽBUFR&bÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐUUUUUUUUUUU]kZÖµ­o{Þ÷½ï{Þ÷½ï{Þ÷½óœç9Îsœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{Þ€!B„!B„!BŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUUUUU@UU@UUU@ð `j0Ô= = 0Ô±²}ú—‚7 € 5j0Ô[€Œa€ÕŸ€çï€,€[€$Ÿ 5j0Ô[€˜–€¤Ë€¤Ë€¤Ë€s÷€[€$Ÿ$Ÿ±²}ú—€…€…‚7 ‚7 €jjjI>€,€€,€0Ô= j$Ÿ$Ÿ0Ô0Ô= Œa¥$±YtPh1-1-Ûº˜–€g€g€€,€Œa€¤Ë€€,€[€0Ô+Ä~7 s€…‚7 €j[€g€I>j 5j±²|I>g€= ú—ssss€…ú—ú—€…ú—ú—‚±²|= 0Ô 5ú—€…ú—€Œas€…€…€$Ÿs÷€= jjjj 5I>½5€½5€[€ 5+Ä}ú—‚7 €7777ÿBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUT@UUUPUUTTUQUUTPPð a€…s‚±²}ú—€…ú—€$ŸŒa€˜–€UsI>[€±€[€= g€I>Us0Ô+Ä|+Ä~±²}ú—€…ú—‚7 €…‚±²~±²| 5= g€[€[€UsUsI>= 5 50Ô 5+Ä+Ä~±²}s€…€Œas‚7 ‚±²|= s÷€UsUs0Ô$Ÿ0Ô0Ôj$Ÿ0Ôj+Ä|= 5 5±²~7 ‚7 ƒ+Ä+Ä+Ä~7 ƒ+Ä|0ÔUs$Ÿ$ŸUsj7 €jj$Ÿ0Ô= Us¤Ë€I>0Ôjú—ú—ú—ú—ú—ú—‚±²|jUs= ±²}€…ú—ú—‚7 ‚7 €+Ä+Ä+Ä~±²~7 €…ú—‚±²|€,€7777…BUFRöbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@ @"""""""""""333333333ˆˆˆˆˆˆˆˆˆˆ™™™™™™™™™™™™ª Št%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lu-sáN•µÀ …1Е-sáÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V׆٣díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUUUUUUUPUUUUUUUUUU@ð `±€¤Ë€½5€¤Ë€±€½5€ÉjÃÕŸ€g€0Ô0Ô[€g€g€= s÷€ 57 €…€…‚7 €I>±€Éj€ÛºÉj€±€±€Œa€€,€Œa€½5€¤Ë€I>$Ÿg ŽUÌ€,€s÷€[€= j 5Œa€½5€Éj€±€¤Ë€€,€˜–€[€[€Us0Ô$Ÿ$Ÿ= = 5±²~±²+Ä~7 €…‚7 ƒ+Ä|0Ô€,€I>$Ÿ$Ÿ$Ÿ+Ä+Ä|jjs÷€ô$Ûºô$ÕŸ€˜–€[€[€[€UsUss÷€Œa€˜–€Œa€Us$Ÿ$Ÿ 5ú—€…‚±²}ú—ú—‚7 € 50Ô[€= 5$Ÿ 5 5j= = Œa€½5€ô$½5€s÷€jú—ú—€…€7777BUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@H0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUUUUUUUUUTUUUUUUUPUð aú—€$ŸUs= 0Ôg€g€g€Usg€0Ô= I>0Ôjj 5+Ä}€…ú—‚7 ú—s‚±²+Ä|j= I>= = I>g€Uss÷€[€€,€Œa€Œa€€,€Ûº½5€½5€˜–€s÷€€,€I>jUs€,€˜–€¤Ë€s÷€g€Œa€[€[€UsŒa€s÷€I>Us0ÔÉj€Éj€= j7 ú—€$Ÿ$Ÿ±²+Ä|$Ÿ±²~±²~±²~±²|+Ä~7 €…€0ÔI>= 0ÔI>Us¤Ë€Us 57 €j 5 5Us½5€±€±€€,€€,€€,€¤Ë€±€½5€ÕŸ€ô$Éj€Us€,€½5$øÃs÷€[€I>0Ô±²}€…‚±²|s÷€¤Ë€ÛºÉj€€,€˜–€Œa€7777—BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@\0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠÇ>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUQUUUUUEUUUUU@UUTPð `€,€¤Ë€˜–€s÷€s÷€= Us¤Ë€€,€€,€Œa€˜–€½5€±€˜–€˜–€½5€Ûºô$˜–€€,€g€[€g€[€±€ÛºI—=b1-YÃçïÛºŒa€= [€±²|$ŸUsg€g€I>= 0Ô= $Ÿ 50Ô[€I>¤ËUÌ Žô$¤Ë€$Ÿ= +Ä| 5˜–€Ûºçï Ž¤Ë€½5€ÕŸ€ô$ Ž¤Ë€±€Œa€g€ÉjYÛº¤Ë€˜–€I> 5 5€…‚7 ‚±²}ú—€ 5+Ä~±²~7 ƒ+Ä|0Ô= 0Ô 5jÕŸ€çïçï½5€g€˜–€j+Ä+Ä~7 ú—ú—‚7 ú—ƒ+Ä}ú—€ 5±²~7 ‚7 €…€…‚±²}€…ú—€$Ÿs÷€7777—BUFR&bÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐBUUUUUUUUUUUUU]ï|ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷¾÷½ï{Þ÷½ï{Þ÷½ï{ÀB„!B„!B„"„ ‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUTUUUUUUD@UUUUTUUUUUTð aYUs7 ƒ+Ä~±²~7 ú—ú—‚±²}ú—ssú—‚7 ‚±²~±²}ú—ú—‚7 €ú—€0ÔŒa ŽÃI—ô$ÕŸ€±€[€Us˜–€ÕŸ€½5€s÷€Us 5j˜–€¤Ë€$Ÿ$Ÿ€…‚7 €…€0ÔÉj€[€˜–€½5€ÕŸ€UsUsg€¤Ë€½5€ô$=bYô$s÷€s÷€[€0ÔUsŒa€ô$ô$ÕŸ€Œa€I>I>±²|±²| 57 €…ú—€$Ÿ= I>I>$ŸI> 5= = 0Ôj$Ÿ 5 5jj$Ÿ0ÔŒaú—s€Œas€$Ÿ= $ŸI>0Ô0ÔI>Us= I>Us= [€I>UsUs= = 0Ôj0ÔI>j±²|7777ÿBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ 0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×Â2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUQ@UUUUAUUUUUUUUUUUQUUð `0Ô= 0ÔI>0Ô$Ÿj 5I>I>= = [€UsUsg€s÷€s÷ú—ú—‚±²}s€Œas€O€O€Osú—ú—€Œas‚7 ‚7 ƒ+Ä|0Ô$Ÿj 57 €+Ä+Ä~±²+Ä|0ÔUsg€€,€Œa€g€s÷€s÷€s÷€½5€Ûº1-UÌ1-Ys÷€g€= j±²+Ä| 5€,€çïÕŸ€½5€±€s÷€g€€,€Uss÷€s÷€I>$Ÿ 5j= I>I>= 0ÔI>UsI>s÷€Œa€€,€€,€Œa€$ŸUs˜–€s÷€[€g€¤Ë€ô$çï1-1-±€I>$Ÿj0Ô= ±²|= Œa€Éj€s÷€g€[€I>g€I>7777ÔBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ 0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUPUUUP@UQUUð `I>€,€Œa€ÕŸ€½5€Éj€ÕŸ±Y Ž[€˜–€±€[€0Ôg€¤Ë€Éj$ø Žçï½5€€,€ÕŸYô$½5€çïUÌY¤Ë€ÕŸ€Us[€$Ÿ= $Ÿ€,€[€½5€Œa€Œa€Us[€= [€[€0Ôg€s÷€g€[€j½5€¤Ë€Œa€±€Œa€= 57 €…ú—ú—‚7 €…sú—‚7 ú—ú—ú—ú—ú—‚7 ‚7 ‚7 ‚±²+Ä| 5I>I>s‚7 ú—ú—‚7 €I>[€0ÔjjI>= [€s÷€g€Us= = $Ÿ±²~7 € 5+Ä}€…€…ss€…‚±²|j= $Ÿj= j+Ä|jI>[€I>0Ôg€7777ÔBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ40 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUTEQUUUUUPTTUUQPUUUQPUUð `= $Ÿ±²|0Ôs÷€±€= [€Éj€Éj€Œa€g€UsUs 5±²+Ä|= j 5j+Ä|= I>$Ÿú—€$Ÿjj0Ôs÷€¤Ë€çïÛºg€s÷€[€Us¤Ë€g€˜–€¤Ë€g€Us= [€Œa€[€j±²+Ä~±²~7 ƒ+Ä}ú—€0Ô€,€= 7 €j$Ÿ 5±²|j$Ÿ 5= $Ÿ0Ô$Ÿ+Ä| 5$Ÿ 5+Ä~±²+Ä|jI>0Ô$Ÿjjj$Ÿ0ÔI>= = = $Ÿ[€€,€= +Ä|j+Ä| 5+Ä|j 5+Ä+Ä~±²}ú—‚7 ú—‚7 ƒ+Ä~±²~7 ƒ+Ä+Ä| 5j0Ô0ÔjUsj€,€7777ÔBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ЀL0 $’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%KkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUQUUUTUUUU@UUUUUUUUUUð `½5Y˜–€¤Ë€Œa€€,€Éj€g€I>I>s÷€Us0ÔI>€,€g€g€$Ÿ 5I> 5+Ä|0Ô0Ô= ˜–€€,€j[€s÷€±€½5€±€Œa€jjj+Ä~7 €…ú—ú—€…€…‚±²|$Ÿ0Ô0Ô$Ÿj 5 5 5j$ŸjUsg€I>[€[€I>7 ú—€…ú—s‚±²|= = 50Ô= I>I>j= [€0Ôg€I>+Ä|0Ô= 5$Ÿ[€s÷€0Ôg€Us€,€I>= 0Ô0Ôj$Ÿ+Ä|±²}ú—€…‚±²}€…€…€…ú—‚±²|0Ô= 0Ô= UsUsUsUsg€7777ÔBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ`0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ð‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUPUUUUUUUUUUD@TUQUPð `UsI> 50Ô= 0Ô0Ô0Ô0Ôs÷€[€0Ô 57 €…ú—ú—‚±²|jj 50Ô0Ô= $Ÿj0Ôj±²~7 ‚7 ƒ+Ä}€…ƒ+Ä|jUsI>¤Ë€½5€ÕŸ€ÕŸ€Ûº€,€Œa€Ûº½5€I>[€0Ô0Ô˜–€[€[€Us= ¤Ë€s÷€g€Œa€s÷€½5[æ˜ï[æ=bÛºô$[€ÕŸ€0Ôs÷€Us$Ÿj±²|$Ÿ+Ä~±²+Ä~7 ú—‚±²| 5= $Ÿ$Ÿ+Ä+Ä~7 ‚7 ‚7 ‚7 ƒ+Ä~±²~7 ú—‚7 € 5$Ÿ$Ÿ7 ‚7 € 5ú—€Œa€…‚7 ƒ+Ä| 5 5 5±²| 5 50Ô$Ÿ0Ô= +Ä~7 €7777ÔBUFR&bÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ЂUUUUUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï{Þ÷½ï{Є!B„!B„!BB„!B„!B„!ŒcÆ1ŒcÆ1ŒcÈB„!@Šˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUUTDUTUU@UPUð aú—‚7 ú—ú—‚7 ‚±²|jI>g€€,€[€= 0ÔI>0ÔI>= I>I>I>UsUs= 0Ô$Ÿ 5±²}ú—‚±²}ú—‚±²+Ä| 5 5$Ÿ= jI>[€g€Us$Ÿ$Ÿ= UsUs€,€¤Ë€= = 7 ‚7 ‚7 ‚±²| 5+Ä| 5j$Ÿj+Ä|±²|$ŸUsj$Ÿ 5+Ä~±²~±²}€…€…ú—‚7 €= €,€±€Us= UsI>[€0ÔI> 5±²~7 ƒ+Ä+Ä+Ä}ú—€…s€…s€Œasú—‚7 €I>= [€Us[€ 5j7 ‚±²~±²~7 €±²~7 ‚7 €±²~7 ‚7 €g€€,€g€s÷€7777ÿBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀ0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQAAUUU@UUUUUUPTUUUð `Us 5±²|±²+Ä| 5±²|j7 ú—ú—‚±²|±²+Ä|j= g€Us$Ÿ= = ˜–€Us0ÔI>[€j±²~±²~7 ú—‚7 €…ú—€…s€…‚7 €$ŸI>[€= g€Œa€€,€[€= ˜–€Ûº¤Ë€I>$Ÿ0ÔI>[€$Ÿ 5ú—‚7 ú—ú—‚±²|+Ä| 5 5$Ÿ 5+Ä|j+Ä}ú—‚±²~7 ƒ+Ä|= s÷€I>ú—‚7 s€Œas€…€…s€Œas€Œaú—ú—ú—€…‚±²| 5 5jI> 5+Ä~±²}€…ú—ú—ú—sú—‚7 €0ÔI>[€±€Ûº½5€€,€¤Ë€Éj€˜–€˜–€s÷€7777jBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀ(0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUPUUUUUUUUUUUUUUUTUUUUUUUUUUUð `Usj0Ô 57 ‚7 ú—‚±²|jI>s÷€Œa€s÷€[€€,€UsI>Us[€I>g€g€UsUsŒa€[€js÷€[€$Ÿ= €,€€,€Œa€¤Ë€s÷€Œa€g€Éj€˜–€[€Us0ÔUs= = = j= ±€±€s÷€g€I>$ŸUsUsUs€,€s÷€s÷€€,€[€= 0Ô$Ÿ$ŸI>I>0Ôjj+Ä+Ä|€…ú—‚7 ú—€…ú—€$ŸI>Us= 0Ôj= 0Ô= UsI>= 0Ô$Ÿ= UsUs0ÔjI> 5 5= 0Ô 5jj$Ÿ0Ô= $Ÿ$Ÿ= 0Ô$Ÿj$Ÿg€I>jjUs7777jBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀ@0’I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUUUUUUUUUUUUUUUUUUUUUUUð `0Ôj±²~7 €…€Œas€…€…‚7 €…ú—€…€…ú—€…‚7 ƒ+Ä|= = = $Ÿ$Ÿ= I>j0Ô[€€,€ÕŸ€±€½5€±€˜–€˜–€s÷€[€€,€Œa€s÷€I>s÷€s÷€Us[€Us0ÔI>jj$ŸŒa€Éj€ÛºYg€I>I>[€I>Usg€$Ÿ0ÔjI>I>€,€€,€= €,€g€g€= I>0Ô0ÔI>I>0Ô= = 0Ô[€UsUs= = ¤ËYô$çï¤Ë€¤Ë€±€½5€¤Ë€¤Ë€Éj€ÕŸ€UsUs$Ÿ= [€g€[€Uss÷€= 5$ŸŒa€€,€€,€= 0Ô$Ÿ0Ô±²|$Ÿ[€¤Ë€Ûºg€I>0Ô7777jBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀT0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðDUUUUUUUUUUUUUUUð aú—‚7 ‚±²}ú—‚7 ƒ+Ä~7 ú—‚±²~7 ‚7 ‚±²}ú—sú—s€…s€…s‚±²}ú—ƒ+Ä| 5 5+Ä|+Ä+Ä| 5+Ä~7 ú—‚7 €…€…s€…‚7 s€…s€…€…s€…ú—€…ú—ú—sú—€…ú—‚7 ‚7 ‚7 ‚±²}ú—ú—€…€…ú—ú—s€Œaƒ+Ä|$ŸI>I>Us[€[€= Us[€[€˜–€Œa€s÷€s÷€I>0Ô0Ô= 0Ô[€g€Us$Ÿg€Œa€s÷€˜–€±€g€€,€[€[€€,€±€±€Ûº±ÃÕŸ€¤Ë€Œa€Us˜–€g€g€˜–€¤Ë€ÕŸ€ô$Ûº½5€€,€ÕŸ€ô$¤Ë€€,€±€½5€s÷Y7777jBUFR&bÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÂ\ç9ε­kZÖµ­kZÖµ­kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½ï½ï{Þ÷½ï{Þ÷½ï{Þð‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUTUUUUUUUUDð `çïÕŸY$ø=b±€˜–€g€€,€±€±€Ûºô$$øYŒa€Œa€I>[€0ÔŒa€Œa€Éj€g€±€ÛºgÂYÛºÉj€ÛºÉj€Œa€¤Ë€Œa€¤Ë€±€g€= = I>Us0ÔUs½5€€,€ô$g€˜–€˜–€¤Ë€€,€s÷€s÷€Éj€g€jUsg€s÷€0Ôj 5 5 5 5jjj+Ä| 50Ô0Ôs÷€I>0Ôs÷€$Ÿ7 s€…€…€…ú—€7 ‚±²+Ä|[€js÷€ 5±²}ú—‚±²~±²+Ä|= Us= I>g€Œa€s÷€½5€s÷€= = Us[€UsI>I>[€Œa€[€$Ÿ7 €±²|7777ÿBUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠ2ÇJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUU@ð c+Ä| 5$Ÿ[€˜–€g€= j+Ä| 5j= 0ÔjŒa€¤Ë€= 5˜–€½5€[€j$ŸI>g€s÷€= = $ŸUs[€ 5 5$Ÿ0Ô 5g€ô$¤Ë€g€€,‚±²+Ä~7 ƒ+Ä~±²|$ŸjUsUs[€g€s÷€çï±€±€½5€Éj€çïÛº¤Ë€[€[€g€I>0Ôj 50Ô±€çï¤Ë€s÷€s÷€0Ô0ÔI>Us[€[€€,€UsUsj 57 € 5+Ä|j 5 5 5 5 5 5j$Ÿ$Ÿjj= 0Ô0Ô$Ÿ 5+Ä~7 ú—€…ú—€…s€…‚±²+Ä+Ä|7777€BUFRöbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@UUUUUVfffffffffffgwwwwwwwwwwwxˆˆˆˆˆˆˆˆˆˆˆ‰™™™™™™™ŠÆ¹ðŒ§JÚà†B˜èJ–ƹìkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„¹ðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUUUUUUUUUUUU@UUUTUUUUð c+Ä~7 €…€…ú—ú—€…ƒ+Ä| 5+Ä~7 ú—‚±²~7 ‚7 ‚7 €= = Us0Ô0Ôj0Ô0Ô0ÔUs= g€g€g€g€[€Œa€Éj€…1-Éj€¤Ë€= Ûº¤Ë€±€½5€ÕŸ€˜–€½5€Œa€[€[€[€I>I>Us= [€ 5$Ÿ= Œa€¤Ë€çï¤Ë€s÷€Us$Ÿ+Ä+Ä| 5 5j 5j$Ÿ$Ÿg€s÷€= j= 7 ‚±²}ú—€…€Œa€…sƒ+Ä|$ŸI>[€g€Usg€I>= 0Ô= = 0Ô 5 5$Ÿ0Ô= ±²|I>$Ÿj0Ô= UsI>0Ôj0ÔI>Usg€= €,€7777=BUFRæbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð<0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUUUUUUUPUUUUUUUUUUUUUAUPð `s÷€s÷€I>7 ú—€+Ä|7 €0Ô= I>UsI>I> 5 5I>$ŸUsI>= ¤Ë€±€g€I>$Ÿ7 ‚±²|$Ÿ 5[€[€I>0Ôj0Ô+Ä| 5j= Us0ÔI>ÕŸ€ÕŸ€½5€€,€s÷€ 5 5+Ä+Ä| 5= [€g€g€Usg€¤Ë€€,€Œa€0Ô= Éj€±€Éj€ÕŸ€±€s÷€Usj= g€$Ÿ 5= = [€˜–€= 0Ô 5 5$Ÿ$Ÿj$ŸUs 5jg€±€Œa€Œa€€,€½5€Ûº˜–€€,€s÷€[€g€s÷€$Ÿ+Ä~7 € 5+Ä}ú—ú—€…‚±²}ú—ƒ+Ä|$Ÿ= jUs+Ä}ú—€7777€BUFRöbÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐT@333334DDDDDDDDDDDEUUUUUUUUUUUVfffffffffffgwwwwwwpŠB˜èJ–ƹðŒ§JÚà†B˜èJšçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUPPUUUUUUPUUUUUð b±²|= = ˜–€s÷€$Ÿ€,€Œa€[€[€¤Ë€¤Ë€½5€Éj€€,€= 0Ô$Ÿ€,€jjUsj0Ô[€Œa€±€Ûº½5€s÷€= g€± ŽUÌô$I—¥$â-¥$€…[æ ŽÛº€,€g€çï Ž 5+Ä~±²}ú—‚7 ú—ú—ú—ú—‚7 ƒ+Ä~±²~±²~7 ƒ+Ä|7 ‚±²~±²~±²+Ä| 50Ԥˀô$Ûº˜–€s÷€ÛºŒa€±€çïÕŸ€±€çï¤Ë€˜–tPÃÛº$øÃÛº½5€[€$Ÿ˜–€Us+Ä~±²~7 ‚7 €= +Ä~7 ‚±²|j 5 5[€ô$YÕŸ€Éj€½5€˜–€Œa€I>[€Uss÷€s÷€j0Ôg€˜–€= 7777=BUFR&bÿ« fÐ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐUUUUUUUUUUUU]ï{Þ÷½ïœç9Îsœç9Îsœç9Î÷½ï{Þ÷½ï{Þ÷½ï{ß{Þ÷½ï{Þ÷½ï{Þ÷½à„!B„!B„!BŠçÂ2+k€" c¡,kŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUPPUUUUUUUUUUUUEUUUUð ` 5= 5g€s÷€¤Ë€±€¤Ë€s÷€€,€$Ÿ˜–€Œa€Œa€s÷€¤Ë€˜–€½5€çï¤Ë€˜–€˜–€Ûºçï$øÉj€Œa€Ûºs÷€ 5±²|j7 ú—€[€ÕŸ€½5€ÕŸ€Us+Ä+Ä~7 ú—‚7 ‚7 ‚±²~7 € 5I>j±²~±²+Ä|$Ÿ$Ÿg€I>¤Ë€Ûº Žô$ÕŸ€¤Ë€g€˜–€Éj€ÕŸ1-Éj€½5€˜–€[€ 5 5±€€,€j= $Ÿ= g€[€g€Us0Ô0Ô= Œa€€,€Œa€½5YÃÃ1- ŽÉj€¤Ë€€,€€,€I>j+Ä|= Usg€s÷€˜–€[€g€I> 5$Ÿs÷€s÷€$ŸI>UsI>= = 7777ÿBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@ 0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUUUUUPQUPUUUUUUUTð `$Ÿ0Ô 5 5= 7 ‚7 ‚±²~7 ú—€…s€…‚7 ‚7 €$Ÿs÷€Éj€Éj€Éj€½5€˜–€Œa€g€[€= Us€,tPI—Éj€¤Ë€Œa€˜–€[€g€UsŒa€ÉjhÉñYŒºtPI—YçïŒa€€,€˜–€Éj€çïçï½5€½5€Éj€±€Éj€çïÕŸ€¤Ë Žô$ ŽçïÕŸ€€,ƒ+Ä+Ä|jj+Ä|$Ÿg€Œa€[€0Ô+Ä+Ä~±²+Ä~±²|jjjI>0ÔI>g€I>$Ÿ$Ÿ¤Ë€˜–€˜–€s÷€€,€Œa€çïÉj€±€˜–€˜–€¤Ë€±€Us0Ôs÷€Œa€˜–€0ÔI>Us0Ôú—ú—€ 5 5+Ä+Ä|I>g€€,€7777Ä|BUFRæbÿ« fÐ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@ 0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’[m¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž…-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUETUUUUUPUUUPUUUð `g€UsUsUsI>Us½5€½5€Éj€½5€Éj€±€½5€ÕŸ€çï½5€±€Éj€½5€½5€±€±€±€Éj€½5€€,€g€Us[€0Ô$ŸUs€,€Us±$ø[æI—ô$˜–€Usj 5 5 5 5 5±²~±²~±²|0Ô$Ÿ= $Ÿ$Ÿ+Ä|$Ÿ€,€[€j 5+Ä~±²| 5 5Uss÷€g€g€Uss÷€s÷€UsUs€,€ŒaY±€Éj[æ€Éj€½5€½5€˜–€¤Ë€jj€…s€…ƒ+Ä|€,€˜–€g€0Ô$Ÿ 50ÔUsI>Us0ÔUs0Ô[€0Ô$Ÿ+Ä~±²~±²~±²+Ä|$Ÿ= [€˜–€˜–€UsjjUs0Ôg€±€Ûº7777Ä|BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@40I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUU@UUUUUUUUUUUPUUUUð `Éj€ô$ÃYYYÕŸ€€,€s÷€I>jUs€,€±€ÕŸ€¤Ë€½5€½5€Éj€±€±€½5€ÕŸ€ÛºçïÕŸ€ÕŸ€±€Éj€˜–€˜–€Éj€j7 €…ú—€jg€½5€Éj€ÕŸ€½5€Éj€½5€Éj€Œa€Éj€ÕŸ€½5€Œa€s÷€j+Ä+Ä}ú—€…ƒ+Ä~7 €…€…ú—ƒ+Ä| 5 5 5j$Ÿ 5 5$Ÿj0Ôjj0Ô0ÔI>$Ÿg€0Ô 5$ŸI>0Ôg€I>+Ä~7 ƒ+Ä~±²+Ä|= [€±€g€ۺۺs÷€[€[ú—s€…s€Œa€Œa‚7 €= €,€g€Œa€½5€ÕŸ€s÷€s÷€Éj€Ûº˜–€s÷€˜–€[€Œa€= = [€€,€7777Ä|BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@L0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUEUUUUUUUUUUPUUUUUUAð `0Ô 50Ô[€g€s÷€€,€Œa€s÷€€,€g€€,€¤Ë€ÕŸ€çïYçï½5€ 5j+Ä~±²|I>+Ä|j+Ä| 5g€½5€€,€[€g€= [€0Ô€,€g€˜–€±€ÕŸhUÌý5€Éj€½5€˜–€[€I>= = g€€,€g€Us0Ô= 0ÔI>I>$ŸUss÷€= UsUsI>I>j7 ƒ+Ä+Ä}ú—sú—ƒ+Ä|Œa€˜–€g€UsUsUsI>= [€€,€ÕŸ=b[æ1-Ûº±€s÷€Œa€€,€g€Us0Ô0Ô$ŸI>I>= $Ÿ±²~±²| 5±²}ú—ú—ú—ú—‚7 ú—‚7 ‚±²~7 ú—€…€…ú—ú—€…€…€…ú—‚7 €7777Ä|BUFRæbÿ« fÐ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð@`0I$’I$’I$¤’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN•µÀ …1Ð¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUPUUU@UUUU@UUUð `0Ô0Ôs÷€g€±€±€¤Ë€ô$ô$Éj€s÷€˜–€¤Ë€½5€€,€ 5j= ˜–€ÕŸ€Éj€±€½5€¤Ë€Œa€±€Éj€çïÕŸ€Œa€UsI>j±²}ú—s‚7 ‚7 €…‚7 €j= €,€Œa€ÕŸ€s÷€[€I>g€s÷€[€˜–€Œa€˜–€¤Ë€˜–€˜–€Œa€ 5O€…€O€Œa‚7 ƒ+Ä|UsŒa€[€Us[€0ÔI>I>I>I>0Ô 5+Ä~±²~7 ‚±²}€…€O€ 5+Ä+Ä|0ÔŒa€ÕŸ€±€˜–€¤Ë€±€[€[€[€Œa€¤Ë€ÛºÛº¤Ë€j 5+Ä+Ä+Ä|g€j±²+Ä+Ä|I>s÷€$Ÿ= 0Ô0ÔI>jj= g€j7777Ä|BUFR&bÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐBUUUUUUUUUUUUUUUUUUUUUUUU^sœç;Þ÷½ï{Þ÷½ï{Þ÷½ï@„!B„!B„!D!B„!B„!B†1ŒcÆ1ŒcÆ1ŒcÈ@‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUTUUUUUUUUUU@UUUUUð `j[€$Ÿ$Ÿ0Ô0Ô 5+Ä+Ä|$Ÿ[€g€[€0ÔI>s÷€g€= g€Us˜–€Éj€çï±€Œa=bÃÛºÉj€˜–€Œa€Œa€[€0Ô[€€,€€,€€,€g€s÷€g€I>= = g€0Ô[€Us$Ÿ= ú—ú—‚7 ú—‚7 ú—‚±²|jUs˜–€±€g€= 0Ô$Ÿ0Ôj0Ô= UsI>s÷€½5€˜–€ô$ÛºÕŸ€[€j 5j0Ô= s÷€Œa€˜–€Œa€s÷€€,€g€[€[€UsUsI>j$Ÿ 5 5±²}sú—s€…s‚±²|[€˜–€¤Ë€[€[€Us= I>[€½5Yçï ŽYô$½5€½5€g€$Ÿ 57777ÿBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUU@UUUUUUUUUUAUð b±²}€…ú—€j0Ԥˀ€,€Us= = ˜–€g€g€s÷€Œa€¤Ë€±€€,€s÷€[€s÷€= j0Ôj$ŸUs€,€˜–€˜–€€,€Œa€€,€s÷€g€€,€¤Ë€Éj€Ûº½5€½5€Éj€½5€çïçïYÉj€½5€g€0Ô= s÷€˜–€¤Ë€˜–€˜–€s÷€s÷€Œa€s÷€Œa€˜–€±€˜–€¤Ë€˜–€˜–€€,€˜–€Us 5ú—‚7 ‚7 €$ŸI>j= 0Ô$Ÿ+Ä| 50Ô[€€,€UsŒa€€,€Éj€¤Ë€¤Ë€€,€0Ô= UsŒa€ÕŸ€Éj€g€g€[€[€g€Us0Ô[€Ûºô$ÛºÛº±€€,€˜–€½5€s÷€= 5+Ä+Ä|0ÔŒa€ÕŸ€Œa€I>7777–€BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ(0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUUUUUUUUUUUUUUUUUUUUUUUð `j 5 5$Ÿ¤Ë$øÉj€[€$Ÿ$ŸUs0Ôjú—€…‚7 €$ŸŒa€±€½5€Éj€Éj€s÷€I>s÷€s÷€ÕŸY Ž ŽçïçïçïÛº€,€g€€,€I>UsI>Us±€¤Ë€¤Ë€±€±€˜–€½5€½5€ÕŸ€ÕŸÃh€ô$ÕŸ$ø$øÃçïÕŸ€½5€Œa€€,€€,€Œa€½5€½5€½5€½5€±€±€±€½5€Ûº½5€ÛºÃ Ž ŽI—1-Ã Ž¤Ë€±€s÷€= 0Ôg€Œa€€,€˜–€¤Ë€Œa€˜–€s÷€€,€g€€,€¤Ë€±€€,€˜–€Œa€= s÷€0Ô+Ä+Ä~±²~±²}€…€…€$Ÿ+Ä| 5 5$Ÿ= I>= ˜–€¤Ë€= ˜–€ô$ÕŸ€7777–€BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐ<0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUPUUUUTUUUUUUUUUUUUUUUUUð `½5€çï½5€½5€ÕŸ€±€Œa€€,€€,€Œa€¤Ë€˜–€˜–€s÷€¤Ë€ÛºÉj€½5€€,€¤Ë€˜–€€,€0Ô$Ÿ$Ÿj+Ä+Ä+Ä|I>I>Us˜–€çï=bô$½5€ÕŸ€€,€Uss÷€˜–€ÕŸ€ô$Éj€g€0Ôjssú—€…ú—ú—€ 5˜–€Ûº½5€Éj€±€g€[€¤Ë€±€ô$Ã$øYçïçïÉj€½5€±€˜–€˜–€g€g€˜–€¤Ë€Éj ŽÕŸ€s÷€¤Ë€s÷€[€I>€,€ô$$ø$øI—Ãçï±€s÷€g€UsŒa€¤Ë€ÛºÛºÉj€ÕŸ€¤Ë€Œa€Œa€€,€s÷€s÷€Œa€Éj€ÛºçïY ŽYçï½5€¤Ë€±€Œa€¤Ë€UsUs7777–€BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ЀT0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹò+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUTUUUTUUU@UUUUUUUð `I>[€Œa€½5€ÛºÛº½5€ÕŸ€Ûº½5€½5€½5€çïY ŽYô$Éj€½5€±€¤Ë€¤Ë€˜–€UsUs= [€s÷€€,€s÷€[€€,€€,€g€s÷€s÷€˜–€Œa€Œa€Œa€g€[€j±²}€…€ú—€Œa€…€Œa€Ûº¤Ë€s÷€g€€,€= I>0Ôg€±€˜–€[€Œa€g€j€…s€…s€Œa€…€= ÕŸ€Ûº€,€I>s÷€s÷€Œa€¤Ë€±€çï±€[€0Ôj 5ú—€…‚7 s€Œa€…‚7 €$ŸUs= 0Ôj 5$Ÿ= I>g€€,€¤Ë€ÕŸ=bÛºg€s÷€$Ÿ= 0Ôú—‚7 €= ÕŸ$ø=bçï±€g€0Ôj$Ÿ7777–€BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ѐh0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUTPUUTQUUUPUQUUð `$ŸI>Œa€ÛºI—=bçïÉj€¤Ë€g€$Ÿj+Ä~±²|$Ÿ€,€¤Ë€Œa€g€s÷€˜–€s÷€˜–€˜–€±€ô$ÛºÕŸI—1-Y ޽5€˜–€˜–€¤Ë€[€I>0ÔI>Us= j[€$Ÿ$Ÿ$Ÿjj0Ô= [€0Ô+Ä|I>ú—‚±²}ú—€…ss€ 5= j$Ÿ 5$ŸI>[€[€$Ÿ+Ä~±²|jI>¤Ë€= ú—€ 57 €…€Œa€Œa‚7 ‚7 € 5jj$Ÿ0Ôs÷€g€Éj€g€= 5 5$Ÿ$Ÿ 5Œa€…€Œasú—‚±²|I>g€s÷€s÷€$Ÿ 5+Ä| 5= Œa€ÕŸ€ÕŸ€Éj€±€¤Ë€7777–€BUFR&bÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ЂUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_x!B„!B„!B„B„!B„!B„!cÆ1ŒcÆ1ŒcÆ1Œ„!B„!B„!B¥)JP‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUUUUUU@UUUUUUUUUUUUP@ð `Œa€j±²}ú—€…€Œa€…‚7 €Us˜–€Œa€s÷€= 0Ô$ŸI>= [€€,€ÕŸÃçïŒa€€,€¤Ë€˜–€Usj+Ä+Ä}€…‚±²|0Ԥˀ˜–€Œa€s÷€0Ô= ½5€¤Ë€ÛºçïÕŸ€˜–€g€= I>0Ô+Ä}ú—€…ú—‚7 €jŒa€Éj€ÛºÛºçï±€g€I>I>Uss÷€Éj€ÕŸ1-1-1-Ûºç€¤Ë€±€I>$Ÿ0Ô[€€,€±€½5€¤Ë€g€= $Ÿ$Ÿ0Ô= ±$ø=bUÌI—1-Ûº±€g€Œa€¤Ë€g€j 5 5+Ä+Ä+Ä| 5= $Ÿ±²~7 ‚±²~7 €…ss€Œa€Œa€O€…€Œa€Œas€…€7777ÿBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀ0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠc¡*kŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUTUUUU@UUUTUUUUUUð `$Ÿ¤Ë€Éj€s÷€I>[€Uss÷€±€ÕŸ€˜–€s÷€= 5 5ú—€…€…‚7 ‚±²|$Ÿs÷€Éj€Éj€±€Éj€Ûºô$$ø$ø ŽYÛºÉj€˜–€$Ÿ+Ä}ú—‚±²}€…€…€…ú—€$ŸŒa€¤Ë€¤Ë€€,€€,€€,€Œa€˜–€±€ÛºÛºçï½5€˜–€€,€[€$Ÿ±²~7 €…€…€= s÷€¤Ë€Œa€Œa€Œa€€,€s÷€€,€Œa€¤Ë€±€Éj€¤Ë€Ûº0Ô+Ä~7 ‚7 ‚7 ‚7 ú—‚±²|Œa€ÕŸYçïçï¤Ë€±€Éj€çï=bI—çï½5€˜–€[€Us[€Us±²+Ä}ú—sss€jUs€,€€,€[€s÷€Œa€±€±€½5€77775BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀ,0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ð‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@UUUUTUUUUUUUUUUUUUUUUU@UUUUð `ÕŸ€ô$˜–€s÷€[€Us0Ô0Ôj+Ä~7 ‚7 €…€Œa€j€,€s÷€= j= j0ÔI>g€Éj€ÕŸ€¤Ë€Éj€±€€,€½5€˜–€ 5 5+Ä|j˜–€ÕŸ€ô$Éj€±€Œa€g€[€€,€Ûº=bhI—1-I—I—=bYçïÛº±€Œa€¤Ë€¤Ë€½51-UÌ=b=bÕŸ€ÛºÉj€çï$ø[ætPèH²™H±Y½Ž‚ ç²½Ž ޱ€¤Ë€½5€Éj€ô$ ŽYÛºô$ÕŸ€ÛºÛº±€Éj€Ûº±€¤Ë€¤Ë€s÷€[€$Ÿ 5±²}ú—€…‚±²|jUsô$1-çïŒa€¤Ë€€,€s÷€Œa€¤Ë€ÛºUÌâ-±YUÌ=b1-Ûº77775BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀD0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUPEUUUUUUUUUUUUUPUð `Œa€= s÷€[€[€Œa€çïhI—I—ÕŸ€˜–€g€Us±€Éj€±€±€¤Ë€g€0ÔI>Éj€ÛºçïÃÛº±€˜–€$Ÿ€,€ÛºÉj€ÛºÕŸ€½5€¤Ë€±€ÕŸ€çï½5€€,€[€I>I>$Ÿ$Ÿj±²}ú—s€…sú—‚7 € 5j+Ä+Ä|+Ä| 5I>€,€½5€½5€Œa€Œa€Us0Ô0Ô0Ô˜–€€,€= $ŸUs±Ã ŽÃ ŽçïÕŸYÉj€Éj€ÛºÉj€Éj€Éj€±€±€¤Ë€±€˜–€€,€€,€Œa€±€½5€½5€¤Ë€s÷€[€[€s÷€˜–€±€Éj€Éj€ÕŸ€±€I>[€ú—€…€O€Œa€…€…€0ÔUs€,€77775BUFRæbÿ« fÐ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÀX0’I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUUUUUUUUUUUUUUT@UU@UUUð `s÷€g€g€g€g€g€ÉjY$øYÃô$½5€€,€0Ô+Ä+Ä+Ä+Ä| 5s÷€½5€çïô$ÕŸ€ÕŸ€ÕŸ€ô$à Ž$øtP$øô$Yô$˜–€UsI>I>Œa€s÷€g€Éj€çïô$$øYô$çïçïçïçïô$çïÕŸ€˜–€[€s÷€[€Us 5jj0ÔUs$ŸUsg€I>I>$Ÿj½5$øô$¤Ë€= $Ÿ$Ÿj+Ä~7 ‚±²~7 ‚7 €…sú—€ú—€…ú—ƒ+Ä+Ä+Ä| 5Éj€¤Ë€€,€ÕŸ€Œa€ÕŸ€¤Ë€[ƒ+Ä~±²~±²~7 € 50ÔÕŸ Ž Žô$çïÛºô$çïçïÉj€±€Œa€€,€77775BUFR&bÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐÂUUUUUUUUUUUU]kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½èB„!B„!B„!„ ‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUEUUUUUUUUUUUUUUPUUUUUð `€,€g€[€UsjUs 57 €…€…‚7 € 50Ôg€s÷€s÷€g€UsUsg€s÷€€,€Œa€s÷€g€s÷€s÷€Usj+Ä| 5+Ä| 5 5I>Uss÷€€,€€,€s÷€[€Œa€˜–€±€½5€˜–€s÷€Œa€Œa€¤Ë€Œa€g€$Ÿ0Ô= j= Us0Ô[€Éj€½5€€,€g€€,€Uss÷€Uss÷€€,€UsUsI>0Ô 57 €…ú—s€…€…‚7 € 50ÔUsg€UsI>s÷€g€˜–€ÕŸ€ô$ô$ÛºÕŸ€g€¤Ë€Œa€g€$Ÿ±²~±²~7 ‚7 ú—€$Ÿ= = Usg€€,€½5€±€¤Ë€çïY$øY½5€Éj€çïçïÕŸ€˜–€[€I>7777ÿBUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð 0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUU@UUUU@UUUUUUUUUUTUð `I>j 5Us˜–€€,€[€UsUsg€Œa€s÷€Usg€Us0Ôj+Ä~±²~7 €…‚7 €…ú—s€Œasú—€ 5= g€¤Ë€¤Ë€s÷€Œa€¤Ë€¤Ë€ÕŸ€ô$±€Œa€g€[€= j±²}ú—‚7 €…€…€…€0Ô[€g€[€g€s÷€g€Œa€¤Ë€˜–€s÷€g€€,€Œa€Us$Ÿ 5+Ä~±²~7 ú—€…‚7 €I>Œa€ÕŸ€Éj€ÕŸ€ÕŸ€ÕŸ€½5€ÕŸYÃÛºÕŸ€±€ÕŸ€Œa€Œa€€,€= jj$Ÿg€՟YçïÕŸ€˜–€±€Éj€Éj€ÕŸ€½5€˜–€˜–€±€Éj€˜–€[€0Ô 5 5€…s‚±²|I>= UsUsI>= 7777 BUFRæbÿ« fÐ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð 0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUUUUUUUUUUUUUUUTUUUð `g€g€€,€±€±€ÕŸ€ô$Ûºô$½5€±€€,€jj±²~7 ‚7 ‚7 €= ˜–€˜–€Œa€s÷€g€I>[€[€Œa€˜–€Œa€¤Ë€€,€s÷€€,€[€ 5+Ä~±²|Œa€Œa€Œa€…‚7 €I>€,€€,€Œa€€,€= Us$Ÿ0Ô 5Us0Ôs÷€±€˜–€[€$Ÿ7 ú—€Œas€…ú—€jI>¤Ë€½5€±€çï Ž¤Ë€ô$ô$=bYÉj€˜–€¤Ë€Œa€€,€= ±²~7 sú—‚7 €[€˜–€ô$çïÉj€ÕŸ€ÕŸ€½5€€,€¤Ë€Œa€g€= 0Ô0Ôj7 ss€Œa€Œa€Œa€…€j€,€Éj€ô$¤Ë€€,€Ûº€,€g€€,€I>I>0Ô= 7777 BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð40$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPýà`€,€I>$Ÿú>îbîbîb‚+k€ 5½5$øÃYY¤Ë€Ï…½5€±€½5€çïO±O±€€,€€,€€,€I>g€ 5j$Ÿs÷€˜–€½5Y1-=bÃYÛºÛºçïYÃÃYÏ…çïçïçïÛº±€¤Ë€Éj€±€Ï…ÛºÛº$øÃÃ=b Ž1-=bI—I—O±I—ô$ Žô$ô$ô$YçïçïۺυÉj€½5€½5€Ï…ÃÛº½5˜ïtP1-˜–€˜–€Œa€€,€˜–€Œa€€,€¤Ë€¤Ë€±€±€Éj€½5€½5€±€±€½5€½5€Ï…$ø$øÏ…ÛºÛº±€ÛºÉj€Éj€¤Ë€±€½5€˜–€˜–€€,€€,€$Ÿ¥}~¥}|7777 BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐL0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠB˜è[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUPð b±²|0ÔŒa€Éj€˜–€¤Ë€¤Ë€˜–€¤Ë€½5€¤Ë€˜–€Œa€Œa€˜–€Œa€s÷€[€½5€¤Ë€˜–€[€j$Ÿg€[€[€[€s÷€€,€˜–€±€Éj€ÕŸ€Éj€ÕŸ€ÕŸ€Éj€Éj€½5€±€±€±€¤Ë€€,€g€I>I>s÷€g€g€[€g€€,€s÷€€,€€,€Œa€s÷€€,€€,€€,€±€˜–€½5€±€Éj€¤Ë€±€½5€±€±€Éj€ÕŸ€½5€½5€±€½5€±€ÕŸ€ÛºçïÛºÛºÛºÉj€½5€˜–€s÷€s÷€I>0Ôj 5j[€€,€[€[€UsUsg€[€g€s÷€g€s÷€g€I>g€˜–€˜–€±€ÕŸ€Ûº˜–€[ƒ+Ä~7 ú—ss€…ú—‚7 €$Ÿ[€7777 BUFRæbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ð`0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUA@UUUUUUUUUUUUUUUUUUUUUð `I>0Ô$Ÿ$Ÿ±²+Ä|±²}ú—s€O€O€Œa€O€Œa€…€…ss€…s€Œas€Œaú—€7 ‚7 €…ú—€…€…€…‚±²}€…€Œa€…ú—ú—‚±²|$Ÿ 5 5 5Us[€Us$Ÿg€Éj€ÕŸ€˜–€˜–€˜–€g€$Ÿ$Ÿs÷€UsI>s÷€±€Éj€çïô$çïô$Y$øUÌUÌ=bÃ1-[æ[æI—1-çïs÷€I>g€UsI>I>€,€½5€[€[€€,€ÕŸ€çïçïÃtP½Ž¥$¥$˜ï[æ$ø=b Ž Žô$Ûº½5€ÕŸ€çïÛºÕŸ€±€½5€˜–€±€ÕŸ Ž1-1-1-1-$ø1-$ø7777 BUFRfbÿ« fÐ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÐUUUUUUUUUUUUUUUUUUTD»»»»»»»»»»»»»»»»»»»»»»»»»^s½ï{Þ÷½ï{Þ÷½ï{Þ÷Þ÷½ï{Þ÷½ï{Þ÷½ïx!B„!B„!BB„!B„!B„!ŒcÆ0‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k„C!Lt%Kc\øFS¥mpC!Lt%lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUPUUUUUPEð a1-à Žô$Éj€Éj€Éj€±€˜–€Éj€Éj€ÛºÕŸ€çïçïYY$ø=bh[æ[æ[怅ŒºI—$ø ޽5€±€¤Ë€g€g€[€= $Ÿ$Ÿ= I>0Ô+Ä~±²~±²}€…ss€…s€Œas‚±²~7 ‚±²~7 ‚7 €= $ŸI>s÷€¤Ë€a¨s÷€a¨Us= 0Ô= 5±²+Ä~±²}ú—€…sú—‚±²}€…s‚7 €…€= a¨I>I>Us€,€˜–€Œa€ô$çïáÔ€½5€a¨€…€…sú—‚7 €…€I>a¨ÉjYÃáÔ€áÔ€Éj€½5€ÕŸ€áÔ€¤Ë€s÷€= I>a¨= = g€= j+Ä+Ä|+Ä|0ÔÉj€7777BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUEUUUUUUUUUð aYtP=b1-1-$øçïÉj€çïY=btPn6bn6I—ÃçïŒa€= 0Ô= ˜–€Éj€Éj€ÕŸ€áÔà ŽÃ=b=b Ž=b$øô$ô$YáÔ€áÔ€áÔYYYô$¤Ë€˜–€Éj€Éj€½5€½5€˜–€Œa€€,€€,€¤ËYô$áÔ€çï½5€€,€çï€,€I>a¨= 5+Ä|0Ôs÷€s÷€s÷€Œa€0Ôj$Ÿj$Ÿ±€Éj€½5€Œa€s÷€s÷€Œa€s÷€0Ô+Ä|0Ôg€áÔY=b Ž1-½5€±€¤Ë€s÷€½5 ŽY$ø1-1-$øYÃ=b=bÃYô$YYÃtP¥$‚ô}ô}bZÕø€7777ô$BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@$0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ð‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUPTU@UUUUUUUUUUUUUð a˜ï±YŒº=b$ø$øô$áÔ€½5€±€g€s÷€j= s÷€Uss÷€Œa€s÷€a¨I>= g€g€s÷€¤Ë€Œa€g€I>j±²~7 €…‚±²}€…€…€O€Œa‚±²|js÷€= j±²+Ä+Ä+Ä~±²|j$Ÿj 5±²}ú—sú—€…€Œaú—ssƒ+Ä|0Ôg€˜–€a¨j 50ÔUsÉj€çïçï±€¤Ë€a¨0Ô 5±²| 5+Ä}€…ƒ+Ä|¤Ë€áÔ€ô$½5€áÔ€±€€,€g€g€¤Ë€ÕŸ€ô$çï±€s÷€I>g€j±²| 5 5ja¨áÔ€áÔ€±€Œa€s÷€0Ô= g€€,€˜–€½5€½5€ÕŸ€áÔ€s÷€Œa€$Ÿ7777ô$BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@<0I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐŠ …1Е-sáN•µÀ …1Е1®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUýàb+k€ú>tP€ú>tP€I>Uss÷€[€I>Us= s÷€˜–€¤Ë€Éj€½5€Éj€çïô$ÛºÛºÛºÉj€Éj€Éj€±€½5€½5 Ž1-$øô$ ŽY ŽYô$à ŽYô$YÛºçïÕŸ€Éj€Éj€½5€Éj€ÕŸ€çï Žh˜ïÉØï˜ïtP$ø1-1-hUÌÃ$øI—1-=b$øÃ ŽÃ ŽYçï$øUÌUÌhtPUÌŒº€…tP€…â-˜ï‚² ç=»½Ž˜ï€…˜ïhUÌI— Ž=bb˜ïhI— Žçïô$1-UÌhI—=bÃ$ø=bÃ1- Ž$øYÛºÉj€ÕŸ€Ûºô$çïçï7777ô$BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@P0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUýà`ô$ÕŸ€ÕŸ€ÕŸ€ÛºÛºô$1-=bô$ÕŸ€ÕŸ€Ûºçïçïô$ÕŸ€ÛºÕŸ€ÛºÕŸ€Éj€Éj€±€s÷€[€[€s÷€Œa€s÷€Œa€±€±€¤Ë€±€±€€,€€,€[€I>$Ÿjj$Ÿ[€[€s÷€¤Ë€½5€Ûº Ž$ø1-Éj€Éj€˜–€s÷€¤Ë€€,€€,€˜–€g€0ÔUs= 5= ¤Ë€ô$Y±€˜–€g€I>Us[€g€¤Ë€¤Ë€[€0ÔI>g€I>jîbƒ}tP€ú>€ú>‚+k€ 5s÷€½5€Éj€€,€€,€UsUsŒa€±Y Žô$±€¤Ë€¤Ë€½5€s÷€I>$Ÿ~¥}|$Ÿ¤ËÃ=b=bô$±€s÷€Œa€½5€¤ËÃÃ7777ô$BUFR¶bÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@d0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$–Ûm¶Ûm¶Ûm»`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ ^1†Ä鬯~ðO€O€j0ÔÃP øP,@ †GÏ…1-²&\ L¸ýàI>¤Ë$øIðÄ´ 'ÀÐ$Ÿ9ûÀ^šÀ= 0Ôa¨ÃP q°&% ReÀ[€·ô$$ø† ¡ 5@AI—u n ß4™p-pUs¤Ë=bd¡ –¨¦°3á@†GUÌ·Í nˆÈÐ#`s÷ ŽbZÄ´dp @@mݤˀzÃPÃP ‰h @@˜– ŽÏÞŸ¼?x ÓXýàOX€º(A˜ïƒJIc¾ ß4\À'¬@F0À†Gçïb%ª|(~ð!‘À= dµ@ÉjI—“.KT –¨ýà@@s÷€Ï…Ÿ >é¬ –¨™p)2àX€@¤Ë€7777$BUFR&bÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑBUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷½ï{ÞðB„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œc!B„!@Š2ÇBT¶5Ï„e:V×D2ÇB–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUU@UUUUUUUð `ÕŸ€ÕŸ€Éj€áÔYYÕŸ€±€±€˜–€˜–€¤Ë€ÕŸ€áÔ ŽYô$Y ޽5€áÔ€Éj€ÕŸ€½5€±€Œa€s÷€s÷€˜–€˜–€áÔ€Éj€ÕŸ€±€Éj€çï$øÃY ޱ€˜–€¤Ë€a¨I>Us= jUs½5€ÕŸ€Éj€Éj€ÕŸ€ô$çïÕŸ€½5Y$ø1-=b$ø$ø=bn61-¤Ë€Œa€Œa€Us= I>I>I>s÷€Œa€€,€I>0Ô0Ô0Ô 5$Ÿa¨s÷€€,€I>I>ja¨a¨€,€UsI> 5+Ä}€…‚7 €j0Ô= I>= I>g€a¨g€՟€˜–€áÔU̱€a¨€,€g€I>I>s÷€¤Ë ŽUÌ Žô$ô$77775€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTUUUUUUUUTUUUUUUUUUUUUUUU aYÛºçï¤Ë€Éj€ô$ô$ ŽÉj€Ï…jZZ~6â-€î hâ-€0Ô€,€˜–€€,€s÷€OX€0Ô[€I>½5€½5€±€s÷€g€I>OX€OX€ 5h€î €s÷€î €î h€ 5˜–€Éj€˜–€0Ôg€OX€[€˜–€±=bUÌUÌ[æ ŽÛºÏ…çïô$$Ÿâ-â-h€g€˜–€±€˜–€Œa€g€[€g€Œa€Ï…YYYô$ô$YÏ…½5€¤Ë€g€g€g€Œa€Ï…UÌ¥$¥$hI—Ï…s÷€Éj€±$øh=bÃô$ô$YçïÛº Žçïçïô$Ï…¤Ë€s÷€€,€0ÔI>= 0Ôj$Ÿ0ÔI>OX€I>I>7777¨BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€(0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJšçÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUð `UsI>0Ô 5€…€…s€Œa€O€Osú—‚7 ƒ+Ä|+Ä+Ä|+Ä+Ä~±²~7 ƒ+Ä}ú—ƒ+Ä}€…€Œa€…ss€…ƒ+Ä|= áÔ€ô$ÕŸ€çï Žçï ŽYÉj€ÕŸ$øçï±€˜–ÃUÌ=b1- ŽÃYáÔ€ÕŸ€áÔ€…îbÕø€…$øb€…btP¥$€…˜ï‚ çô}Õøâ-ô}Œº$øÃYçïçïáÔÕø‚%QÊ‚%Qçïa¨ÕŸ€ô$=bn6UÌI—I—b1-I—UÌbb Žô$=b¥$‚%QIðV%€…UÌUÌ€…n6I—tPâ-±YŒº˜ïI—UÌI—1-$øô$±€±€7777¨BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶ÛrI$’I$¶Ûm¶Ûm¶ÛmÛ`Šc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡/„e:V×D6¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUP `±€ô$ ŽÏ…çïçïÏ…ô$çï½5€Ûº=bUÌ€…€…€…1-Yô$YÛº½5€±€Ï…Éj€Ûºô$ÉjYYÉj€Éj€Œa€±€Ï… ŽŒº˜ïèH ç¥$h Žçï½5€¤Ë€˜–€˜–€¤Ë€Éj€ô$YYÃô$$ø=b$øÃ=bÃ=bÃ Ž¤Ë€˜–€Éj€ô$Ï…Éj€½5€¤Ë€±€±€Éj€ÛºÉj€ô$Ã$øÃ$ø ŽYÃYô$±€˜–€s÷€€,€Œa€Ûº1-1-Ãô$Yô$[€ 5 5ZZ~6€g€¤Ë€Ï…˜–€±€±€Œa€Ï…€,€I>g€˜–€g€jj= I>I>j 5™H~6€7777¨BUFR&bÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ‚UUUUUUZÖµ­kZÖµ­kZÖµµ­kZÖµ­kZÖµ­kZÖ½ï{Þ÷½ï{Þ÷½ï{Þ÷Æ1ŒcÆ1ŒcÆ1ŒcÎsœç9Îs!B„!BŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUTUUUEPQUUUUUUUUUUUð asú—€0Ô¤Ë ŽáÔ€Œa€Us€,€a¨g€s÷€= Œa€s÷€= 0Ô±²~7 ‚7 ‚7 ú—ú—s€…€ja¨YÕŸ€˜–€€,€s÷€g€UsI>a¨Œa€Éj€Éj€±€¤Ë€ 5js÷€j€…€…ú—€UsŒa€±€a¨0Ô 50Ô$Ÿ±€¤Ë€s÷ ŽÉj€s÷€˜–‚7 € 50Ô= j+Ä+Ä~±²~7 ú—‚±²+Ä~±²~±²|j 5+Ä|= = ˜–€±€±€½5€˜–€ÕŸb=b½5€I>0Ô0Ô= ½5YY½5€a¨a¨s÷€Œa€Éj$ø Žçï$ø=b$øç€a¨= 5$ŸI>½5€±€¤Ë€˜–€s÷€I>$Ÿ77775€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUTUTUTUUUUUUUUUUUUUUEUUUUð `j$ŸI>Œa€çïáÔ€½5€˜–€¤Ë€s÷€Usa¨0Ôg€€,€ÕŸ€áÔ€ÕŸ€Œaƒ+Ä+Ä| 5±²+Ä|I>Éj€çï0Ôa¨a¨a¨= $Ÿ+Ä| 5j0ÔI>a¨s€…ú—ú—€…€…€±²|0Ա̺UÌŒº1-$øçïçï½5€¤Ë€ô$1-Œº1-€,€€,€Éj€±€¤Ë€áÔ$øŒº‚²¥$€çïÉj€áÔ€½5€½5€¤Ë€€,€I>= I>€,€€,€s÷€s÷€s÷€Œa€a¨Usa¨Œa€˜–€˜–€ÕŸ€çïáÔ€Œa€I>I>= Usj+Ä|$Ÿa¨Œa€Éj€½5€¤Ë€˜–€Œa€Œa€€,€½5€ô$$ø Žçï±€g€= 7777ïBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Ý¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc]Êt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUTUUUUEUUUUPUUUUUUð `= a¨= 57 ‚±²~±²|0Ô±€çïÕŸ€½5€çï½5€½5€ÕŸ€áÔYYY ŽÃ$øý5€g€= j0ÔjŒa€±€½5€±€g€Usg€I>€,€½5€Éj€ô$UÌUÌI—Y±€€,€I>0Ô+Ä~±²~7 ‚±²|a¨Œa€Œa€I>a¨I>= Us 5 5I>€,€ô$ç€€,€ 5ú—€j$Ÿg€j0Ôs÷€s÷€s÷€s÷€a¨Usa¨ô$áÔ€áÔ€ô$gƒ+Ä}€…€…sú—‚7 €…ú—€€,€˜–€˜–€a¨$ŸI>a¨˜–€Éj€½5€ÕŸ1- ŽÕŸÃô$Œa€a¨ 5j 5j= ½5€ÕŸ€7777ïBUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ40I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUT@QUUTð `±YY½5€Usg€€,€I>s÷€¤Ë€áÔ€Œa€a¨$Ÿa¨€,€= = Us€,€¤Ë€ÕŸ€áÔ€áÔ€çï±€€,€UsUss÷€g€g€g€ç€…€…n6n6I—UÌ=b$øô$ÕŸ€ô$áÔYI—I—YÕŸ€±€±€ÕŸÃ1- Ž=b=bäËÀ,€= a¨$Ÿ$ŸI>= I>˜–€€,€a¨g€a¨Us= = = $Ÿ±²|7 ú—€…s€…ssú—ú—‚7 ‚±²|$Ÿ+Ä|$Ÿj+Ä|$Ÿ$Ÿ$ŸI>$Ÿ0ÔI>+Ä|ú—ú—€…ú—‚±²|+Ä+Ä|jj$Ÿj+Ä|7777ïBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀH0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ð‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUTUUUPUUUUUUUUUUUUUUUUð ` 5g€= +Ä+Ä|$ŸjI>Us¤Ë€g€ÉjÃÃÃYUs±²~±²|$Ÿ$Ÿ$Ÿ= ±=bô$±€= I>= 5j+Ä+Ä| 5I>€,€€,€Us= = jj 5jjUsUss÷€0Ô 5+Ä~7 ú—‚7 ú—ú—ú—‚7 ‚±²| 5Œa€€,€a¨I>= = 0Ôa¨˜–€¤Ë€±€˜–€€,€±€˜–€±€˜–€˜–€Œa€€,€Œa€€,€Œa€€,€˜–€€,€s÷€s÷€˜–€¤Ë€çï$øUÌ$ø1-=b1- ŽÉj€ÕŸ€áÔ€áÔY½5€UsÉj€ô$çïÕŸ€áÔ€½5€Éj€áÔYô$ ޽5€çï$øÃI—Ã1-çï7777ïBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ`0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Ûm¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž…±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUTQUTUUUUTUUUUUPUUUUUUUð aY$øçïÕŸ€= g€g€0Ô= Usg€Us€,€g€€,€˜–€¤Ë€±€g€I>0Ô= 0Ô$Ÿ 5±²}ú—€…‚7 ‚±²~±²|+Ä+Ä| 5j+Ä|j0Ô$ŸjI>0Ô$Ÿ 57 ƒ+Ä~±²~7 ‚±²|g€áÔ€½5€±€s÷€a¨UsjUsa¨= = Usg€= j±²~7 ƒ+Ä|$Ÿa¨Œa€˜–€Œa€s÷€Œa€˜–€€,€˜–€˜–€Éj€ÕŸ€áÔ€ÕŸ€¤Ë€¤Ë€€,€s÷€Œa€Us 5±²+Ä|a¨ÉjÃçïáÔ$øY½5€çïáÔ€áÔI—n6˜ïI—1- ŽÃ$øô$áÔ€áÔYÃn6ÉÃ1-7777ïBUFR&bÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÂUUUUUUUUUUUUUUUU^sœç9Îsœç;Þ÷½ï{Þ÷½ï{Þ÷½ï}ï{Þ÷½ï{Þ÷½ï{Þ÷€„!B„!B„!D!B„!B„ Š¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUEUUUUUUUUUUUUUUAUUUUUUUUUð `çïÕŸ€Éj€˜–€˜–€¤Ë€½5€˜–€˜–€Œa€˜–€Us0Ô 5j+Ä|$ŸUsÉj€çïçï¤Ë€€,€Us0Ôs÷€g€s÷€€,€ÉjI—=b=b$ø½5€a¨$Ÿ+Ä~7 ‚±²| 5g€s÷€g€= 0Ô$Ÿ$Ÿ$ŸI>I>I>g€˜–€¤Ë€€,€Œa€s÷€0Ô 5I>I>$Ÿ$ŸUsŒa€s÷€I>±²|j$Ÿ= jI>I> 5$Ÿ€,€˜–€Usj±²~±²|UsI>Us= Œa€Œa€¤Ë€¤Ë€˜–€˜–€s÷€½5€ÕŸ€ô$ ŽáÔ€Éj€½5€çïô$˜–€0Ôj±²|Us¤ËY$ø±€€,€€,€Œa€Œa€€,€˜–€ô$±€çï77775€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ 0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðU@UUUUUUUUUQUUUU@UUUTEQQETð `áÔ€½5€Us$Ÿú—€…€…€Œa€…ú—‚±²|$Ÿa¨a¨€,€˜–€Us$Ÿ0ÔjI>0ÔI>a¨a¨I>0Ôj 5UsI>$Ÿa¨s÷€ô$Yô$çïáÔ€ÕŸ€±€¤Ë€±€çïÕŸ€= I>= +Ä|0Ô+Ä+Ä}€…€= +Ä~±²+Ä|0Ô½5€¤Ë€Éj€ÕŸ€¤Ë€ÕŸ€˜–€±€¤Ë€˜–€½5€ô$s÷€s÷€j$Ÿ0Ô±²~±²+Ä+Ä~7 ‚±²|a¨g€g€a¨UsUs¤Ë€g€= s÷€s÷€I>g€$Ÿ±²|j+Ä| 5j$Ÿ+Ä|$Ÿ0Ô 5±²| 50Ô+Ä|7 €j+Ä|g€±€= j7 ‚±²~±²~±²~±²|7777ÔBUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ$0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥µÏ„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUUEUUUUUUUUUUT@TUUð b±²|j$Ÿ¤Ë€±€ÕŸYÉj€€,€g€˜–€ÕŸ€€,€g€g€a¨= Usa¨$Ÿj7 ‚7 ƒ+Ä}ss‚7 €0Ôs÷€¤Ë€˜–€Œa€±€½5€€,€Œa€s÷€g€a¨a¨a¨s÷€$Ÿ$Ÿj+Ä|I>j$ŸŒaYÃYÉj€¤Ë€˜–€s÷€Œa€ô$ô$YYYUÌb=bÉj€jj0Ô= ¤Ë€ÕŸ€áÔ€¤Ë€Éj Žç€±€±€½5€ÕŸ€áÔ€a¨I>$Ÿ 5jú—‚7 ú—ú—ú—‚7 ‚7 €0Ô= 7 ‚7 ‚7 ‚±²~7 ú—‚±²+Ä|= I>UsÕŸ€Us±²~±²|= $ŸI>a¨$Ÿa¨Œa€˜–€s÷€€,€7777ÔBUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ80’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUA@UUU@UUUUUUUU@UUUUUUUUUUð `˜–€˜–€s÷€€,€$Ÿg€I>jj+Ä+Ä|±²+Ä+Ä~7 ú—€…‚7 ú—ú—ú—‚±²~±²}ú—‚7 ú—‚7 ‚±²| 5= a¨¤Ë€¤Ë€$Ÿj$Ÿ0Ô0Ô= = 0Ôj+Ä~±²+Ä+Ä+Ä| 5 5jj0ÔUsÉj€Œa€Éj€€,€Us$øÉj€áÔ€áÔ€áÔ€çï Žô$€,€I>= I>= $Ÿj$Ÿ 50Ô= jI>€…‚7 ƒ+Ä| 5= ˜–€Éj€ÕŸ€s÷€Œa€˜–€˜–€s÷€s÷€g€s÷€¤Ë€€,€g€½5€½5€¤Ë€Œa€Œa€a¨Œa€= I>Œa€çïáÔ€½5€€,€g€Usg€Œa€g€s÷€±€ÕŸ€¤Ë€€,€7777ÔBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑL0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛnÛ`‹:Zà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èRØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUQUUUTAUUUUUUUUUUUUUð `çï½5€= I>0Ôg€I> 5I>g€՟€Éj€˜–€€,€g€±€¤Ë€Œa€s÷€€,€g€UsUs¤Ë€¤Ë€s÷€g€s÷€¤Ë€˜–€a¨Us¤Ë€±€ô$Éj€Œa€= +Ä|0Ôg€Œa€I>€,€Œa€¤Ë€Œa ޽5€s÷€a¨UsI>a¨Us+Ä+Ä+Ä| 5±²|7 € 5±²~±²|jj0Ôjj+Ä+Ä+Ä~±²~7 € 5±²| 50Ԥˀô$çïÉj€˜–€çï¤Ë€g€g€€,€Œa€±€˜–€ô$¤Ë€€,€g€Œa€Œa€a¨a¨$ŸI>a¨±€¤Ë€Œa€˜–€€,€Usg€€,€ÕŸ€áÔ€áÔÃI—Ãô$ÕŸ€¤Ë€= s÷€j 5$Ÿ7777ÔBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñd0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUU@PUUU@UUUUUð `€,€ÕŸ€Éj€ô$Œa€€,€g€˜–€¤Ë€˜–€ÕŸ€ÉjYÕŸ€a¨a¨€,€±€I>Uss÷€çï±€áÔY$øY±€˜–€€,€s÷€s÷€€,€Œa€¤Ë€€,€ÕŸÃtP$ø$øn6˜ïb1-Y½5€Éj€áÔ1- Ž$ø1-áÔ€±€Éj€¤Ë€±€ÉjUÌ€…UÌI—Y±€±€a¨I>±²+Ä+Ä~±²|j 5 5+Ä+Ä|0Ôj 50ÔUsÕŸYŒa€Usj±²~7 ‚7 ‚7 €= = +Ä~7 ú—‚±²}ú—‚±²}ú—‚7 ‚±²| 5j0ÔÉj€±€g€€,€€,€a¨¤Ë€çïáÔ=b€… ŽÉj€¤Ë€s÷€a¨Œa€7777ÔBUFR&bÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷ B„!B„!B„"„!B„!B„!CÆ1ŒcÆ1ŒcÆ1Œd!B„!B„!@Š×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUTPUUUUUUUUUUUUUUUUUUUUUEð `€,€I>s÷€¤Ë€¤Ë€€,€Œa€áÔ Ž½5€¤Ë€g€I>7 ‚±²| 5= s÷€Us0Ôj 5±²}ú—€7 ‚±²| 5+Ä~±²~±²+Ä+Ä}ú—‚7 ú—ú—€ 5Usg€0Ôg€0Ô 5 5j€,$ø ŽçïYô$˜–€±€a¨ô$b½5€˜–€Œa€¤Ë€¤Ë€çï Ž Ž$ø$øÃŒºn6$ø ŽÕŸ€½5€ÕŸ€Éj€¤Ë€Éj€çïÕŸ€ÕŸ€¤Ë$øô$ Ž Žçïô$ç€Usg€Us¤Ë€g€I>€,€= YŒa€g€±€˜–€Œa€Us€,€˜–€Œa€±€a¨½5€Éj€a¨0ÔI>I>= a¨I>0Ô$Ÿ+Ä|$Ÿ77775€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUP@PUUUUUU@UQUU@UUUUUUð `I>I>0Ô$Ÿ$Ÿ±²~±²~±²~±²~±²}ú—ú—€…ú—ú—‚7 €…ú—ú—‚7 ‚±²|jj+Ä~±²~±²~7 ‚±²~±²| 5±²}ú—ú—ú—ú—€…ú—ú—ú—‚7 ú—‚7 ƒ+Ä| 5I>I>Us$Ÿa¨= Éj€¤Ë€s÷€áÔ=b½5€±€½5€¤Ë€Œa€áÔ1-$øŒa€Us= €,€0Ô 5±²~±²~±²~7 ‚7 ƒ+Ä| 5Us€,€a¨I>g€I>+Ä| 5$Ÿjs÷€a¨= 0Ô= 0Ôj±²+Ä+Ä~±²+Ä|= ˜–€Éj€ÕŸ€±€Œa€s÷€a¨I>= = $ŸUsUsUss÷€±€˜–€˜–€Us= Us0Ô$Ÿ0Ôs÷€7777a€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@,0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUU@UQTUUUUUUU@UUUUUUUð `˜–€¤Ë€s÷€€,€€,€a¨$Ÿ 5 5= = UsUsŒa€Éj€½5€ÕŸ€Œa€a¨= I>$Ÿ= I>g€g€0Ôú—‚7 ú—‚±²~±²~7 ‚±²|j= g€= $Ÿ+Ä|$Ÿ 5j 5+Ä+Ä+Ä~7 ‚±²+Ä~±²~7 ‚±²}ú—‚7 ‚7 €js÷€¤Ë€I>Us0Ô0Ôjj 5$Ÿs÷€Éjà ŽáÔ€áÔ€ô$YáÔ€s÷€Œa€Œa€¤Ë€a¨UsI>j 5±²~±²~±²+Ä~±²| 5UsÕŸ€Éj€ÕŸ€Éj€Éj€¤Ë€€,€Usg€˜–€a¨I>j$Ÿ0Ôj+Ä+Ä+Ä~±²|0Ô½5€ÕŸÃÃç€s÷€s÷€˜–€7777a€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUU@UUUUUUUUUUUUTPUUUPUð `€,€ÕŸ€s÷€I>¤Ë$ø Žô$ô$s÷ƒ+Ä+Ä}€…sú—€ŒaY ŽÕŸ€áÔ€¤Ë€s÷€Éj€çï½5€áÔ€˜–€= +Ä~±²~±²+Ä}€…€…‚7 €…sú—€jg€s÷€a¨$Ÿ0ÔI>0Ô0Ô= Usg€I>Usg€Us$Ÿj$ŸI>$Ÿ 5I>g€€,€˜–€˜–€g€g€g€a¨Uss÷€a¨I>$Ÿ$Ÿs÷ Žô$s÷€I>s÷€= $Ÿ 50Ôa¨Usa¨= +Ä~±²+Ä|$Ÿ+Ä|$Ÿj+Ä+Ä|$Ÿ$Ÿ±$ø½5€Œa€ 5 5+Ä| 5g€՟€½5 Ž$øçïa¨+Ä~7 ‚7 €+Ä~7 €0Ôs÷€a¨Us7777a€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@T0 $’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹k€" c¡+c\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTQUUTUTPQP@UUUUUUUUUð ` 50ÔÉj€s÷€˜–€Éj€½5€Us+Ä~±²~7 ƒ+Ä~±²~±²|+Ä|j$Ÿ+Ä|= $Ÿ$Ÿ= 0Ô= ˜–€½5€¤Ë€Us±²~7 ú—‚±²+Ä~±²~±²~±²+Ä|Usj= 0Ôjj+Ä+Ä|$ŸI>s÷€€,€a¨±²~±²~±²~7 ‚±²+Ä| 5+Ä| 5±²~7 €…sú—€Œa€O€…ú—€$Ÿ±²~7 ‚7 ‚±²~±²+Ä|0Ô 5j$Ÿ= = = ÕŸ1-$ø Ž=bÉj€¤Ë€Œa€s÷€¤Ë€±€€,€$ŸUs 5j= $Ÿ0Ô 5Œa€½5€áÔ€¤Ë€±€¤Ë€g€I>$Ÿ±²+Ä~±²| 57777a€BUFR&bÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑBUUU]kZÖµ­kZÖµ­o{Þ÷½ï{Þ÷½ï{Þ÷½óœç9Îsœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{ÞûÞ÷½ï{Þ÷½ï{Þ÷½ïŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUQ@@QUUUUUQUUUUUTUUð `0Ô$Ÿ 5 5jjj 5 5jjj+Ä|j±²}ú—‚7 €…€…€Œa€…€…ú—ú—€…€…€…€…ú—‚7 ‚7 ‚7 ‚7 ‚7 ƒ+Ä|= jj7 ‚7 €…ú—‚±²|$Ÿj+Ä+Ä+Ä+Ä|+Ä|j= +Ä|0Ô€,€Œa€ 50Ô 5j$Ÿg€˜–€€,€$Ÿ$ŸI>= jj 5$Ÿ= +Ä| 5±²|j±²+Ä+Ä|j+Ä|jja¨€,€g€Us0Ô= = = $ŸI>$ŸUsj 5 5$ŸUs0Ô 5$Ÿj+Ä~±²~±²+Ä|jI>= $Ÿ= $Ÿ= 0Ôj77775€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc_Êt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUDUUUUUTUUUUUUUUUUUUUUUUPð `I>I>$Ÿ 5j+Ä|±²}ú—‚7 ú—s€Œa€…ú—€ 50Ô$Ÿ 5j0Ô 50Ôj$ŸUsg€0ÔjI>a¨0Ôj 50Ô= +Ä+Ä}€…ú—s€…s€…ú—ú—ú—ú—‚±²~7 ‚7 ‚±²|j 5+Ä~±²}ú—‚7 ú—€$Ÿg€s÷€UsUsI>= = 0Ô0Ô$ŸI>I>j$ŸI>Us$ŸjÉj€çïÕŸ€Éj€±€˜–€¤Ë€¤Ë€Œa€s÷€I>0Ô$Ÿ= a¨±€˜–€€,€áÔUÌI— Ž$Ÿa¨½5€0ÔUss÷€Œa€Usg€a¨0ÔI>0Ô$Ÿ 50Ôa¨a¨I>j= 0Ôú—ú—€7777ŸBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUUUUUUQTUTUUUUUUUð a€…‚7 €…ú—€ 5a¨$Ÿj$Ÿ 5+Ä|= = $Ÿ$Ÿ0Ôj 5$ŸUs0Ôs÷€½5ƒ+Ä|$Ÿ 5$ŸI>I>UsUs= 0Ô= UsUs$Ÿ= = I>j$Ÿ0Ôg€˜–€ÕŸ€áÔ€çï½5€¤Ë€€,€€,€˜–€Œa€€,€s÷€a¨$Ÿ 5= a¨js÷€0Ô$Ÿ$Ÿa¨= 0Ô+Ä|= j$Ÿ 57 ‚±²}ú—ú—ú—‚7 ƒ+Ä|7 ‚7 ‚7 ‚7 ‚7 ú—‚±²~±²| 5$Ÿa¨$Ÿ0ÔUs0Ô+Ä|= g€€,€a¨Usa¨g€˜–€a¨Usa¨a¨UsUsUsg€UsUs0Ôj$Ÿj 5Œa€Éj€½5€7777ŸBUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€00I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTUUUUUTUUUUUPUUUUT@QUUPQð `€,€g€s÷€UsŒa€˜–€€,€a¨g€$Ÿ= 0Ôg€$Ÿ±²+Ä+Ä|j$Ÿ= g€Éj€áÔ€Éj€±€Œa€g€$ŸŒa€áÔ€áÔ Ž±€€,€Œa€g€Œa€s÷€Œa€ja¨ 5+Ä|$Ÿa¨€,€g€a¨˜–€I>I>I>= s÷€Us¤Ë€˜–€˜–€I>0ÔI>j 5 5$Ÿ+Ä~±²+Ä|¤Ë€˜–€g€Us= 0ÔUsUsI>I>ô$áÔ€¤Ë€˜–€Éj€áÔ€¤Ë€0Ô 5±²~±²+Ä|j0Ô$Ÿ±²+Ä+Ä|j0Ô7 €Usa¨= j 50ÔI>$Ÿ 5j±²+Ä~7 ‚7 ‚7 ‚7 ‚7 ‚±²| 5 50Ô+Ä|7777ŸBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€D0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm»`‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ކ5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUTUUUUTUUUUUUU@@ð `$Ÿj+Ä|0Ô= 0ÔI>= = = s÷€˜–€±€½5€˜–€I>g€a¨= a¨a¨˜–€˜–€˜–€Éj€±€˜–€½5€¤Ë€Œa€˜–€Éj€½5€˜–€˜–€˜–€¤Ë€Œa€¤Ë€±€±€Œa€Uss÷€€,€¤Ë€€,€s÷€€,€s÷€±€áÔ€±€g€ 5$Ÿ±²+Ä|= çïáÔ€€,€Œa€±€g€€,€= = UsI>$Ÿ$Ÿa¨UsUsg€= €,€Us+Ä| 5Usg€s÷€Œa€g€a¨UsI>= I>I>a¨= 5 5= UsI>= = = $Ÿa¨0Ôg€Usg€= +Ä+Ä~±²+Ä+Ä~±²~±²~7 ƒ+Ä| 5jI>7 ‚±²}€…€7777ŸBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€\0’I$’I$’I)$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@UUUUUTUUUUUEUEUUð ass€…‚±²}ú—€Œas€Œa€…s€…‚7 ‚7 ú—ú—€…ƒ+Ä+Ä~±²| 5+Ä+Ä+Ä+Ä+Ä~±²~±²|$Ÿ= I>j 5±²~±²~7 ƒ+Ä|¤Ë=b Žô$ÕŸ€˜–€a¨€,€˜–€±€ÉjYI>Usg€ 5= ±²~±²~±²|7 ‚±²~7 ‚7 ƒ+Ä+Ä~±²+Ä| 5 50ÔI>jj±²~±²+Ä+Ä| 5j 5j0Ô$Ÿ$Ÿ$Ÿ±²}€…ú—‚±²|$Ÿ½5 Žçï€,€j 5 5 5+Ä| 5 5$Ÿ 5$Ÿ 5+Ä|0Ô$Ÿ= UsUsj= $Ÿ7777ŸBUFR&bÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ‚UUUUUUUUUUUUUUUUU]ï{Þ÷½ï|ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷ B„!B„!B„"„!B„!B„ Š×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTUUUUTP@UUUUUUUUUPð `0Ô$Ÿ 5+Ä~±²+Ä|= ½5€˜–€Œa€jj0Ôj+Ä|$Ÿ= UsI>0Ô= UsI>$Ÿ$ŸI>Us€,€a¨g€a¨a¨a¨Us+Ä|+Ä~±²~7 ƒ+Ä+Ä~7 ‚±²+Ä|j7 ú—‚±²~±²~±²}ú—‚7 ‚7 ‚±²~±²| 5$Ÿ±²|j7 ‚±²+Ä}ú—‚±²|$Ÿú—€…ú—€…‚±²}ú—‚7 ‚7 ‚±²+Ä| 5$Ÿ= Usj$Ÿ= g€g€g€¤Ë€s÷€= a¨UsI>I>I>g€I>€,€˜–€$Ÿ= I>$Ÿ 5 5 5 5j0ÔI>a¨s÷€UsI> 5+Ä+Ä~7 ‚±²~7 €7 ‚7 €77775€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ 0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUPUUUUP@UUUUUUUUUPQEP@ð c+Ä+Ä+Ä~±²+Ä|jI>Usa¨= I>Us$Ÿ 5±²+Ä~±²|+Ä+Ä+Ä| 5 5 5= UsI> 5= 5= g€s÷€Œa€€,€€,€˜–€a¨±²|+Ä|+Ä| 5j$Ÿj±²+Ä| 5±²~±²~±²+Ä| 5$Ÿa¨Œa€˜–€€,€€,€I>0Ôjj7 €$Ÿ½5€€,€0Ô= 0Ô$ŸI> 5$Ÿ0Ô0ÔUsUss÷€Œa€s÷€ÕŸ ŽÕŸ$øtP=b½5€ô$Éj€ÕŸ€çï±€g€$Ÿ$Ÿ 5±²}ú—ú—ú—‚7 ‚±²+Ä~±²+Ä+Ä|0Ô+Ä| 5 5+Ä|0Ôj 5jú—‚7 € 5+Ä~±²+Ä|7777jBUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ$0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUTAUUUTUUEQTEUUUUUUUUð ` 50ÔI>= $ŸI>a¨s÷€Usa¨s÷€€,€s÷€g€€,€€,€$Ÿj 5ú—€ 57 ƒ+Ä|$Ÿ= ˜–€g€Usj0ÔI>s÷€UsI>0Ô0Ô7 ‚7 ‚7 ‚±²|jg€€…‚7 s€…€Œaú—ƒ+Ä| 5 50Ô 5$Ÿ+Ä}ú—ƒ+Ä~7 ‚7 ú—ú—ú—ú—‚7 ú—€±²}ú—‚±²+Ä| 5= I> 5+Ä|+Ä|±²|j= 5+Ä|j= = +Ä|+Ä|jI>= I>a¨Éj€½5€Œa€a¨s÷€€,€s÷€= I>= a¨¤Ë€¤Ë€ÕŸ€Œa€Us€,€0Ôj0ÔI>a¨$Ÿ 50Ô$Ÿ= 0Ô7777jBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ80$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS SçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UQUEPEUUPUUUDUUUUð `I>= 0Ôj±²~±²| 5I>= $Ÿ$ŸI>= j 5€…€…€Œaú—€…€…sú—€…‚7 ‚7 ú—ƒ+Ä| 50ÔUsI>j 5I>j+Ä|I>s÷€€,€g€$Ÿ+Ä|g€0Ôs÷€$Ÿ±²+Ä+Ä+Ä~±²~±²+Ä~7 ‚7 ‚±²| 5+Ä|j= $Ÿ 5 57 ƒ+Ä| 5 50Ôg€= j±²~±²~7 ú—s‚±²}ú—€…‚±²| 5g€½5€s÷€g€Us= a¨Œa€s÷€Œa€€,€g€+Ä| 5±²~±²~7 ‚±²|±²+Ä+Ä|a¨˜–€Œa€˜–€˜–€€,€g€Œa€Uss÷€a¨g€0ÔI>g€˜–€7777jBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀL0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUU@UUUUPUUUUUUUUUUUUPUð `¤Ë€¤Ë€Œa€˜–€€,€€,€s÷€a¨g€s÷€g€I>UsŒa€g€I>Œa€g€g€¤Ë€Œa€a¨s÷€$Ÿ+Ä~7 ‚±²~±²~7 ‚7 ú—€0Ô$Ÿ$ŸI> 5 50Ô 50ÔUs= UsŒa€a¨s÷€˜–€I>ú—ƒ+Ä~7 ‚±²}€…€Œaƒ+Ä|$Ÿú—€…ú—ú—‚7 €…ú—ú—ú—ƒ+Ä~±²|$Ÿ$ŸUs€,€Œa€˜–€€,€s÷€a¨a¨g€s÷€s÷€= I>0Ôj 5= = a¨0ÔÉj€¤Ë€I>I>$Ÿ0Ô$Ÿ€,€¤Ë€˜–€˜–€s÷€g€Œa€s÷€= 0Ô0Ô$Ÿ$Ÿ$ŸI>I>±€˜–€g€a¨€,€¤Ë€Us±²~±²| 5g€Œa€g€7777jBUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀd0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQPUUUUUUUUUUUUUUUUUUUTPPUUð c+Ä|j$ŸjI>= ±²|$Ÿ0Ô±²+Ä| 5j$Ÿ$Ÿ+Ä~±²~7 €+Ä|j= €,€±€ÕŸ€áÔ€I>$Ÿ 5$ŸI>I>s÷€g€I>€,€çïô$tPI—1-ÃI—çï¤Ë€Œa€s÷€½5€±€Éj€Éj€áÔ€çïÉj€±€Œa€±€a¨0ÔI>˜–€çïçïô$½5€Œa€Éj€½5€±€˜–€¤Ë€±€¤Ë€g€UsI>I>0Ô= 0Ô= 0ÔI>$Ÿ$Ÿs÷€çï$øÕŸØ–€¤Ë€a¨= = s÷€ÕŸ€I>+Ä|0Ô+Ä~±²+Ä~±²~±²~±²| 5+Ä~±²~±²+Ä~±²~7 ƒ+Ä+Ä|$Ÿ0Ôa¨€,€€,€0ÔI>a¨0ÔI>7777jBUFR&bÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÂUUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷Þ÷½ï{Þ÷½ï{Þ÷½ï!B„!B„!BˆB„!B„!B„! cÆ1ŒcÆ1ŒcÆ0ŠçÂ2+k€" c¡Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUQUUU@UUUPUUUUUUUUUUUUUUUUð `Us= I>= ±²|$Ÿ= $Ÿ$Ÿ= Usg€$Ÿ+Ä|I>0Ô$Ÿ= = = = = = $Ÿa¨I>0Ô±²~7 ú—ú—€…‚±²~7 ‚±²~±²|UsŒa€a¨= = I>= = jjI>ÕŸ€a¨g€€,€I>+Ä~±²~±²}ú—ƒ+Ä+Ä}€…ƒ+Ä| 5$Ÿ€,€a¨$ŸUsUs= €,€0ÔI>I>UsI>0ÔI>ç€±€Œa€€,€= = j= ½5€½5€Œa€±€½5€s÷€¤Ë€s÷€I>a¨˜–€s÷€Œa€ÕŸ€áÔ€€,€I>$ŸI>g€Œa€Œa€g€Usg€Œa€$Ÿ$ŸI>s÷€j$ŸI>g€= a¨€,€Us€,€Éj€½5€77775€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUU@QUUUUUUUUUUUð `˜–€±€˜–€g€I> 57 ú—ú—ú—‚7 ‚±²~7 ú—‚±²~7 ‚±²~7 ‚±²|I>¤Ë€½5€ 5€,€jŒa€g€0Ô$Ÿ0Ôj= a¨a¨= 0Ô 5 5+Ä|$Ÿa¨Us+Ä~7 ‚±²~±²~±²~7 ƒ+Ä~±²+Ä|jjI>I>Usg€= $Ÿ= = $Ÿs÷€$Ÿa¨˜–€s÷€Us0Ô7 ‚7 ú—‚7 ú—‚±²|$Ÿ 5+Ä| 5$Ÿg€I>$Ÿa¨Usg€€,€˜–€0ÔUsŒa€0ÔUsI>I>I>I>g€€,€I>0Ô€,€g€a¨€,€˜–€ÕŸ ޱ€Us±€½5€UsI>= $Ÿ$Ÿ 5$Ÿ= Us7777€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ(0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUQUUUUUUUPUUUUQUUUð `UsI>= 0ÔUsUsa¨= j$Ÿ0Ô= ±€ô$ô$Éj€Usg€½5€Œa€a¨= I>UsI>UsUs= = = = $Ÿjj= Us= +Ä|+Ä}ú—ú—ú—€Œas€…ƒ+Ä|jj 5 5 5 5 50Ô$Ÿ±²|j 5 5±²}s‚7 €…ú—ƒ+Ä|jj€,€I>$Ÿ 5 5$Ÿ$Ÿ 5Usa¨= a¨Œa€€,€g€a¨Us+Ä}€…‚7 € 50Ô= g€a¨a¨= $Ÿ= g€a¨Uss÷€gÂÃÉj€I>s÷€Us= I>+Ä|UsÕŸ€¤Ë€çïáÔ€ÕŸ€˜–€¤Ë€€,€g€€,€Us7777€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ<0I$’I$’I$”’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)ކ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUU@UUTUUUUð `Œa€g€g€UsŒa€€,€s÷€a¨Us= €,€g€a¨g€g€= s÷€$Ÿ 5= I>s÷€= = Usg€½5€±€Œa€a¨Us0Ôj= a¨a¨g€g€0Ô= I>a¨ÕŸ€ô$1-½5€˜–€˜–€±€s÷€j$Ÿ$Ÿ= 0ÔUsj±²~±²~±²~±²| 5$ŸI>I>a¨€,€s÷ƒ+Ä+Ä|$Ÿ$Ÿ±²+Ä}ú—‚7 ‚7 ƒ+Ä~7 ‚7 ú—ú—‚7 ‚±²+Ä|j+Ä~±²+Ä~7 €s÷€½5€áÔ€Éj€j±²|+Ä+Ä+Ä|a¨€,€g€0Ôjj+Ä| 5j0ÔI>jgÂY Žô$çïáÔ€Éj€çïŒa€$Ÿ7777€BUFRæbÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑT0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUTUUUUð `$Ÿ˜–€±€¤Ë€¤Ë€s÷€0Ô= I>Us€,€˜–€¤Ë€¤Ë€áÔ Ža¨½5€Éj€Usj0Ô 5 5g€¤Ë€˜–€˜–€½5€a¨Usa¨= UsUs€,€s÷€Œa€€,€˜– Ž=b1-çïçïg€˜–€Œa€Œa€½5€½5€ô$Yçï±€˜–€çïI>j¤Ë€½5€áÔ€ÕŸ€I>gÂ=bÉj€a¨ô$a¨Œa€UsI>Us¤Ë€½5€ÕŸ€ô$ÕŸ€Œa€½5€€,€a¨˜–€s÷€g€¤Ë€˜–€€,€½5€áÔ€çïçïYÉj€Œa€€,€s÷€˜–€ÕŸ€Us 5+Ä|= Uss÷€ 5 5Éj€˜–€€,€€,€s÷€g€s÷€s÷€Us0Ô$Ÿ+Ä+Ä~±²| 5±²~±²| 57 €7777€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñh0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ç>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTTUUUUUUUUUUEUUUUUUUUUUUUUð b7 ƒ+Ä+Ä|j0Ôg€I>I>I>0Ô0Ô0Ô$Ÿj 5+Ä|±²~7 ƒ+Ä+Ä~±²~±²}ú—‚±²+Ä~7 ‚±²|0Ô€,€¤Ë€s÷€g€I>a¨€,€Œa€Œa€g€g€a¨ÕŸ€ÕŸ€ÕŸ€±€Œa€¤Ë€±€g€¤ËY˜–€ŒaUÌ€…˜ïŒºtP€…ÃÉj€Œa€€,Y ŽUÌb€,€$Ÿj0Ô+Ä|UsjUs½5=bb±€$Ÿ= 0Ô= I>I>I>Us¤Ë€ÕŸÃ1- Ž Ž Ž$ø=b1-tPn6=b˜– Ž$ø±€˜–€0Ôj= jj 5= g€a¨s÷€a¨˜–€Œa€˜–€a¨Œa€€,€±€çïô$Éj€7777€BUFR&bÿ« fÑ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_{À!B„!B„!B„B„!B„!B„!cÆ1ŒcÆ1ŒcÆ1Œ„!B„!B„!B¥)JP‹[\ c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUEU@UUUEUUUUQAUUUUUUUUUUEð `Œa€g€g€a¨I>jj= a¨0Ô= UsUsUs0Ôj0Ô= $Ÿa¨+Ä|j$Ÿ€,€jj±²}€…‚±²+Ä~7 s€…ú—‚7 ú—‚±²|j 50Ôa¨$Ÿ€,€áÔ€Éj€s÷€a¨jI> 5+Ä| 5= s÷€€,€s÷€Us$Ÿ$ŸUsg€a¨g€Œa€g€s÷€= a¨= 5 5±²| 57 ‚±²|= ±€˜–€s÷€I>I>g€I>0Ôj$ŸUs= g€Éj€s÷€Us˜–€0ÔUs$ŸUs€,€¤Ë€½5€Éj€Éj€Œa€I>g€€,€½5€±€Œa€g€Uss÷€s÷€j+Ä| 5±²~7 ƒ+Ä|Us77775€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUQUUU@EDQT@UAAUUUUTUUð `±€Œa€€,€= = 0Ô= s÷€= UsI>= g€s÷€g€g€I>I>+Ä|+Ä|+Ä| 5€,€Œa€Usa¨I>$Ÿ$Ÿ= Us0Ôjj 5±²}ú—€…s€Œas‚7 ú—sú—ƒ+Ä|±²| 5 5±²|j±²|+Ä| 5 5 5+Ä+Ä| 57 ú—s‚7 ‚±²}ú—ú—‚7 ú—‚7 ‚±²~7 ‚7 ‚±²+Ä|0Ôa¨g€Usj±²~±²|0Ô 5+Ä+Ä|€,€Œa€Éj€€,€€,€0ÔI>0Ô$Ÿ= UsŒa€¤Ë€€,€= 0Ô= Us 5±²+Ä~±²~±²|0Ô˜–€Œa€g€UsUsI>= = 7777a€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@,0 $’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡+c\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUDUUTUUUU@Uð `a¨€,€€,€€,€g€±€Œa€˜–€Œa€a¨0ÔŒa€¤Ë€s÷€˜–€g€€,€±€¤Ë€I>0ÔUsUss÷€s÷€˜–€g€Us$Ÿg€¤Ë€ÕŸ€0Ô+Ä|+Ä|0Ôa¨g€Usa¨j+Ä|jj±²~7 €$Ÿg€I>a¨j±²~±²|$Ÿ0Ô7 ‚±²|g€€,€½5€˜–€Us= = Us= 0Ô$Ÿ$Ÿ$Ÿ= 0ÔUsUs 5+Ä}€…‚7 ú—‚7 €…ú—€…sú—ƒ+Ä~7 ú—‚7 ƒ+Ä}ú—‚±²+Ä~±²|0Ô0Ô7 €…‚±²~±²| 5±²}ú—ƒ+Ä}ú—ú—‚7 ú—€…‚7 ú—‚7 ‚±²~±²+Ä+Ä~7 ‚±²| 50Ô0Ô= 7777a€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@@0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUTUUUTUUUTQUUUUUUUUUUUUUð `I>UsUs7 ƒ+Ä| 5a¨€,€€,€Uss÷€Usg€a¨a¨s÷€Œa€s÷€0ÔUs$Ÿ$Ÿ+Ä~±²}€…€…ú—ú—ƒ+Ä| 50Ô€,€s÷€g€a¨a¨g€g€a¨˜–€¤Ë€¤Ë€s÷€Us$Ÿ+Ä+Ä}s‚±²~±²}s€…ƒ+Ä|$Ÿa¨s÷€˜–€˜–€g€s÷€Œa€¤Ë€Éj€±€€,€Us= jj+Ä|j+Ä| 50Ô˜–€Œa€¤Ë€±€€,€€,€s÷€˜–€€,€Œa€ÕŸ€áÔ€Œa€áÔ€ô$ô$çïáÔ€a¨0Ô 5 5s÷€Éj€Éj€çï½5€½5€¤Ë€¤Ë€çïŒa€ÕŸ€ÕŸ$ø=b1-1-ÃYÃáÔ€Œa€¤Ë€a¨I>I>g€Us7777a€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ@X0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%KcŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTPQTUUUUUUUUUUUUUUUUUUUUð `˜–€½5€ÕŸ€Éj€€,€g€I>a¨a¨˜–€ÕŸ€áÔ€ô$U̽5€çïÉj€€,€€,€g€Us0Ô±²|j+Ä+Ä|j 5+Ä|+Ä|= j0Ô0Ô$Ÿ+Ä+Ä+Ä| 5±²}€…€I>áÔ€ô$¤Ë€s÷€Œa€= Éj€jçï±€áÔ€±€çï Ž¤Ë€€,€g€g€0Ôg€jg€½51-UÌÕŸ€Us˜–€˜–€½5€áÔ Ž1-n6n6I—I— Žô$Éj€€,€Éj€˜–€Us0ÔŒa€±€çïYÃs÷€I>= s÷€¤Ë€Éj€¤Ë€çïI—$ø ŽáÔ€±€±€Éj€±€˜–€s÷€€,€s÷€±€±€s÷€˜–€Usa¨g€Œa€7777a€BUFR&bÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑBUUUUUUUUUUUU]kZÖµ­ï{Þ÷½ï{Þ÷½ï{Þ÷¾sœç9Îsœç9Îsœç9Î÷½ï{Þ÷½ï{Þ÷½ï{Є!B„!B„!B‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUPUUUUTUUUUUUUUUð `Éj€ÕŸ€˜–€½5€½5€€,€€,€= jI>jjja¨˜–€±€±€g€a¨$ŸjI>¤Ë€g€= Éj€˜–€½5€Éj€¤Ë€s÷€€,€g€ 5±²~±²~7 ƒ+Ä~7 € 5UsŒa€ç€s÷€= $Ÿ= çïtPI—I—$øáÔ€Éj€€,€I>ú—€…€Œa€Œaú—‚7 ‚7 ‚7 ‚±²~±²+Ä|+Ä~±²~7 €…‚7 ‚7 ú—s€…€ 5€…ƒ+Ä|a¨±€˜–€½5€€,€0Ôa¨Œa€s÷€a¨I>= a¨= = = 0Ô= +Ä|€…‚±²|j= Y$øô$ô$g€g€Œa€Œa€˜–€€,€s÷€€,€Éj€±€Œa€¤Ë€Us77775€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€ 0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUQUUUUUTUUUTUUUQ@ð b±²|j 5+Ä| 5s÷€½5€€,€= = = Uss÷€s÷€g€a¨˜– Ž˜–€ÕŸ€g€½5€g€j±²|$ŸI>s÷€çï±€Œa€g€g€Usa¨UsÉjÃô$çïg€s÷€Us$Ÿjj 5 5+Ä+Ä|jUsŒa€€,€€,€Œa€s÷€€,€Œa€¤Ë€Uss÷€Usa¨ 5j= $Ÿ+Ä+Ä| 5+Ä}ú—‚±²|$ŸI>a¨j$Ÿ= 0Ôj$Ÿ0Ô= UsUs$Ÿj$Ÿ±²|j7 €$Ÿ7 ú—s‚7 ú—ƒ+Ä}ú—‚±²~±²+Ä+Ä~±²~±²+Ä| 5±²+Ä~7 ƒ+Ä}ú—ú—‚7 sú—€Œas‚±²~±²|= ¤Ë€7777jBUFRæbÿ« fÑ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€ 0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž…-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUTUUUUTUUUUUUUUUUð `½5€¤Ë€g€I>= a¨g€±€áÔ€ô$$øÉj€Œa€s÷€s÷€= +Ä|±²~±²+Ä|= ˜–€çïÉj€I> 5jjjI>€,€Œa€ÕŸ€Éj€Éj€áÔ€Usa¨a¨$Ÿ0Ô 5 5$ŸUs˜–€Éj€¤Ë€Œa€€,€a¨Œa€Œa€˜–€˜–€Éj€¤Ë€Œa€s÷€I>$Ÿ 57 ƒ+Ä~7 ‚±²+Ä|$Ÿ€,€ÕŸ€½5€g€= $Ÿ= 0Ôa¨€,€±€±€˜–€s÷€s÷€g€j 5±²|I>jI>˜–€ô$çïñ€½5€½5€ÕŸ€±€áÔYÃ=b1-$ø Ž Ž ŽYÕŸ€Éj€±€¤Ë€s÷€Œa€Œa€˜–€€,€áÔ ŽÉj€¤Ë€a¨a¨I>s÷€7777jBUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€40I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUTPUUUUUUUUUUUUUUUUUUUUUUUð aYÉj€áÔ€¤Ë€±€g€¤Ë€˜–€a¨= $Ÿ= I>Œa€Œa€s÷€g€€,€Œa€¤Ë€Œa€€,€s÷€= 0Ô$Ÿ$Ÿj= s÷€ú—€±²+Ä| 5s÷€˜–€€,€a¨s÷€a¨a¨a¨˜–ÃYs÷€= €,Ã$øô$¤Ë€UsI>I>$Ÿa¨ÕŸYÕŸYáÔ€Éj€s÷€Œa€˜–€˜–€±€Œa€Œa€a¨g€Usg€I>g€a¨g€s÷€a¨Usg€Œa€¤Ë€½5€€,€g€I>a¨= = = a¨g€= I>€,€½5€Éj€±€s÷€˜–€0Ô0Ô0ÔI>a¨½5$øI—ÕŸ€±€˜–€Éj€½5€áÔ=bn61-½5€±€½5€Œa€Œa€g€7777jBUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€L0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUT@UUUUUQUUUUUPð `Œa€a¨g€a¨a¨ÕŸ€ô$ÕŸ€a¨€,€€,€I>I>0Ôa¨¤Ë€˜–€s÷€g€g€a¨Œa€Œa€g€¤Ë€˜–€s÷€s÷€˜–€¤Ë€s÷€s÷€UsUs±€½5€±€±€€,€½5 ޱ€ÕŸ€±€¤Ë€½5€±€Œa€Éj€Œa€= 0Ôj$ŸI>a¨g€¤Ë€¤Ë€€,€s÷€g€Œa€g€g€UsI>Us$Ÿ$Ÿ= +Ä|0Ô±²}ú—ƒ+Ä|= Œa€½5€Éj€áÔ€áÔ€áÔ€ÕŸ€ÕŸ€±€ÕŸ ŽÕŸ€±€˜–€½5€˜–€¤Ë€Œa€a¨0Ô 5+Ä|s÷€Éj€ÕŸ€Us€,€g€¤Ë€¤Ë€¤Ë€Uss÷€½5€ô$Éj€áÔ€½5€€,€€,€0Ô$Ÿ 5±²}ú—ƒ+Ä|UsÕŸ€½5€7777jBUFRæbÿ« fÑ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ€`0’I$’I$’I)$’I$’I$’m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ•-Ž|#)Ò¶¸!¦:¶5Ï„e:V×D2˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUT@UUUUUUUUUUUUUUUUUUUUUð `±€˜–€g€g€¤Ë$øY1- ŽçïçïÉj€UsI>a¨a¨I>$Ÿg€¤ËYô$ô$ô$¤Ë€˜–€½5€¤Ë€¤Ë€½5€˜–€a¨= $Ÿ 5+Ä|+Ä~±²~±²~7 € 5ÉjÃ1-áÔ€˜–€s÷€Œa€€,€g€€,€˜–€áÔ ŽÕŸ€½5€¤Ë€Éj€Œa€I>$Ÿj 5$ŸUs½5€½5€¤Ë€0Ô0Ô= j0Ô€,€ô$=b1-I—YYçïÕŸYÕŸ€s÷€g€¤Ë€¤Ë€±€½5€€,€I>= Us= I>g€s÷€ô$1-$ø$øYô$çïô$˜–€s÷€a¨I>= g€áÔ€çïô$ô$çïÕŸ€±€¤Ë€I>Us±€½5€Œa€a¨7777jBUFR&bÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ‚UUUUUUUUUUUUUUUUUUU^sï{Þ÷½ï{Þ÷½ï{Þ÷¾÷½ï{Þ÷½ï{Þ÷½ï{ÀB„!B„!B„"„!B„!B„!CÆ0‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUUUT@UUUUUUUUUUUUUUUUUUUUUUTð `a¨Usj+Ä+Ä|+Ä~±²|0Ô½5€Éj€Éj€g€Usa¨I>I>Œa€Œa€a¨s÷€a¨= jj7 € 57 s‚7 ú—€jI>˜–€a¨0Ô 5j= Us€,€½5€Œa€Œa€€,€s÷€g€a¨a¨0ÔUs0ÔI>±Y Žô$Éj€±€±€Œa€s÷€g€±€çïI—ÃÃÃ Ž ŽçïáÔ€ÕŸ€çï±€˜–€˜–€±€áÔ€ô$ÕŸ€çïô$çïçïÉj€ô$ Ž1-$øÃÃáÔ€çïô$Éj€ô$½5€¤Ë€±€˜–€˜–€¤Ë€¤Ë€¤Ë€±€s÷€s÷€˜–€¤Ë€çï Žô$áÔ€ô$çïô$˜–€g€g€Us$Ÿ 57 €77775€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ0$’I$’I$’JI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RÚçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUU@UUUUAUUUUTUUUUEUUð aú—‚7 €$Ÿ±²}€…‚±²+Ä}ú—ú—‚±²|0Ô= = I>Us0Ôjj$Ÿjçï€,€çïô$$ø=bô$ô$Y¤Ë€Éj€ô$Y ޽5€s÷€˜–€g€I>= 5±²}€…‚7 €…€jI>a¨a¨I>I>Usa¨s÷€Œa€ÕŸ€Éj€˜–€¤Ë€Œa€˜–€€,€0Ôj 5+Ä+Ä|= ¤Ë€ô$ ޱ€s÷€g€0Ô0Ôa¨¤Ë€áÔY½5€€,€½5€Œa€j+Ä~±²}s‚±²~7 € 5s÷€€,€áÔ€ÕŸ€ç€˜–€çï¤Ë€˜–€€,€¤Ë€$Ÿ$Ÿ0Ô$Ÿ+Ä| 5 57 ‚±²|jjUs½5€ô$çï±€˜–€¤Ë€˜–€7777€BUFRöbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ$@"""""""""""#333333333334DDDDDDffffffwwwwwwwwwwpŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUQTUUUUUUUUUUð `ô$YI—UÌbà ŽY1-$øçï=bYçïô$Ãô$ÕŸ€ÕŸ€˜–€½5€½5€Éj€±€¤Ë ŽÃYçïYô$çïçïÕŸ€±€¤Ë€s÷€I>0Ôj 5 5a¨= 0ÔI>a¨g€a¨g€Usg€= Usa¨s÷€€,€±Ya¨j$ŸI>€,€½5€Éj€½5€±€½5€ÕŸ€çïçïYô$€,€ 5+Ä|$Ÿ 5±²~±²|0Ô= Us¤Ë€½5€áÔ€±€½5€½51-$øn6bb1-I—UÌtPI—UÌI—I—Ãô$Éj€±€±€½5€çïÃ$øYçïÕŸ€Éj€Éj€Éj€Éj€çïô$ÕŸ€Éj€7777 BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀ@0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×Â2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUPUUUU@ð `½5€½5€±€˜–€s÷€a¨g€€,€€,€˜–€˜–€Éj=bô$Éj€áÔ€áÔ€çï½5€ÕŸ€Éj€±€˜–€a¨a¨g€˜–€˜–€½5€¤Ë€¤Ë€±€¤Ë€¤Ë€˜–€Œa€€,€Œa€˜–€Œa€±€˜–€±€Éj€½5€Éj€ÕŸ€ÕŸ€Éj€ÕŸ€ÕŸ€çïYÕŸ€Éj€Œa€˜–€áÔ€Éj€çïI—=b$øYçïçïYUÌ½Ž‚²²ÉÃ1- Ž ŽáÔ€Éj€¤Ë€s÷€€,€s÷€€,€˜–€±€çïÉj€ÕŸ€Éj€½5€áÔ€ÕŸ€áÔ€áÔ€ÕŸ€áÔ€±€±€¤Ë€Œa€0Ô 5 5±²+Ä|g€g€Œa€a¨s÷€g€€,€s÷€±€Éj€Œa€g€Us0Ô$Ÿ+Ä}ú—‚7 ‚±²~7 ‚±²}ú—€7777$BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÀX0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUð ` 5˜–€áÔ€ÕŸ€½5€Œa€€,€jg€€,Y1-ô$ÕŸ€¤Ë€áÔ€çï½5€Éj€ÕŸ€Œa€€,€±€¤Ë€±€çï=b$øçïçïY$ø1-Yô$½5€áÔ€¤Ë€áÔ€˜–€±€½5€Éj€¤Ë€¤Ë€±€jjg€˜–€½5€˜–€Œa€a¨¤Ë€¤Ë€˜–€±€çïçï±€½5€áÔ€½5€˜–€½5€€,€0Ô$Ÿ±²}ú—€$Ÿ 5$Ÿ$Ÿ0Ôg€0ÔI>€,€Éj€Éj€¤Ë€±€±€g€Usa¨= a¨g€g€s÷€s÷€½5Ã$ø=bÃáÔ€ô$áÔ€çïÃb€…Yô$YçïáÔ€ô$±€Éj€˜–€˜–€Œa€s÷€¤Ë€Éj€ÕŸ€½5€˜–€s÷€˜–€s÷€7777$BUFR&bÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑÂUUUUUUUUUUU]kZÖµ­k{Þ÷½ï{Þ÷½ï{Þ÷½ïœç9Îsœç9Îsœç9Îs½ï{Þ÷½ï{Þ÷½ï{Þô!B„!„!cÆ0ŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUTUUUUUQUUUUTUUUUUUU@ð `Us½5 Žçïçï ŽÃ ŽYçïs÷€+Ä+Ä|j€,€Éj€áÔÃÃ1-à ŽÕŸ€ÕŸ€ô$ Ž ŽYÕŸ€Éj€s÷€s÷€0Ô±²}ú—s€Œa‚7 €0Ôs÷€¤Ë€Œa€˜–€¤Ë€¤Ë€Éj ŽÃçïô$çïÕŸ€±€±€¤Ë€€,€€,€I>$Ÿ+Ä| 5$ŸŒa€áÔ€áÔ€±€˜–€¤Ë€±€˜–€±€Éj€Éj€±€€,€€,€Œa€= I>jú—‚±²~7 €…€…€…€j$ŸI>Œa€˜–€= j= €,€˜–€¤Ë€¤Ë€Éj€±€½5€½5€ô$ÃYÉj€¤Ë€˜–€˜–€˜–€ÕŸY=b±€Us0Ôj+Ä}ú—ú—ú—€…‚7 ‚±²|77775€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠc¡*[çÆS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPU@TUUUUUUUUUUUUUUUUUUUUUUð aú—€$Ÿs÷€˜–€s÷€0Ô$Ÿj= s÷€ô$=b=b Ž1-YÉj€˜–€±€s÷€Us 5±²+Ä| 5$ŸI>€,€a¨+Ä}€…‚7 ‚7 ‚±²|$Ÿj$Ÿ0Ô$Ÿ±²| 5 5I>UsI>a¨¤Ë€½5€çï1-n6˜ï¥$$ø½5€±€çï ŽÕŸ€áÔ€½5€ÕŸ€áÔ€áÔ Žô$YYçï¤Ë€= g€€,€Œa€€,€g€s÷€€,€Œa€±€ÕŸ€Éj€±€±€ÕŸ€Éj€Éj€½5€¤Ë€˜–€±€˜–€€,€€,€Œa€¤Ë€¤Ë€ÕŸ€½5€½5€áÔ€ô$ÕŸ€Éj€Éj€ô$çï½5€±€Éj€Éj€˜–€Œa€s÷€±€±€g€$Ÿ0Ôs÷€s÷€= $Ÿ0Ô0ÔI>7777j€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ$0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUU@UUUUTUUUUUð `Œa€˜–€Œa€˜–€a¨Usg€UsI>0ÔI>= 5j$Ÿ0ÔI>s÷€˜–€˜–€s÷€s÷€€,€s÷€Œa€s÷€˜–€g€= Us= I>$Ÿj$Ÿ0Ô0Ô= Usg€s÷€s÷€s÷€€,€Œa€Œa€±€±€ÕŸ€ô$áÔ€ÕŸ€Éj€ÕŸ€çï1-1-b$øÃô$çïÃYY ŽYYYÉj€ÕŸ€ÕŸ€Éj€Éj€±€$ŸI>I>0Ô0Ô+Ä+Ä~7 ú—ú—ƒ+Ä|$Ÿg€Œa€s÷€˜–€Œa€Œa€Œa€€,€€,€€,€g€€,€Œa€s÷€I>I>$Ÿj7 €jjI>I>¤Ë€áÔ€Éj€½5€˜–€I>= a¨Œa€½5€ÕŸ€½5€Éj€ÕŸ€ÕŸ€Éj€7777j€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñ80I$’I$’I$’’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶í¶Û`‹pC!Lt%Kc\øFS¥mpC)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUQUUð `½5€¤Ë€±€˜–€Œa€€,€Œa€˜–€¤Ë€½5€±€½5€±€Œa€±€˜–€±€±€½5€±€½5€Œa€˜–€s÷€= 0Ô$Ÿj+Ä| 5+Ä| 50Ô0ÔI> 5±²~±²+Ä|= Us¤Ë€Éj€¤Ë€±€½5€˜–€¤Ë€˜–€s÷€¤Ë€Œa€a¨˜–€½5 ŽI— ŽYçïáÔ€ô$áÔ€çïà ŽYÕŸ€½5€±€±€±€€,€Œa€I>$Ÿ$Ÿ$Ÿs÷€€,€¤Ë€±€±€áÔ€Éj€±€áÔ€çïÉj Žô$çïáÔ€çïÉjYô$Éj€˜–€s÷€¤Ë€g€¤Ë€½5€˜–€±€€,€€,€˜–€€,€±€¤Ë€áÔ€ÕŸ€¤Ë€Œa€I>+Ä|$Ÿja¨g€€,€½5€çï$ø7777j€BUFRæbÿ« fÑ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑP0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÂ!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUTPUUUUAUUUUUUUUUUA@UUPTð aÃ=bà ŽYÕŸ€ô$ÕŸYÃ=bô$±€I>j+Ä|$Ÿjú—‚7 ‚±²| 5= €,€s÷€g€a¨s÷€UsUss÷€UsÉj€çï Ž¤Ë€€,€Us= j$Ÿ+Ä+Ä| 5$ŸjUs€,€UsI>0Ô= 0Ôa¨±€Œa€s÷€g€s÷€€,€a¨s÷€¤Ë€Œa€g€˜–€a¨I>g€€,€¤Ë€˜–€Œa€g€a¨Éj€ÕŸ€ÕŸ€Éj€s÷€g€g€I>$Ÿ±²+Ä|j$Ÿ+Ä}€…‚±²}€…€Œa€áÔ€áÔ€€,€0Ô= j$Ÿ 5 5 5±²+Ä}ú—ú—ú—‚7 €…ú—€Œa‚±²+Ä|$ŸUs½5€Éj€Us±²~±²+Ä| 5 57777j€BUFRæbÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ñd0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUQUUUUUUUUUUUUTUUUUP@UUUUð `= g€I>= I>= jj 5±²|±²|I>= 0Ôj 50Ô$Ÿ= 0Ô$Ÿ= UsáÔYô$±€a¨$Ÿ±²}ú—‚7 ‚±²|j$Ÿg€ 5= g€g€$Ÿ= Us€,€g€s÷€¤Ë€Œa€Œa€s÷€ 5$Ÿ7 ú—€O€Œas‚7 €…‚7 ‚±²~±²+Ä|jj= g€€,€g€€,€˜–€¤ËYYÕŸ€½5€€,€$Ÿ+Ä|Usg€0Ôg€Œa€¤Ë€Éj€ÕŸ€˜–€ô$ô$ÕŸ€±€áÔ€0Ô 5 5+Ä~±²|€…€Œassƒ+Ä| 50ÔjUsa¨a¨Œa€˜–€˜–YÕŸ€áÔ€½5€s÷€½5€±€Éj€s÷€7777j€BUFR6bÿ« fÑ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!âLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÑUUUUUUUUUUUUUUUUUUUUUUUUUTD»»»»»»»»»»»_{Þ÷½ï{Þ÷½ï{Þ÷€B„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œc!B„!@Š!¦:¥±®|#)Ò¶¸D2ÇBT¶5Ï„e:V×D2ÇBT¶5ÐŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@#`\I>$ø?x = †G$ø28ÆB@ 3á@€,€ô$“.“à ß4Ö )2àI>zÏ…·tôÖÄ´ ÓX™p/M`LK@ÃP1-ÄÄ´ ÓXw@@@zY·tŸ¼|(~ðw@3á@zçïèHd¡  0ÔLK@€,€ž±n6zÄ|(™p#`3á@OX€a¨n6õˆ™p,@ !‘À0Ôa¨=bd ÓX #`j$Ÿ0Ô0ÔzÄ¸Ø &% F0À˜–Ó.é¬ L¸™p)2à@@s÷€çï1†d L¸™p/M`F0À½5† Äé¬ 5„€I>˜–€ô$zk“.é¬ ÓX™p,@ LK@€,€·n6zÄ28 q° 5'¬@[€7777IBUFR¶bÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@&% ]I—1†¸Ø øPÐ)2àF0Às÷1-²c È ëO€ 5·ÏÞõˆ~ðýà@@€,Y“.zÄ28dp&% LK@˜–n61†d28€ð w@ž±Ûº·t¸ØÐ-ÆÀa¨¤Ë1-“.&\ øPýà@@X€@¤Ë1-1†Ÿ¼È q°ýà!‘ÀC#€·Ÿ >ÈÐ,@ ReÀ˜–1-“.Ä´?x q°&% 9ûÀg€· ŽÃPIðÝÐð -ÆÀs÷€çï“.Ÿ¼?x øPýàF0Àg€çïŸ c L¸™p,@ LK@Œab>¸Ø -ÆÀX€@¤Ë1-bZc ‰h ,@ LK@ŒaÃ1†d ™p-ÆÀF0À¤Ë€77770ÀBUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@(0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛnÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUPTUUUQUUUUUUUUUUUUð `áÔ€ÕŸ€ÕŸ€Éj€½5€±€½5€˜–€€,€±€¤Ë€€,€¤Ë€±€˜–€€,€¤Ë€¤Ë€Éj€½5€Éj€ô$YçïÕŸ€çïÕŸ€áÔ€Œa€Œa€Us= I>0Ô€,€˜–€ô$ÕŸ€Œa€€,€˜–€¤Ë€€,€s÷€a¨g€= $Ÿ0Ô$Ÿ+Ä~7 € 5+Ä~±²~7 ‚7 ú—ƒ+Ä|j= I>Usa¨a¨g€Œa€Éj€¤Ë€Œa€= = $Ÿ 5j+Ä|j= g€˜–YáÔ€¤Ë€½5€Œa€¤Ë€±€ç€±€€,€g€I>s÷€a¨0ÔI>0Ôj$ŸŒa€¤Ë€áÔ1-ô$Éj€˜–€˜–€¤Ë€½5Ã1-$øI—I—UÌI—1-Y±€g€Œa€I>7777½5BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@@0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTUUUUUUUUUUPTUUPUUU@Uð `s÷€ÕŸ€ÕŸ€áÔYçïáÔ€ô$ÕŸ€½5€Éj€áÔ ŽY±€¤Ë€˜–€¤Ë€a¨jj±²~7 €0ÔŒa€çï½5€½5€Éj€Œa€çïÕŸ ŽYYYÃ=b1-$øYáÔ€ô$ô$çïô$½5€Éj€áÔ=bUÌ$ø Žô$½5€±€±€˜–€˜–€s÷€0Ô0ÔI>I>g€= 0Ô7 €…ú—ƒ+Ä|= s÷€s÷€$Ÿ+Ä+Ä+Ä| 5ja¨áÔ€¤Ë€˜–€€,€= a¨Us= $Ÿ+Ä+Ä}ú—ƒ+Ä+Ä}ú—€…‚±²|+Ä| 5 5$Ÿg€Us= 0Ô€,€Œa€¤Ë€I> 5±²~7 ú—‚±²| 5= s÷€±€s÷€UsŒa€7777½5BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@T0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTUUUUUUUTPUUUUUUUUU@UUUð `UsŒa€¤Ë€¤Ë€˜–€˜–€0Ôs÷€Us0Ô 5€…‚7 ‚7 ƒ+Ä~7 ‚±²| 5g€ô$ Ža¨Œa€€,€0Ô$Ÿ€,€ŒaUÌYçï½5€áÔ€€,€a¨$Ÿ+Ä}ú—ú—ú—‚±²|0Ôs÷€€,€s÷€a¨s÷€I>s÷€a¨s÷€±€a¨Us0ÔI>0Ô 5+Ä|UsI>±²}€…ú—ƒ+Ä|$ŸUsUs0ÔUsçï¤Ë€€,€½5€Œa€˜–€±€Œa€Œa€çï¤Ë€¤Ë€€,€˜–YYÃçïáÔ€Éj€Éj€Éj€½5€˜–€g€˜–€˜–€¤Ë€€,€€,€s÷€g€Œa€0Ô7 ƒ+Ä}ú—ƒ+Ä~±²+Ä}ú—€…€jI> 5= çïs÷€€,€UsI>0Ô= j0Ô7777½5BUFR&bÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒBUU\ç:Öµ­kZÖµ­kZÖµ­k[Þ÷½ï{Þ÷½ï{Þ÷½óœç9Îsœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{ß{Þ÷½ï{Þ÷½ï{Þ÷½à‹[\ÈS RØ×>”é[\!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUUTUUEUUUUUUUUU@UUUUUAð `0Ô= j7 ‚±²}ú—‚±²+Ä|= €,€g€˜–€¤Ë€ÕŸ€Œa€€,€¤Ë€Œa€s÷€= $Ÿ±²+Ä~7 ‚7 €Œa€…‚7 ú—€Usg€UsI>j 5$Ÿ+Ä|0Ô= ±²~7 ƒ+Ä| 5ú—ƒ+Ä|+Ä+Ä~7 ‚±²| 5Œa€½5€çïÃÕŸ€Éj€±€g€˜–€€,€±€¤Ë€UsÕŸYÕŸ€ç€g€ 5ú—ƒ+Ä| 5g€Œa€¤Ë€Œa€Œa€±€ÕŸYÃY1- ŽÕŸ€áÔ€áÔ€Œa€€,ú—‚±²~±²}ú—€ja¨çïI—n6$ø¤Ë€ÕŸ€I>Usg€€,€€,€€,€ŒaU̘–€s÷€½5€±€Us0Ôj 5+Ä~±²| 577775BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€0I$’I$’I$¤’I$’I$’I¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶Ûm¶ÐŠ„©lkŸÊt­® …1Е-sáN•µÀ …1Е-sáN–¸2ÇBX×>”é[\ c¡*[çÂ2+k€C!Lt©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUEUUU@UUUTUUUUPUUUUð `= €,€a¨= Us$ŸUsa¨Œa€€,€UsI>j0Ô$Ÿ$Ÿ±²~7 s€Œas€…‚±²|$Ÿ$Ÿ0Ô= 0ÔI>Us= UsŒa€˜–€g€Œa€I>+Ä|+Ä}ú—‚7 ú—€…ú—ú—ƒ+Ä|0Ô0ÔUsa¨0ÔUsáÔ=bbçï$øI>±²+Ä~±²~7 €I>ÕŸÃI—Y¤Ë€I>€,€¤Ë€½5€½5€Œa€a¨j0Ô 5j€…‚7 ‚7 ú—€0Ô€,€áÔ€çï1-ÕŸ€¤Ë€s÷€I>½5€˜–€±ÃÕŸ€ô$ Ž¤Ë€= +Ä+Ä~7 ƒ+Ä~7 €0ÔUs0Ô= Us$Ÿ= Us€,€¤Ë€€,€˜–€˜–€Œa€Œa€g€7777>BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛnI$’I$’I$–Ûm¶ÐŠˆe1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B™ SÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUPQUUPQUUPUUUU@Uð `Us±€¤Ë€¤Ë€Œa€Œa=bUÌçïçïÕŸ€Éj€áÔ€±€s÷€Œa€Éj€½5€€,€Œa€s÷€g€a¨I>a¨g€j0ÔUs€,$øÃb1-Ãô$ÕŸ€±€Œa€a¨s÷€Usa¨0Ô0Ô= 5±²}ss‚±²+Ä|$Ÿ 5+Ä|$Ÿ 5 5j0ÔI>0Ô= 5 5+Ä~±²}€…ú—€…ú—‚7 € 5j$Ÿ 5$Ÿ+Ä|a¨= = Us= a¨I>g€Us= 5±²}ú—ú—ú—ƒ+Ä+Ä|= s÷€€,€Œa€a¨a¨UsI>= g€Œa€UsI>0Ô$Ÿj+Ä}€…ú—‚±²|UsÃÕŸ€˜–€g€Us7777>BUFR¶bÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€00 $’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÛmÛ`ŠçÂ2+k€" c¡.|#)Ò¶¸!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ ]YÏÞÝÐŒ0!‘À9ûÀ$Ÿ˜–ÃbZ$øÆ F0À½5ÏÞ28 ë˨w@B@3á@g€’|$ø† ¸Ø 'ÀB@„€0ÔI>a¨† ™pC#€Œa€çïzkôÖd“à 'À#`dµAÃzÄ%ªÄ´ ÓXð ReÀ­óAUÌbZ28È~ð&% iI äáÁÜJIoš ‰hÖ &% OX€ªæh‚zÄW0 L¸Ö )2àUsž±Ãc ÆŒ0*¹€ReÀ­óAI—ÏÞôÖ?x ÓXð C#€zÃ1†28?x~ðw@,@ dµ@Ï…·tŸ¼?xŒ0!‘À/M`F0À= Yô$a¨ @¡ dµ@½5·t²Ÿ¼ @¡ B@„€j7777BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€H0$’I$’I$’II$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚáÈS RØ×>”é[\ c¡*[çÂ2+k€" c¡*[çÂ2+k€C!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUPQUUUUUUUQTð `= Us¤Ë€¤Ë€Éj Ž¤Ë€a¨Usa¨0Ô= a¨€,€s÷€Usg€0Ôa¨I>±²}ú—sú—€…ú—€= €,€½5€˜–€s÷€Uss÷€a¨g€¤Ë€±€¤Ë€a¨$Ÿ 5±²~7 ‚7 ‚±²}€…€…ú—‚7 €jI>0Ô= ±²|jjj0ÔŒa€ÕŸ€±€g€0Ôú—‚7 ƒ+Ä|0Ô= 0Ô= s÷€çïUÌtPn61-Ãç€¤ËÃÃô$ÕŸ€Œa€€,€a¨j$Ÿ+Ä|€…‚7 ú—‚7 ƒ+Ä|= 0Ô$Ÿ7 €$Ÿ+Ä+Ä|0Ô$Ÿ$Ÿ$Ÿj 5+Ä~±²}ú—ú—€…ú—ú—€…ú—‚±²+Ä|j+Ä|$Ÿ$Ÿj7777>BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€\0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%KkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðU@UUUUUUUUUUPUUT@UUUUPUUUUð `j$Ÿ0Ôj7 ƒ+Ä~±²+Ä|= ±²~±²|€,€Œa€UsUsI>= 0ÔUs˜–€g€a¨¤Ë€ô$$ø1-Y1-ñ€Œa€€,€±€ÕŸ€s÷€a¨¤Ë1- ŽáÔ€g€€,€±€g€Us€,€Œa€s÷€s÷€¤Ë€g€a¨a¨I>ú—‚±²~±²~7 ‚7 ú—ƒ+Ä| 5 5$Ÿs÷€g€Éj€I>Us= j+Ä|jú—ú—‚±²}ú—ú—€0Ôg€˜–€= Us0ÔUs= a¨s÷€Œa€g€¤Ë€½5€€,€¤Ë€s÷€€,€I>7 ‚±²+Ä|I>s÷€ô$I—±€a¨= = 0ÔjI>s÷€˜–UÌ=bUÌ=b=b=b7777>BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀ0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆe1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTUUUUUUUUUUUEUUUUUUUUUUUUUUUUPUýàa1- ŽÕŸƒ|ú>ƒ|0Ôg€՟€s÷€s÷€UsI>= = s÷€j[€ÕŸ1-ÃYÉj€Éj€ô$$ø ŽÉj€ÕŸ€ÛºÛºçïÕŸ€¤Ë€Œa€s÷€g€[€0Ô$ŸŒa€Œa€Éj€½5€ÛºÛº˜–€s÷€I>= $Ÿj$Ÿ¥}|0Ô[€$Ÿ0Ôj 5= jjj0Ô€,€¤Ë€½5€½5€¤Ë€ÕŸÃ ޽5€g€s÷€s÷€¤Ë€çïUÌ1- ŽÛº±€[€g€Us€,€ô$Y±€0Ô€,€Œa€Ûº¤ËI—1-YY½5€Œa€Éj€ÕŸ€Ûº˜–€I>0Ô= [€0Ôg€¤Ë€Œa€€,€Éj€UsUs 5 5¥}~¥}|jI>g€ۺ7777>BUFRöbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀ@""""""""""""333333333333DDDDDDDDDDDDUUUUUUWwwpŠ•-sáN•µÀÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶B2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUUUUUUTUU@UU@UEUUUUQUð `±€Œa€a¨= $Ÿ= 0Ô= a¨Us0Ô0Ô 5±²}€…€…ú—€…s‚7 €= I>g€0Ô$Ÿ0Ô$Ÿ= = a¨Œa€çïáÔ€…€…€…tPtP€ô$ÕŸ€¤Ë€¤Ë€±€½5€½5€¤Ë€¤Ë€UsUs0Ô= $Ÿ= s÷€g€a¨€,€g€I>+Ä~7 ‚±²|$Ÿ$Ÿ0Ôa¨s÷€€,€¤Ë€a¨˜–€$Ÿ 5ú—‚7 ú—ú—ƒ+Ä|$Ÿ$Ÿ$ŸI>= ÕŸ€Éj€g€UsI>±²}€…‚7 ‚7 ‚±²~7 € 5j 5$Ÿ+Ä|$Ÿ 5$ŸUss÷€Œa€g€0Ô= $Ÿ$Ÿ= a¨˜– Ž Ž ŽŒa€Us= +Ä|$Ÿ= I>= = 7777€ŒBUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀ40 $’I$’I$’’I$’I$’I&Ûm¶Ûm¶ÛmÉ$’I$’I$’Ûm¶Ûm¶Ûm»m¶Û`‹k€" c¡*c\øFS¥mpC!Lt%LkŸÊt­®ˆd)Ž„©sáN•µÀ …1Е1®|#)Ò¶¸!¦:¦5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTQUUPUUUUUUUUUUUUUQDUUUUUUUð `a¨0Ô±²}ú—ú—s‚7 ‚±²|$Ÿj 5+Ä|j 5$Ÿ0Ô0Ô$Ÿ0Ô$Ÿj 5j±²+Ä~±²+Ä| 50ÔUsg€= g€a¨±€±€Éj€Éj€±€Éj€ÕŸ€ô$ Ž$øYYÃ1-Ys÷€$Ÿ¤Ë€Œa€Usa¨áÔYÕŸ€½5€˜–€¤Ë Ž˜–€I>€,€UsUs= 5$Ÿj= ±²|0Ô= g€g€a¨ 5j0Ô$ŸUs€,€€,€j+Ä|+Ä+Ä+Ä| 5= ±²| 5±²|ja¨¤Ë€˜–€g€g€a¨Éj€áÔ Žb1- Ž¤Ë€¤Ë€˜–€UsUs0Ô= ¤Ë€áÔ Ž$ø=b=báÔ€±€7777>BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀL0$’I$’I$’JI$’I$’I$›m¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶Ûm¶àŠÆ¹ðŒ§JÚà†B˜èJ˜×>”é[\ÈS SçÂ2+k€" c¡*c\øFS¥mpC!Lt%LkŸÊt­®ˆd)Ž„©sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUDUUUUUUUUUUQUUUTUQUUUð `Œa€a¨Usg€½5b=btP€ÕŸ€Éj€½5€a¨ 5+Ä|0Ô+Ä~±²|ÕŸ€ô$1-ô$½5€Éj€Œa€s÷€ÕŸ$ø¥$n6ÃÃ$ø˜–€€,€Us= jj 5 5±€Éj€¤Ë€Éj€Œa€Usjj0ÔUss÷€˜–€¤Ë€áÔ€ô$áÔbçïŒa€Éj€0Ô±²|ja¨˜–€½5€½5€Œa€˜–€Œa€˜–€½5€ÉjYY¤Ë€a¨+Ä}ú—ú—€Œa€Œaú—ƒ+Ä}ú—‚7 ‚±²~7 ú—ú—€…‚7 ‚±²~±²+Ä|= 0Ô0Ôjj 5+Ä}ú—‚7 ‚7 ‚±²~±²+Ä|j$Ÿj+Ä|= I>0Ô= = s÷€Œa€Éj€½5=b$øÃçï7777>BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀd0’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠ …1Е1®|e:V×D2ÇBTƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUEUUUUUUUUUUUUUð `I>g€I>a¨Œa1-I—=bçï½51-ÃI—$øtPÕøtP=bYg€Usg€UsI>= a¨s÷€˜–YY±€½5€I>0Ô= 50Ô$ŸI>UsUsa¨0ÔUs½5€½5€˜–€s÷€˜–€áÔY1-ÕŸ€çïŒa€I>I>j0ÔI>Œa€áÔ€Éj$ø=bô$¤Ë€¤Ë€€,€a¨0Ôj+Ä|UsY½5€½5€½5€a¨g€s÷€€,€Œa€s÷€±€ÕŸUÌ$øYŒa€Éj1-=b ŽYÉj€Éj€çïáÔ€áÔ€¤Ë€áÔ€½5€˜–€¤Ë€Œa€˜–€˜–€çï=bâ-‚%Q²½Ž½Ž½ŽŒºbY$ø=b=b˜ï½ŽYUs7777>BUFRöbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÂUUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½÷½ï{Þ÷½ï{Þ÷½ï{ÞB„!B„!B„B„!B„!B„! cÆ1ŒcÆ1ŒcÆ0ŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡*[çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð ]bŸ ?x L¸³ðLK@äáÁŒºƒ  eÔHýàI>^šÀ¤Ë€’|²Ä´~ðÐ 9ûÀI>’|a¨$øIð øP)2àX€AYzkV~¬ü –¨¦° 'ÀO€ 5a¨a¨† ¡ B@„€I>I>1†d L¸ 2Z „€s÷€ÃPÏÞIð€ @= ’|Ÿ Ÿ¼|( øPB@O€I>Ï…ôÖ>€ 5\À*¹€s÷€za¨a¨Ið“à @O€a¨1-ÏÞÄ´?xO€„€I>zŸ >È:= s÷ ŽÄ28Ÿ¼Æ5gà’|$øÏÞ‡Rdp –¨™p $Ÿ0ÔªæUÌ>È~ðB@3á@= 7777€ŒBUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò0I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶Û’I$’I$’Im¶Ûm¶ÐŠ …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RÜøFS¥mpd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@UUUUPTPUUUUUUUUUUEð `±²~7 ƒ+Ä|Us¤Ë€g€a¨g€a¨= I>= I>I>Us= g€Us$Ÿ$Ÿ+Ä~±²~7 ‚7 ‚7 ‚7 ƒ+Ä|j+Ä+Ä~7 ‚±²~7 ú—‚±²~±²~7 ‚7 ‚7 € 5j 5$Ÿ±²|+Ä+Ä~±²~7 ‚7 ú—s€…€…ú—€…‚7 ‚±²~7 €j 5j+Ä|I>7 €I>ô$$ø=b ޽5€$Ÿ$Ÿ7 ƒ+Ä~7 ‚7 ‚±²| 5a¨a¨Œa€a¨ 5= g€a¨s÷€ÕŸ Ž$ø=bYŒa€Usa¨s÷€€,€g€0ÔUs0Ôj$Ÿ+Ä}ú—‚±²~±²~7 €= ½5€áÔ€Œa€a¨= j$Ÿ+Ä| 5$Ÿ7777B@BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò(0I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶Û’I$’I$’I%¶Ûm¶Ûm¶ÛvÛ`‹Êt­® …1Е-Ž|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡*[çÂ2+k€C!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `j 5 5I>g€UsI>$ŸI>˜–€áÔ ŽY½5€I>g€0Ôj$Ÿ$Ÿ$Ÿ$Ÿa¨€,€Œa€Éj€¤Ë€Éj=b=bI—tP˜ï±YUÌà Žô$±€Œa€Œa€Us¤Ë€±€g€UsI>= ¤Ë€€,€s÷€Œa€a¨a¨€,€±€áÔ€s÷€I>$Ÿ$Ÿ0ÔI>Uss÷€€,€UsUsŒa€Éj€ô$g€áÔ=bYáÔ€±€±€¤Ë€¤Ë€€,‚±²| 5+Ä+Ä| 5 5 5$Ÿ0Ô= s÷€a¨s÷€0ÔUsj$Ÿa¨ÕŸ1-ô$½5€Œa€Œa€˜–€ÕŸ€Œa€±Ø–€s÷€Éj$ø1-n6n6€…$øô$Y Žn67777B@BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@0I$’I$’I$”’I$’I$’I6Ûm¶Ûm¶ÛnI$’I$’I$–Ûm¶Ûm¶ÐŠt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUEUUUUUUUUUUUUUUUUUUUUð a˜ïîb½Ž€Éj€Œa€˜–€s÷€s÷€˜–€s÷€€,€çïô$±Y‚ çÉØïUÌ=b ŽçïYtP‚ ç¥$€áÔ€Éj€˜–€= g€˜–€Éj€Œa€Œa€s÷€0Ô±€I>$Ÿs÷€g‚7 €˜–€çïYÉj€½5€Usg€$Ÿ= 0Ôa¨çïÉj€¤Ë€çï1-1-Éj1-I—Éj€0Ôj 5I>½5€ô$ÕŸ€áÔYÃY½5€¤Ë€ÕŸ€¤Ë€±€ÕŸ€çï1-1-UÌ ŽÃÕŸ€ô$áÔ€Éj€ô$ô$Éj€ç€±€s÷€s÷€¤Ë€ÕŸ€˜–€¤Ë€Éj$øYçïŒa€g€g€$Ÿ 5+Ä|+Ä| 5$ŸUsI>= = = Usa¨Œa€˜–€áÔ€7777B@BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒT0$’I$’I$’JI$’I$’I$Ûm¶Ûm¶Ûm¹$’I$’I$’[m¶Ûm¶Ûm·m¶Û`‹JÚàÈS RØ×>”é[\ c¡*[øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUU@UUUUUUUUUUQEð `½5YÕŸ€ô$s÷€g€€,€Éj€Éj€˜–€çïÕŸ€¤Ë€I>a¨0ÔI>UsI>0Ô= jg€s÷€±€ô$ô$çï½5€˜–€˜–€ÕŸ€áÔY½5€¤Ë€¤Ë€Us0Ô= Us€,€€,€€,€Œa€Œa€s÷€I>$ŸUs0Ô= I>Œa€ÕŸ€¤Ë€Œa€¤Ë€¤Ë€±€˜–€s÷€€,€I>= g€Us1-˜ï1-$øY½5ú—‚±²+Ä|$Ÿ€,€˜–€±€s÷€g€a¨g€s÷€€,€˜–€s÷€Usa¨˜–€áÔY= g€$ŸUsI>UsUs˜–€çïçïÉj€¤Ë€g€Us= = UsI>= 0Ô$ŸI>= $Ÿ+Ä|I>= ú—€+Ä| 5$Ÿ7777B@BUFR&bÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒUUUUUUUUUUU]kZÖµ­kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ç9Îsœç9Îsœç9Îs½ï{Þ÷½ï{Þ÷½ï{Þ€„!B„!B„!B ж5Ï„e:V׆B˜èJ–ƹðŒ§JÚà c¡*[çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUE@UTETUUUUPPEUUUUUUUUð ` 5j 5 5= Us¤Ë€±€$Ÿ±²| 5±²}€…‚7 s‚±²| 5+Ä+Ä}ú—ƒ+Ä~±²~7 € 5$Ÿ$Ÿ= g€ 57 €$Ÿ$ŸŒa‚7 ‚7 €$Ÿ= $Ÿ0Ôjj+Ä~7 ƒ+Ä| 5 5j+Ä|j 5Éj€±€Ussƒ+Ä~7 ƒ+Ä|UsÉj€¤Ë€Œa€a¨Us˜–€Éj€Éj€±€±€½5€= €,I—Éj€½5€¤Ë€Us€…s‚7 ‚7 €0Ô$Ÿj$Ÿ+Ä+Ä|7 €jUsg€±€a¨ÉjṲˀÉj ŽçïáÔ€ÕŸ€¤Ë€ÕŸ€áÔUÌ$øŒa€˜–€±€˜–€Us±€ŒaY±€I>s÷€€,€Œa€g€g€€,€77775BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@ 0’I$’I$’I)$’I$’I$’m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡*[çÂ2+k€C!Lt%LkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUTU@UQUTUUUUUUUUUð `g€I>€,€ÉjYçï½5€çïŒa€Œa€ô$ÉjÃçïŒa€½5$øYb¤Ë€±€¤Ë€a¨a¨s÷€Éj€¤Ë€˜–€¤Ë€Œa€$ŸI>= 0Ô$Ÿ$Ÿ$Ÿ 5 5a¨g€UsI>s÷€0Ô$Ÿ$Ÿ$Ÿ 5+Ä}ú—ú—‚7 ‚±²+Ä|±²~7 ‚±²~±²+Ä+Ä| 5$Ÿ$Ÿ= 57 ú—‚7 ‚±²|jj 5$Ÿ$Ÿ$Ÿ$Ÿ$Ÿ+Ä| 5 5j0Ô= $Ÿ= 5+Ä|jjI>Œa€Éj€±€˜–€€,€˜–€¤Ë€˜–€±€˜–€I>a¨s÷€€,€UsUs0Ô 50Ôj0Ô0ÔUsŒa€s÷€€,€s÷€= UsUsg€7777ÔBUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@ 0I$’I$’I$¤’I$’I$’I¶Ûm¶Ûm¶ÛrI$’I$’I$¶Ûm¶Ûm¶ÛnÛ`‹Êt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `I>I>= $Ÿ$Ÿj$Ÿ0Ô0Ô= jI>˜–€áÔ€çïÉj€áÔ€ô$áÔYçïYY Žçïçï=b$øÉj€±€Œa€UsI>g€՟Ã$ø ŽáÔYÕŸ€áÔ€ÕŸ€½5€ô$ô$çï€,€±€Œa€¤Ë€¤Ë€ÕŸ€˜–€I>$Ÿ0Ô= a¨s÷€Œa€g€g€UsUsI>$ŸUs= = 0ÔUs€,€±€¤Ë€˜–€I>a¨0Ô0Ô0Ôs÷€a¨$ŸUs= = $Ÿ$Ÿ€,€g€ 50Ôa¨I>a¨€,€$Ÿj 5 50Ôj= Us˜–€a¨g€UsUsg€UsUsUs= g€˜–€a¨g€$Ÿ 5j7 ‚±²+Ä|$Ÿ7777ÔBUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@80 $’I$’I$’’I$’I$’I&Ûm¶Ûm¶ÛmÉ$’I$’I$’Ûm¶Ûm¶ÐŠc¡*[çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUEUUUUUUUð `= g€I>jjj$Ÿ$Ÿ 5I>$Ÿj 5j˜–€Œa€ÕŸ€a¨$Ÿ 5$Ÿ0Ô˜–€¤Ë€½5€˜–€a¨g€€,€Usg€s÷€s÷€s÷€±€çïÃÉj€çï¤Ë€I>a¨s÷€¤Ë€½5Y Ž ޽5€a¨$Ÿ$Ÿ 5$Ÿ$Ÿ0Ô$Ÿ 50ÔUs 5+Ä+Ä~7 ƒ+Ä+Ä|j0Ô0Ô= = 0Ôjj0Ô 5j+Ä|±²~7 ‚±²~7 ‚7 ú—‚7 €j0ÔI>g€½5€¤Ë€ÕŸ€€,€Usg€= I>0Ô 50Ôg€՟€áÔYa¨$Ÿ±²}€…ú—‚7 ‚7 €= Us= I>I>I>0Ôa¨g€Us7777ÔBUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@L0’I$’I$’II$’I$’I$Ûm¶Ûm¶Ûm¹$’I$’I$’[m¶Ûm¶Ûm·m¶Û`‹:V׆B˜èJ–ƹðŒ§JÚàÈS c\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUU@UUUUUUUEAUUUUTUUUUTAð `I>0Ô= j±²~7 ‚7 ‚7 ‚7 € 50Ôg€g€Usa¨a¨a¨I>UsUs€,€I>0Ô= $Ÿ€,€j±²~7 ƒ+Ä|$ŸUs€,€€,€€,€0Ô= I>a¨a¨a¨0Ô$Ÿ= j 57 €…ú—‚7 ƒ+Ä|0Ô$Ÿ= = = I>= 0Ôj0ÔI>= I>$Ÿ$Ÿj+Ä| 5jj7 ú—€jI>€,€˜–€UsI>UsI>a¨I>g€€,€Œa€a¨ÕŸ€Éj€¤Ë€I>+Ä~±²}€…ú—‚7 € 5a¨˜–€I>I>jI>$Ÿ$Ÿj0Ô 5 5jjUsg€g€= +Ä}s‚7 ƒ+Ä~±²|+Ä~±²| 57777ÔBUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@d0’I$’I$’II$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’Im¶Ûm¶Ûm¶Ðж5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡*[çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUEUUUUUUUUUUUUUUTUUUUUUUUUUð `I>j˜–€Usa¨s÷€±€$Ÿ 5 5j7 €$Ÿ7 ss‚7 ‚7 ƒ+Ä|Us7 €I>0Ôg€s÷€Œa€˜–€I>0Ôçï$øI—tPUÌÕŸ€= = I>= s÷€½5€Éj€€,€Uss÷€s÷€Us$Ÿ0Ô˜–€áÔ€¤ËYÉjÃŒa€¤Ë€±€g€= j0Ô= 0Ô= = 0Ô$Ÿ= j$Ÿg€½5€ô$½5€çïçïYs÷€0Ô7 ‚7 ‚7 € 50Ôg€= 0Ô 50Ô$Ÿ$Ÿ$Ÿ$Ÿ0Ô 5I>ÃáÔ€çï¤Ë€ 50Ôa¨±€ÕŸ€Œa€Éj€˜–€g€˜–€$ŸUsa¨I>0Ô0Ô€,$øI— Ž7777ÔBUFR&bÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒBUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷½ï{Þ÷¼„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œd!B„!@Š …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUTUPPUUUUUUUUUUUUð `a¨$ŸI>s÷€g€a¨€,€= $ŸI>j0ÔI>0ÔUs= a¨g€՟Ãn6UÌb$øÃý5€¤Ë€ÕŸ€½5€I>I>= 5+Ä| 5 5±²~±²}ú—‚7 ú—‚7 ‚7 ‚±²~±²}ú—ú—ƒ+Ä|j 5±²}ú—‚7 ‚±²}ú—ƒ+Ä+Ä+Ä+Ä|+Ä|0Ô0ÔI>Éj€0Ô7 ú—‚±²~±²+Ä|±²|s÷€a¨€,€0Ô$Ÿa¨= I> 5 5 5UsI>½5€Œa€s÷€= j$ŸI>$ŸUsUs= jg€j0Ô0Ô$Ÿ$Ÿ$Ÿ0Ô0ÔŒa€a¨g€0Ô$Ÿ0Ôa¨UsUs€,€Éj€˜–€¤Ë€áÔ€ô$77775BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€0I$’I$’I$¤’I$’I$’I¶Ûm¶Ûm¶ÛrI$’I$’I$¶Ûm¶Ûm¶ÛvÛ`‹Êt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RÚçÂ2+k€C!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUPUTUUUTUUUUUð a$ø$ø ޱ€€,€g€g€UsI>$Ÿ±²~±²|$Ÿa¨¤Ë€ÕŸ€ÕŸ€áÔ€ô$€,€s÷€Œa€˜–€€,€a¨= = 0ÔI>0Ô$Ÿjjj0ÔI>$Ÿ0Ô= a¨g€a¨I>Usg€g€±€ÕŸY1- ŽYÃô$áÔ€s÷€= = a¨a¨I>+Ä+Ä~7 € 5±²~±²|a¨Œa€˜–€¤Ë€€,€g€= jjú—‚7 ‚7 ƒ+Ä~±²|$Ÿ¤Ë€g€0Ôjj 5$ŸI> 5¤Ë€$Ÿ±€Œa€ 5±²~7 ‚±²~7 ‚±²+Ä|jUsa¨g€0Ô 5jjUsI>= = 0Ô 5 Žs÷€½5€= $Ÿ 5jjI>7777ŸBUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€,0I$’I$’I$”’I$’I$’I6Ûm¶Ûm¶ÛnI$’I$’I$–Ûm¶Ûm¶ÐŠt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUQUUUUUTUUUUTUUAU@UUUð `UsUs0Ô 5j$Ÿ 5 5s÷€g€Œa€I>€,€çï±€¤Ë€= 5= Éj€g€a¨= I>$Ÿ$Ÿ= 0Ô= $Ÿ€,€I>I>j= ¤Ë€a¨Us= +Ä|Uss÷€g€I>UsI> 5$Ÿ= 0Ôg€s÷€a¨€, ŽÉj€½5€I>0Ôjj 5±²| 5j 5$ŸjI>j= 0Ô= €,€I>js÷€g€s÷€0Ô+Ä+Ä~7 €$Ÿ 5$Ÿ 5= 5 5 5+Ä+Ä|a¨s÷YŒa€0Ô±²+Ä~7 ‚±²|Œa‚±²|= = j 50Ô0Ô$Ÿs÷€0ÔUsa¨jI>7777ŸBUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€@0$’I$’I$’JI$’I$’I$›m¶Ûm¶Ûm¹$’I$’I$’[m¶Ûm¶Ûm·m¶Û`‹JÚàÈS RØ×>”é[\ c¡*[çÂ2+k€C!Lt%LkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUTUð `s÷€½5€Usj7 €+Ä| 5j€,€g€j= $Ÿ= $Ÿ0Ô= = Usg€±€˜–€Œa€Œa€€,€$Ÿ0ÔjUss÷€˜–€Usa¨= j 5$Ÿj 5$Ÿj 5$Ÿa¨s÷€0Ô 5$Ÿ= = 0Ô$Ÿ$Ÿ0ÔjI> 50Ôs÷€€,€¤Ë€¤Ë€˜–n6n6˜ïUÌô$ÕŸ€½5€çïÉj€áÔ$ø$ø$øY±€˜–€a¨g€I>€,€UsUs±€ô$€…n6ô$Éj€±€ÕŸ€±€±€Éj€˜–€I>I>a¨= €,€¤Ë€Œa€˜–€±€Œa€Œa€Éj€±€I>I>I>+Ä~±²~7 ‚±²~7 €j 5j0Ô7777ŸBUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€X0’I$’I$’II$’I$’I$›m¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶Ûm¶àж5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUUUUUUUUUð `j$Ÿ 5 5jjjI>+Ä+Ä~±²+Ä+Ä+Ä+Ä~7 €…‚7 ‚7 €…‚7 ‚±²~7 ‚7 ‚7 ‚7 ú—‚±²~7 € 5= Usj±²~±²|= a¨Œa€s÷€0Ô= I>0Ô 5$Ÿ$Ÿ$Ÿ$Ÿ0Ôj0ÔI>Us0Ô0Ô$Ÿa¨s÷€Œa€˜–€¤Ë€¤Ë€€,€I>a¨= = $Ÿ0Ô0Ô0Ô0Ô$Ÿ$Ÿ= g€a¨I>Usg€Us€,€€,€g€s÷€Us€,€UsI>= 0Ôj0ÔUs0Ô$Ÿ 5+Ä|0Ô±²~7 ‚7 ‚7 ‚±²|$Ÿ$Ÿ0ÔUsUsa¨Us= j$Ÿjj+Ä+Ä|j 5 5 57777ŸBUFR&bÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò‚UUUUUUUUUUUUUUU]ï{Þ÷½ï{Þ÷½ï{ÞùÎsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½B„!B„!B„!„!B„ Š!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUUUUE@UUUPU@EDUUUð ` 5+Ä|ja¨€,€Œa€a¨$Ÿ$ŸI>0Ô= $Ÿ= $Ÿj0ÔI>I>Us= 0Ô+Ä+Ä|= a¨s÷ƒ+Ä|j±²~7 ‚±²+Ä~±²~±²|7 ‚7 ‚±²+Ä| 5j±²~7 ƒ+Ä+Ä~7 ‚±²}€…€Œaú—‚7 ‚7 ‚7 ƒ+Ä}ú—‚7 ú—ú—€I>g€0Ô= ú—€…€…sú—€j= Us0Ôs÷€jUsŒa€g€= ±²+Ä|j= €,€Us+Ä~±²~±²| 5±²|jI>j+Ä|7 ‚±²+Ä|$Ÿ0Ô0ÔI>€,€€,€Us0Ô$Ÿú—€ss‚7 €jI>a¨s÷€g€UsŒa€77775BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀ 0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTUUUUPUUUUQUUUUUUUPUUUUUUð `Uss÷€áÔ€±€çïÕŸ€Us= Us 5 5ú—‚7 ú—s€…ƒ+Ä|j= UsUs$Ÿ$Ÿ0Ô 5= 0Ôs÷€a¨Us±€Éj€Éj€½5€¤Ë€Usú—€Œa‚7 €= €,€˜–€€,€a¨g€Us€,€= g€a¨a¨= j0Ô 5I>I>= 5 5+Ä|jjI>g€= = s÷€s÷€I>s÷€UsUs½5€½5€½5€ô$Y¤Ë€= j$ŸI>$ŸUs= I>$Ÿ€,€j+Ä| 5 5 5+Ä+Ä|$Ÿ0ÔUsg€±€Us= +Ä}€…€…‚±²| 5j= = 0Ô 50ÔI>0Ô$ŸUsa¨Œa€a¨±€Éj€7777ÔBUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀ 0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUTUUUUUUUUUUUUUUQUð `˜–€Éj€˜–€= j0ÔI>$Ÿ0Ô0ÔUsg€€,€g€s÷€UsŒa€a¨g€˜–€0ÔI>€,€áÔ€±€¤Ë€˜–€a¨= I>a¨= I>g€Us 5$Ÿ= Us= a¨ 5 5= áÔ€½5€Éj€Éj€˜–€Œa€= = = s÷€I>0Ô0Ôj0ÔUsgƒ+Ä|a¨0Ôa¨= ±€g€Usa¨€,€±€áÔ€½5€Éj€¤Ë€Œa€s÷€a¨s÷€±€˜–€I>a¨$Ÿ$Ÿa¨I>= s÷€s÷€a¨Œa€Éj€g€ô$Ãô$½5€¤Ë€g€Œa€a¨Œa€s÷€= I>0ÔUss÷€I>Us¤Ë€I>a¨$Ÿg€0Ôj$Ÿ+Ä|j˜–€˜–€±€Œa€7777ÔBUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀ80$’I$’I$’JI$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUUUUUTUUUUUUTQTUPUUð `s÷€˜–€ÕŸ€€,€$ŸUs+Ä~7 ‚7 ‚±²|7 €= = UsUsI>I>= I>€,€s÷€€,€I>I>s÷€$Ÿ= a¨$Ÿ±€Œa€€,€a¨Œa€Us$Ÿ= $Ÿ= 5$Ÿj= = g€Œa€±€€,€UsI>0ÔI>a¨I>= = = = g€I>j+Ä~7 €jI>a¨g€a¨Us= UsUsI>I>g€Œa€a¨I>0Ôs÷€˜–€€,€a¨a¨I>Uss÷€g€= UsUs0Ôj±²|7 € 5+Ä|j$Ÿ 5jj 5ú—ƒ+Ä}ú—€ 5 5$Ÿa¨a¨= I>= 5Us= 7777ÔBUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀL0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUAUUUUU@TUUUUUUTUUUQUUUUUð `a¨I>¤Ë€I>Usa¨a¨˜–€Œa€€,€I>jj+Ä+Ä|0ÔUsI>s÷€I>Us= jj= g€a¨0Ô0Ô˜–€g€a¨a¨$ŸUs= j7 ú—‚7 ‚7 €…‚7 ‚7 ƒ+Ä~±²| 5jj+Ä|$Ÿs÷€g€Us0Ô$Ÿ$Ÿj+Ä|$Ÿa¨s÷€a¨a¨g€Us 50Ô 50Ô= $Ÿjj$ŸI>±€½5€Œa€¤Ë€0Ô+Ä+Ä|0Ô0ÔI>I>= $Ÿj 5jj0Ô= $Ÿ 5 5 5+Ä|7 € 5+Ä|$Ÿ$ŸI>$Ÿg€UsUs0Ôjjj$Ÿ$Ÿ0Ô= $ŸI>I>a¨0Ô 57777ÔBUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀd0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUTUUUUUUUUUUUUUUPEUQPUUUUUUUð `jj7 €$Ÿa¨g€UsI>$Ÿj0Ô$Ÿ$Ÿ$Ÿj±²|j$Ÿ$Ÿ0Ô0Ôj 5= UsI>Us$Ÿ0ÔI>I>$Ÿ$Ÿ0Ô= = I>0Ô$ŸUs0Ô0Ԥˀ¤Ë€Éj€Éj€€,€s÷€Œa€UsI>s÷€= UsUs= j0Ôj 5j$Ÿj 50Ô$Ÿ0ÔjUsçï€,€I> 5+Ä~7 € 5ú—€$Ÿ 5 5j= ±²|j$Ÿ+Ä+Ä|UsŒa€¤Ë€áÔ€ÕŸ€ÕŸ€Éj€¤Ë€˜–€s÷€¤Ë€ÕŸ€¤Ë€€,€= j+Ä|j+Ä|= jŒa1-g€= $Ÿú—€ 50Ô$ŸçïUÌY7777ÔBUFR&bÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÂUUUUUUUUUUUUUUUUUUUUUU^÷½ï{Þ÷½ï{ï{Þ÷½ï{Þ÷½ï{Þ÷¼„!B„!B„!B!B„!B„!B„1ŒcÆ1ŒcÆ0Š„©lkáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUEUTQUUUUUUUUUUUUUUUUUUUUUETýàa1-¤Ë€Us[€ 5|Œa€I>€,€˜–€g€Us0Ô= ¥}|j 5|= €,€ÕŸYà ŽÉj€ô$ÃÃô$Œa€= = ˜–€±€¤Ë€[€0Ô0Ôj0Ôjj 5˜–€±€˜–€˜–€€,€±€s÷€˜–€€,€¤Ë€[€¤Ë€±€Ûºçïçï±€¤Ë€˜–€[€˜–€Œa€g€€, Ž˜–€ô$€,€¤Ë€s÷€I>jŒa€[€$Ÿ$ŸI>s÷YÉj€€,€ 5½5€˜–€= I>Usg€s÷€g€jj= = ±€çïUs0Ô 5|jUs$ŸI>¥}}îb€ú>€ú>€ú>tP€€,îbîbtPîb‚¥}}tPtP‚+k€77775BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm·`‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUUUUUUUUUUUUUUAUUUUUEUUUUð c+Ä|Us¤Ë€g€¤Ë€ 57 ‚7 ‚±²+Ä~±²~7 € 5Usg€g€€,€I>Œa€Uss÷€€,€Us€,€$Ÿ 50Ô$ŸjI>= js÷€Us0Ô$Ÿ0Ô€,€½5€¤Ë€€,€Éj€±€½5€˜–€¤Ë€çïçï¤Ë€g€Œa$øØ–€½5€˜–Yô$¤Ë€˜–€½5€±€áÔ€±€Œa€s÷€s÷€a¨s÷€˜–€a¨ÕŸ€ÕŸ€g€¤Ë€g€= = jj7 ‚±²| 5= Œa€g€€,€€,€˜–€g€s÷€UsŒa€Œa€€,€ÕŸ€Œa€ô$áÔ€ÕŸ€¤Ë€$Ÿj 5ú—€ 5 5$Ÿ0Ô$Ÿ±²|0Ô 50ÔI>Usg€€,€s÷€Œa€ÕŸ€Œa€±€a¨0Ô$Ÿ7777>BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò(0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±°Œ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUPUUUUQUUUUUUUUUUUUUUUUUUð `jj$ŸI>Usa¨$Ÿ= = 0Ô0Ô€,€ÕŸ€áÔ€Us€,€€,€˜–€Uss÷€€,€UsUs0Ô±²~7 €$Ÿj 50Ôja¨j= I>€,€0ÔUsI>a¨ú—€$Ÿú—‚7 €…€I>Us 5Us= = 0ÔI>= I>Us$ŸI>a¨½5€ÕŸ€jj0Ôa¨Œa€€,€a¨g€= = jj+Ä| 5j0Ôjj= Usg€Us0Ô0ÔI>jjj$Ÿj 5j 5jjj0Ô0Ôa¨0ÔŒaYY€,€Uss÷€Usa¨UsUs$Ÿs÷YI—ô$½5€¤Ë€s÷€7777>BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò<0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUPUUUUUUUDUUUUUUUUUUUUUð `I>I>= g€€,€g€UsUsg€Œa€€,€˜–€±€½5€Œa€Usg€€,€€,€±€˜–€s÷€s÷€a¨€,€¤Ë€0Ô$Ÿ 5= s÷€j+Ä~±²~±²|g€0ÔI>= g€a¨I>$Ÿ0ÔI>j 5 5$Ÿj 5$Ÿ$ŸUsI>g€g€€,€ 5 5 5±²|+Ä| 5$Ÿjjú—€+Ä|= a¨˜–€= UsI>g€jj$Ÿj= I>a¨a¨g€Œa€g€g€€,€˜–€Œa€g€Œa€±€±€¤Ë€Œa€½5€¤Ë€ÕŸ€±€Éj€çï½5€½5 Žç€Œa€Œa€€,€g€€,€½5€€,€˜–€±€¤Ë€s÷€7777>BUFRæbÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒP0$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ý¶Û`‹JÚà†B˜èKŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUDPTUUUUð `˜–€˜–€¤Ë€Œa€s÷€Œa€s÷€s÷€Usg€¤Ë€€,€s÷€s÷€g€˜–€½5€±€Éj€s÷€s÷€s÷€Éj€½5€Éj€ÕŸ€¤Ë€€,€€,€s÷€Œa€¤Ë€½5€Éj€s÷€€,€= s÷€ÕŸ€Éj€Éj€g€s÷ Ž$øI—áÔ€ÕŸ€çïáÔ€¤Ë€ÕŸ€Œa€½5€¤Ë€½5€áÔ€˜–€s÷€g€±€±€€,€Œa€˜–€˜–€€,€¤Ë€áÔ Žô$ÕŸ€ÕŸ€½5€˜–€g€s÷€Uss÷€€,€= 5= = j$Ÿ0ÔI>UsUs= I>= ja¨Us0Ô 5 5ú—€±²|±²+Ä| 5±²| 5jj0Ô$Ÿ 5$Ÿjj$ŸI>0Ô7777>BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Òh0I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUQUQ@UUUð `= $Ÿ0Ôjj0Ô= I>= = $ŸUsI>I>0Ô= s÷€= = I>Œa€˜–€€,€Us¤Ë€Éj€g€¤Ë€±€¤Ë€˜–€ÕŸtP ޱ€ÕŸ€½5€ô$Éj€±€€,€s÷€s÷€˜–€¤Ë€½5€ô$áÔ€±€Uss÷€a¨s÷€˜–€a¨˜–€ÉjI—I—±€UsI>g€Œa€€,€s÷€= I>€,€a¨= 0Ô0Ô$Ÿ$Ÿ= g€g€g€a¨€,€g€a¨s÷€s÷€g€0ÔI>Us= g€s÷€g€0Ô 5 5j±²| 5 5$Ÿ$Ÿ 5 5 5+Ä|0Ô= ú—‚7 ‚7 ‚±²~7 ‚±²|j= j$Ÿ 5$Ÿ0Ô$Ÿ0ÔI>$Ÿ$Ÿ7777>BUFR&bÿ« fÒ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷€„!B„!B„!D!B„!B„!B†1ŒcÆ1ŒcÆ1ŒcÈB„!B„!B„! P‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUQUTPEUUQUUUUUUUUUUUUUUUð `$ŸI>I>g€s÷€s÷€¤Ë€ÕŸ€¤Ë€Œa€Œa€g€€,€a¨I> 5±²~7 ‚±²+Ä~±²~±²~7 € 5Œa€áÔ€0Ô$Ÿ 5+Ä|j$Ÿj±€ÉjY ŽáÔ‚±²| 5 5+Ä+Ä| 5ú—€= = = = I>s÷ƒ+Ä|s÷ú—ƒ+Ä}€…‚±²~±²| 5I>I>I> 5j+Ä|$Ÿ$Ÿ= I>UsI>Us€,€€,€˜–€s÷€a¨g€I>Us= Us˜–€ÕŸ€½5€s÷€Uss÷€g€a¨g€Œa€ÉjÃ=bŒºÉÃîb±Y±Y¥$ŒºY¤Ë€áÔ€áÔ€ô$1-UÌ$ø¤Ë€s÷€0Ô$Ÿ= = = a¨a¨a¨0ÔUs€,€Œa€ 5$Ÿ77775BUFRöbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@@"""""""""""#333333333334DDDDDfffffwwwwwwpŠ!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:§>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUUUUUUUUUUPQTUUUUUUUUUUAA@ð ` 5j±²|$Ÿ$ŸUs= s÷€˜–€˜–€Œa€a¨0ÔI>I>jg€0Ô0ÔUsUsg€0Ô$Ÿ= j 5$ŸUs 5 5 5j$Ÿ$Ÿj$ŸI>0Ôs÷€s÷€€,€g€UsI>I> 5 5+Ä+Ä|$Ÿj+Ä|$Ÿj 5ú—ƒ+Ä|I>$Ÿ€,Ãg€€,€a¨ 5 5= I>0Ô= g€Œa€˜–€¤Ë€¤Ë€½5€Œa€±€¤Ë€ô$ÕŸ€a¨±€ÕŸ€s÷€I>g€j= 5 5 5I>a¨€,€¤Ë€g€UsUsú—‚7 €±²+Ä|j€…€…€…‚7 ssú—€…€j= jú—ú—€…€O€7777$BUFRöbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@4@""""""""""3333333DDDDDDUUUUUUUUUUUUffffffffffffwpŠ×>”é[\1Е-sáN•µÀ˜éRØ×>”é[\ c¡*[æ5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUPPUUUUUUUTUUUUEð aú—ú—ú—‚7 €…‚±²~7 ú—s€…s€Œas‚7 ƒ+Ä|$Ÿ+Ä+Ä|0Ô= a¨€,€I>= 0Ô+Ä+Ä| 5 57 ú—‚±²|Œa€Œaú—€…s€…‚7 €…‚±²~7 € 5±²+Ä|UsjŒas€Œa€Œa‚7 ‚7 € 5I>½5€¤Ë€Usa¨= a¨$Ÿg€Us˜–€Us= +Ä|Us$Ÿ$Ÿa¨0Ôj$Ÿ7 ‚7 €7 ú—‚7 €jŒa€çïŒa€g€ 5$Ÿ 50Ô= I>I>s÷€= 0Ô 5ú—‚7 €…‚±²~±²~±²~7 €Us±€ÕŸ€Œa€s÷€s÷€€,€g€jj$Ÿ$ŸI>±€¤Ë€€,€s÷€Œa€ 5±²|Uss÷€7777$BUFR&bÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒBUUUUUUUUUYÎsœç9ëZÖµ­kZÞ÷½ï{Þ÷½ï{Þ÷½ï{ç9Îsœç9Îsœç9Îsœï{Þ÷½ï{Þ÷½ï{Þ÷½B„!BŠ2ÇBT¶¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUð `= Us¤Ë€Éj$øUÌUÌYI>¥$±YÉÃŒºtPI—Œºb=b1-ÃÃUÌ Žô$áÔ€áÔ€çï±€½5€Œa€s÷€= Us= = j0ÔgÂYÕŸ€¤Ë€Œa€s÷€áÔ€˜–€½5€g€˜–€s÷€+Ä+Ä|$Ÿ$Ÿa¨UsI>jj 5= Us˜–€s÷€˜–€±€s÷€s÷€a¨˜–€Œa€¤Ë€½5€ÕŸY$øÃÉj€±€˜–€Œa€¤Ë€¤ËÃtP˜ïŒºI—çï ŽçïÕŸ€áÔI—Ys÷€˜–€áÔ Ž1-ÃáÔ€çïŒa€Éj1- Ž=bŒº½Ž€… ŽbUÌb=bI—ÃÉj€±€Œa€±€áÔYY$ø$øI—77775BUFRæbÿ« fÒ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUTPAUUUUð aÃ1-Yô$1-UÌI—1-$øô$Éj€s÷€€,€$Ÿj 5a¨½5€çïçï½5€˜–€Usg€a¨s÷€g€Œa€Éj$øÃ1-$øÃô$çïáÔYÕŸ€ÕŸ€ÕŸ€±Y$ø ŽÕŸ€˜–€¤Ë€g€g€˜–€s÷€s÷€ÕŸ1-1-½5€Éj€áÔYçï½5€s÷€Usg€s÷€s÷€˜–€Us= I>= = 0Ô$Ÿj= $Ÿ$Ÿ0Ôj$Ÿ 5ú—€±²}ú—‚±²+Ä~±²| 5±²~±²+Ä~±²}€…‚±²~7 ‚7 ‚±²|$ŸUss÷€0Ô+Ä~±²| 5±²|7 €j0Ôa¨Œa€˜–€ÕŸ€½5€ÕŸ€±€g€¤Ë€€,€½5€ô$ÕŸ€Œa€Éj€7777ŽBUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUQUUUUUUUUUUUUð `ÕŸ€áÔ€ÕŸ€s÷€a¨s÷€I>0Ôa¨a¨Œa€¤Ë€¤Ë€±€g€ 5jI>= j= a¨s÷€a¨UsUs$Ÿ= $Ÿa¨UsUsUsg€€,€s÷€I>I>0Ô= 0Ô$ŸI>g€€,€€,€€,€€,€€,€g€I>j±²|±²~±²+Ä+Ä|j0Ô0Ôjj$Ÿ$Ÿ0Ô$Ÿa¨a¨a¨0ÔI>= I>I>= j0Ô+Ä|j0ÔI>s÷€˜–€€,€UsUs= €,€˜–€Œa€˜–€g€s÷€€,€I>0Ô$ŸUs$ŸI>Usg€€,€˜–€±€±€¤Ë€¤Ë€¤Ë€˜–€a¨Œa€gÂYI—I—ÃÉj€ÕŸYÉj€çïáÔ€Éj€˜–€Œa€˜–€7777ŽBUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€40I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt&S¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUUUUUUUUTUUUUUUUUUUUUUUð `çïÉj€½5€Éj€¤Ë€¤Ë€€,€¤Ë€Œa€UsUs0Ôú—€…ss€…€…‚7 €0ÔŒa€±€½5€Éj€Éj€½5€±€±€¤Ë€ÉjYçï¤Ë€¤Ë€Œa€s÷€s÷€Us= I>j0Ô= g€½5€g€0Ô= I>I>Usa¨= 0Ô$Ÿ±²~7 ‚±²~7 ú—ú—‚7 ú—ú—sƒ+Ä|a¨€,€±€çï±€Œa€I>a¨I>a¨¤Ë€áÔ€˜–€˜–€½5€ÕŸYÕŸ€¤Ë€s÷€Éj€s÷€Œa€¤Ë€Éj=b ŽçïÉj€½5€áÔ€¤Ë€Éj€ÕŸ€áÔÃ$ø=bUÌ ŽYÕŸ€˜–€˜–€Éj€¤Ë€Éj€¤Ë€ÕŸ1-=bY ŽYçïô$ Ž Ž7777ŽBUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€H0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUTEUUUTDUUUUUUð `ô$áÔ€çïÉj€½5€çï$øYYçïYáÔ€±€˜–€g€g€g€çïI—1-1-=bUÌ$ø1-Yà Žô$±€˜–€±€¤Ë€¤Ë€Œa€Usa¨a¨˜–€a¨Uss÷€Us0Ôa¨= a¨j 5 50Ô$Ÿj$Ÿg€˜–€±€¤Ë€€,€˜–€±€ÕŸY1-1-=bU̽5€¤Ë€Us0Ô$Ÿj0Ô+Ä|+Ä|= Œa€Œa€˜–€˜–€çïô$¤Ë€±€˜– ŽUÌÃçïUs$Ÿj±²|+Ä|j±²+Ä|0Ôa¨s÷€a¨= a¨€,€€,€Us0Ô= 0ÔI>Œa€a¨a¨Us½5€±€Œa€jj±€±€çï$ø7777ŽBUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò€`0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠt%MsáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUTUUUT@UUPUUUUUUUUUð aUÌn6I—ç€¤Ë€çïbbô$€,€˜–€çï½5€Usa¨Œa€0Ô0ÔI>s÷€½5€˜–€Œa€€,€ÕŸ€I>= I>a¨±€±€a¨a¨0Ôj 5+Ä~±²}ú—ú—‚7 ‚±²|jj$ŸUs= 5jj€,€çïÃÉj€s÷€$Ÿ 5+Ä|7 ú—‚7 s‚7 ssú—ú—ú—ú—€…ƒ+Ä+Ä| 5Uss÷€ÕŸý5€ 5½5€I>7 ‚7 €0Ôa¨ Ž ŽçïáÔ€€,€€,€a¨±Yn6˜ï€…Œº€…b ŽbÃñ€Œa€Uss÷ ŽI—ÃYçïô$ô$ Ž ŽYô$7777ŽBUFR&bÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò‚UUUUUUUUUUUUUUUUUU^sœç9Þ÷½ï{Þ÷½ï{Þ÷½ï{ï{Þ÷½ï{Þ÷½ï{Þ÷¼„!B„!B„!B!B„!B„!B„0‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUTTUUUð a ŽYô$áÔ€áÔ€¤Ë€±€Œa€€,€s÷€$Ÿja¨˜–€±€ÕŸ€±€Éj€¤ËÃYÃ=bÃY½5€½5€s÷€g€€,€UsUsI>Us= Us½5€ô$ô$$øç€¤Ë€ÕŸY1-Y$ø1-1-=bÃY Ž$ø=b$øÃYçïçïáÔ€ô$áÔ€½5€s÷€¤Ë€ÕŸ€Éj€ÉjYáÔ€¤Ë€¤Ë€I>g€½5€¤Ë€Œa€= 0Ô$Ÿjs÷€áÔ$øYô$1-çï€,€¤Ë€Œa€Œa€çïô$˜–€Us= 0ÔI>0Ô7 ƒ+Ä~±²|±²+Ä|˜–€Usa¨0Ô 5+Ä|$ŸŒa$øI—I—UÌ1-Ãô$Y¤Ë€I>77775BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀ0I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ …1Е-sáN•µÀ …1Е-te:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `$Ÿjj0Ô€,€ô$1-YçïÉj€¤Ë€áÔ€Œa€ô$€…Õø±YÉÃÉÃb$øÃ ŽYÉj€˜–€Éj€¤Ë€áÔÃI—$øô$ÕŸ€½5€ÕŸ€ô$áÔ€ÕŸ€g€€,€¤Ë€UsUs= 57 ƒ+Ä|= g€˜–€ô$UÌ=bI—1-1- Ž$ø1- Ž=bçï¤Ë€Us$Ÿ$ŸI>I>$Ÿ 5 5$Ÿa¨áÔ€áÔ€½5€Œa€a¨a¨Us€,€s÷€çïô$Éj€Éj€˜–€Œa€±€˜–€ÉjÃY$Ÿ€,€€,€Œa€áÔ$øÃçïáÔ€ÕŸ€ÕŸ€Éj€Éj€±€Œa€Œa€€,€Œa€áÔ€±€±€˜–€ÕŸ€½5€Us= g€˜–€ô$ ŽYÕŸ€7777BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀ$0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUTUUUUU@UUUð `ô$½5€çï$ø=b=b1-I— ŽÕŸ€áÔ€½5€áÔ€±€Éj€Éj€çï½5€g€= 0Ô= = a¨Œa€= $Ÿjs÷€½5€ÕŸ€Œa€¤Ë€ô$bÃŒa€a¨˜–€g€0Ô= a¨g€՟€áÔ€Éj€½5€s÷€g€s÷€Éj€áÔ ŽYô$Y ŽáÔ€±€Usa¨$ŸI>$Ÿj 5g€՟€ÕŸ€±€Éj€ÕŸ€ÕŸ€¤Ë€Œa€ô$UÌ=bÃô$çïáÔ€½5€˜–€I>= +Ä|j 5Us±Y$ø1-1-çïáÔ1-$øtP$ø1-çï ŽÉj€±€Œa€I>7 ú—€…€…ú—‚7 €= €,€áÔ€g€Œa€ÕŸ€áÔ€ô$ÕŸÃ$ø¤Ë€7777BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀ80’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÛmÛ`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶¹ðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `±€˜–€g€Usj$Ÿ+Ä~±²|a¨±€çïÉj€ô$ÕŸ€Œa€Œa€±€áÔ€ô$$ø$ø$ø1-1-$ø$øtPbà ŽáÔ€±€˜–€Éj€áÔ€½5€¤Ë€½5€¤Ë€¤Ë€±€ÕŸ€áÔ€çïÉj€ÕŸ€¤Ë€¤Ë€˜–€½5€Œa€± ŽÕŸ€±€a¨g€˜–€s÷€€,€s÷€˜–€±€±€Œa€áÔ€áÔ€ô$Y1-YYô$Yô$ô$çï±€±€˜–€˜–€˜–€½5€±€½5€Éj€½5€˜–€€,€Œa€ÕŸ€áÔ€ÕŸ€ÕŸ€áÔ€Éj€¤Ë€±€±€˜–€€,€a¨I>UsI>a¨a¨g€s÷€€,€˜–€¤Ë€¤Ë€¤Ë€Éj€½5€¤Ë€€,€Uss÷€s÷€a¨a¨a¨a¨= 7777BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀP0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUQUUUUUUUUUUUUUUð `UsI>0Ôs÷€a¨Usg€¤Ë€¤Ë€¤Ë€˜–€±€±€ÕŸ€ÕŸ€ÕŸ€áÔ€Éj€ÕŸ€¤Ë€€,€s÷€a¨¤Ë€Œa€g€g€s÷€Œa€€,€€,€s÷€¤Ë€ÕŸ€ÕŸ€Éj€Éj€ÕŸY½5€€,€Uss÷€g€s÷€g€= j+Ä|a¨s÷€g€UsUsg€s÷€˜–€Éj€¤Ë€Œa€˜–€˜–€I> 5+Ä|j0Ô= ±²+Ä|0Ôa¨s÷€g€s÷€Œa€= s÷€˜–€Us€,€¤Ë€Œa€¤Ë€½5€s÷€Us˜–€€,€Œa€áÔ€½5€Œa€˜–€½5€ÕŸ€Œa€s÷€Œa€€,€Éj€Éj€a¨s÷€ô$YçïçïáÔ€€,€s÷€Œa€€,€s÷€g€I>g€¤Ë€Œa€˜–€½5€¤Ë€¤Ë€ô$7777BUFRæbÿ« fÒ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÀd0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUPUUUUPUUUUUUUUUUUUUUUð a=bÃÃ1- Ž=bUÌ$øY±€½5$øÉj€¤Ë€€,€€,€Œa€±€Éj€áÔ€áÔ€çïÕŸ€½5€ô$ÕŸ€çïYçïçïÉj€Œa€Œa€Us$Ÿjj±²~7 €…‚7 €= I>I>= a¨a¨a¨Œa€¤Ë€Éj€˜–€s÷€a¨g€Us= $Ÿj 5±²}ú—ú—‚±²| 5a¨Œa€±€±€½5€½5€s÷€½5€ÕŸ€ô$Yô$ô$ÕŸ€˜–€¤Ë€g€Us˜–€€,€a¨s÷€˜–€áÔ1-1-UÌ=bI—=bÃÃà Ž$ø$ø$ø=bÃô$ô$YY±€a¨Uss÷€s÷€½5€ÕŸ€½5€Éj€±€Œa€±€¤Ë€±€˜–€s÷€Œa€±€7777BUFR&bÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒÂUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^÷½B„!B„!B„!„!B„!B„!CÆ1ŒcÆ1ŒcÆ1Œd!B„!B„!B…)JP‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUUUUUUUUUUUUUUTUUUUUUð `Éj€±€±€€,€a¨= 7 €…s€…‚±²}ú—‚7 € 5+Ä+Ä+Ä+Ä+Ä|I>Us0Ô0Ô$Ÿ 5 5= +Ä~7 ú—€…‚7 €…ƒ+Ä|$Ÿ= Us$Ÿg€I>= a¨a¨±€˜–€Œa€a¨˜–€€,€I>j+Ä~7 ú—‚7 €js÷€ÕŸ$øÃÕŸ€áÔ€±€áÔ$øUÌbbÃô$ Žô$±€½5€½5€¤Ë€¤Ë€Œa€g€s÷€±€çïçï Žçïs÷€s÷€¤ËY ŽçïYÕŸ€s÷€Œa€a¨a¨0Ôj0Ô 5±²|Uss÷ ŽUÌ1-ô$çïÃ$øY=bUÌI—UÌ$ø1-Ãçï½5€˜–€¤Ë€s÷€g€a¨77775BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUTUUUUUUUUUUUUPUUUUUUUð `= Usg€g€g€s÷€$Ÿ0ÔI>€,€€,€€,€€,€s÷€Usa¨I>= j7 ‚7 ú—ú—€…‚7 ‚±²|$ŸI>I>Us= jUs0Ô0Ô0Ô$Ÿ0ÔI>= s÷€˜–€j±²~7 €…€…€…€…ú—ú—‚7 ‚7 ú—€ 5j$Ÿ 5 5j$Ÿ$Ÿ$Ÿ$Ÿj±²}ú—ú—ú—€ 5= Us0Ô0Ôjj 5$Ÿ= I>Usa¨a¨ja¨Us$ŸUss÷€$Ÿ+Ä+Ä~7 €0Ô0Ô0Ô= $Ÿ 5j= ja¨s÷€UsI>= = 5j 5 50Ô 5j$Ÿ= g€s÷€s÷€I>a¨a¨7777$BUFR¦bÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!RLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò,0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýàY$øÈ)2à˜–‚“. #`€,ÏÞ?xã`Œa‚²?xã`gÂUÌÈ Œa‚²Æ#`Œa‚² ‰h&% ˜–‚“. L¸&% ¤Ë‚1†È gŸ |(ã`[Ÿ È ¤Ë‚² ‰h&% ¤Ë‚Ä ÓX2Z Éj‚Ä –¨2Z Ûºnè –¨2Z ÕŸƒ%ª –¨2Z ÛºV~ » 9ûÀÛºV~B@6î€ÕŸƒnè » = ÛºŸ¼ » 9ûÀÉjÏÞW0 5 5n6Ið’||(ýà€,Ÿ W0ã`[UÌW0O€[n6Ð 'ÀI>$ø†  50ÔÃP†  @a¨Ðð g‚²Æ)2à¤Ë‚“. &% ±‚ôÖ Yø,@ ¤Ë€7777>BUFR¶bÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ò@0$’I$’I$’JI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹[\ÈS RØ×>”é[\ÈS RØ×Â2+k€" c¡*[çÂ2+k„C!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ýà\Ï…n6>¸Ø 'À 5O€I>²ˆ Yø-P9ûÀ^šÀ˜–I—1†ˆ„€= mÝÛº·t%ªKTÆ~ð 'À$ŸUs·Ÿ¼dpÐ'¬@C#€zÉj1-Ĭü » ýà@@mÝYèHV~ÝÐ –¨Œ0ð -ÆÀI>Y“.é¬È øPã`*¹€[€çï%ªÝÐ » ¦°)2àF0Às÷Ó.¬ü ³ð2Z X€@±I—V~¬ü Yø„€5gàReÀ¤Ë«?%ªÄ´ ™p2Z ReÀ˜–€çïÏÞÄ´ ‰hÐ&% F0À˜–I—ÄKT ÓXw@2Z ^šÀ˜–Ã1†dÆ øPð 3á@s÷1-bZé¬?x 'À 'À„€ 57777 BUFRæbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒX0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUTEQUUUPDUUUUUð `jj= 0ÔI>g€a¨a¨€,€½5€Éj€áÔ€Éj€áÔYçïYa¨= 7 ƒ+Ä| 5I>I>Œa€€,€¤Ë€g€€,€Éj€áÔ€Éj€½5€±€¤Ë€Œa€g€Usa¨a¨a¨7 €…ƒ+Ä| 5a¨€,€¤Ë€s÷€g€€,€€,€€,€¤Ë€˜–€Usa¨I>j$Ÿ+Ä| 57 €= Usj+Ä|$Ÿ= a¨I>= j= = j 5 5 5 5 5±²+Ä| 5+Ä|7 €…€…sú—sú—€…s€jg€I>I>˜–€g€s÷€˜–€a¨˜–€€,€7 €7 €…‚±²+Ä|0Ô0Ô$Ÿja¨= 0Ôg€áÔ€7777$BUFRfbÿ« fÒ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÒUUUUUTD»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»]kZÖµ­ï{Þ÷½ï{Þ÷½ï{Þ÷¾sœç9Îsœç9Îsœç9Î÷½ï{Þ÷½ï{Þ÷½ï{ß{Þ÷½ï{Þ÷½ï{Þ÷½à‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­® …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTUUUUUUTUUTUUTUUUQUEUUUUð aY±€ÕŸ ޽5€¤Ë€j$Ÿ0Ôj±²+Ä~7 ‚±²|jj0Ô0Ô$Ÿ0Ô= UsUs= = UsÕŸYô$¤Ë€¤Ë€g€jjI>I>= $Ÿ0Ô$Ÿ±²|ja¨Œa€áÔ€ô$s÷€s÷€I>0Ô7 ú—ú—€±²~±²+Ä|0Ôg€$Ÿj0Ô$Ÿ 5 5j 5±²+Ä+Ä~7 ú—€…ú—ú—‚7 ú—€…‚±²|$ŸI>I>$Ÿjj$Ÿ0ÔUsI>$Ÿ0Ô0Ôj+Ä|$Ÿa¨I>= 5 5±²| 5$Ÿa¨Éj€˜–€±€½5€ô$ÕŸ=báÔY€,€Us= j7777BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$–Ûm¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðEUUUUT@UUUUUUUUUUUUUUUUUUUUUUUUýà` 5| 5$ŸI>çï1-Ûºô$ÃÃÕŸ€ÛºY±€ÕŸ€ÕŸ€ÕŸ€UsI>0Ôj+k€ 5+kîbîbtP‚+k€ 5g€[€UsŒa€¤Ë€ÛºYYY1-ÃçïÃYÕŸ€ÕŸ€˜–€€,€s÷€Us$Ÿ 5= €,€€,€Éj€¤Ë€±€˜–€˜–€¤Ë€½5€¤Ë€ô$çïÛºÛºçïY ŽYô$ô$Éj€½5€ÕŸ€ÉjYô$Yô$ ŽçïÕŸ€ô$$øb=bÃY1- ŽÉj€Éj€±€ô$YçïÛº±€Éj€½5€çï ŽYÉj€çï$øÃ$ø ŽÛºÉj€˜–€˜–€Œa€g€ 5 5 5UsUs˜–€˜–€$Ÿ7777$ŸBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUUUUUUUTUUUUUUUUUUUUUUUUUUUUU `$ŸjZ|OX€Éj€ÉjÃô$çïô$Ûº½5€˜–€¤Ë€g€[€€,€±€Éj€çïÃÃçïÛº ŽÛºÉj€ô$ô$çïçïçïÉj€€,€OX€= = $Ÿ™HZ| 5j€,€½5€½5€çïçï½5€˜–€Éj€ô$ÃI—$ø ŽÃYÛºô$ô$Éj€½5€Éj€€,€j$Ÿ€,€Ï… Ž$ø Ž ŽYÏ…ô$Ã$ø1-Ãà ŽÏ…Éj€±€= OX€$Ÿ[€Œa€Œa€±€±€Ûº±€¤Ë€s÷€s÷€˜–€Œa€Œa€˜–€½5€Ï…YYô$çïÏ…çïô$ô$½5€¤Ë€¤Ë€Œa€¤Ë€¤Ë€˜–€±€Œa€Œa€Œa€Œa€±€˜–€½5€g€7777$ŸBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@00’I$’I$’JI$’I$’I$“m¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶Ûm·m¶Û`‹:V×D2ÇBX×>”é[\ÈS RØ×>”é[\ÈS |#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUPUUUUPUUUUTUUUUUUUUUUUUUUUUð `s÷€±€a¨I>g€+Ä~±²+Ä}ú—‚±²| 5Us½5€ÕŸ€˜–€s÷€Œa€¤Ë€½5€Œa€s÷€g€¤Ë€a¨0Ôj= = +Ä+Ä|0ÔUs˜–Ãô$áÔ€a¨g€I>¤Ë€½5€ÕŸ€ÕŸ€¤Ë€¤Ë€I>$ŸI> 5+Ä}ú—‚7 €…€…ú—‚±²|ja¨a¨g€g€Éj€˜–€a¨g€Œa€¤Ë€g€g€a¨I>= €,€ô$$øI—Ã1-±€Œa€½5€çïô$Yô$ÕŸ€Us 5$Ÿ 5ú—€…ú—‚7 € 5I>s÷€Usg€€,€s÷€ŒaY$øbUÌ=bÃY ŽÕŸ€±€ÕŸ€½5€a¨g€I>UsI>s÷€çïáÔ€7777$ŸBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@H0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTUUUUUUUUUQUUUUUUUUUUPUUUð `Éj€±€˜–€Œa€Œa€s÷€€,€Us= 0Ô$Ÿ+Ä+Ä~±²~7 € 5±²~±²~7 ‚7 €I>jjI>Uss÷€I>a¨$øI—ÕŸ€ÕŸ€áÔ€áÔ€¤Ë€s÷€˜–€7 ‚±²~7 ‚7 €j$Ÿ= Usa¨s÷€€,€ô$Y$ø=b$øÉj€€,€a¨g€ 5±²|+Ä}€…‚7 €jI>g€Œa€a¨€,€s÷€¤Ë€¤Ë ŽÕŸ€ô$áÔ€ô$ Žô$ô$1-1-1-ç€a¨= g€Œa€áÔ€±€Œa€€,€˜–€s÷€Œa€½5€½5€±€¤Ë€€,€Us0Ô$Ÿ±²}€…‚7 €= 5 5a¨±€ô$$ø½5€½5€áÔ€çï$øUÌ1-I—7777$ŸBUFRöbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@\@"""""""""""#333333333334DDDDDDDDDDDEUUUUwwwwwwˆˆ€‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸D2ÇBX×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUPUUPUQ@UUTUUUUUð a=btPÉñY€…n6ÃYÕŸ€Éj€±€¤Ë€¤Ë€½5€áÔ$øô$ÕŸ€ÕŸ€Éj€áÔ€ÕŸ€çïÃçï±€Éj€¤Ë€a¨€,€g€±²~7 ú—ú—‚7 € 50Ô0Ô= g€= $Ÿj0Ô= €,€UsŒa€˜–€±ÃÉj€g€€,€0ÔUs+Ä~±²|jI>jj 50Ô 5 5±²+Ä|I>$Ÿj 5a¨±²|s÷€Us±²}€…ú—ú—€ 50Ôg€¤Ë€±€g€0Ô 5= g€s÷€I>$Ÿj7 €…ss€…s€Œasú—€jj˜–€g€I>Usa¨g€I>= ±€Usg€g€Œa€g€Œa€g€I>7777jBUFR&bÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓBUUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷½ï{ÀB„!B„!B„"„!B„!B„!CÆ1ŒcÆ1ŒcÆ1Œd!B„!@ŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUTUEUTUUUUUUUUUUUUUUð `a¨±$øbn6YáÔYô$ Ž=bbtP˜ï½Ž±Y$øáÔ€çïa¨= 0Ô 5j= s÷€½5YçïÉj€½5€˜–€a¨€,€˜–€€,€Éj€ÕŸ€½5€˜–Ø–€0Ô 5jj+Ä~±²| 5I>I>0Ô 5+Ä|$Ÿ0ÔI>Us0Ô0Ô7 ‚±²}ú—‚7 ‚7 € 5g€çïÕŸ€¤Ë€= I>g€0Ô= I>˜–€˜–€çï±€a¨$ŸI>j 5j$Ÿ 5 5$Ÿ€, Ž=bÉj€±€Éj€g€a¨a¨a¨áÔ€ÕŸ€¤Ë€˜–€a¨a¨Usa¨a¨±€a¨$Ÿ$Ÿs÷Yb±Y€…UÌI—1-7777²|BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUU@UEUUUUUUUð a$øÃ=bŒº½Ž½Ž½Ž½Ž‚²¥$¥$±Y˜ïŒºbÃ$ø1-I—$øÃYÃô$à Žô$$ø Ž$ø ŽáÔ€ÕŸ€áÔ€áÔ€áÔ€˜–€I>= UsŒa€ÕŸ ŽI—1-1-çï½5€½5€ô$Y1-UÌI—$ø=bÃY½5€¤Ë€€,€Us$Ÿ 5jUs€,€Éj ŽÕŸ€Œa€˜–€˜–€g€s÷€¤Ë€ÕŸ€ô$ô$¤Ë€€,€a¨I>0Ô±²}ú—‚7 ú—€Œa€jj 5I> 5+Ä|UsÉj€¤Ë€Éj€áÔ€áÔY$øáÔ€Éj€¤Ë€±€Œa€Œa€½5€áÔ ŽŒºÃáÔ€½5€±€Éj€ÕŸÃô$½5€Œa€Œa€7777Ë€BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€(0$’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹[\ÈS [çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPð `¤Ë€€,€a¨I>$Ÿ 5= ½51-=b1- Žô$1-ô$=b=b1-I—n6tPtPI—1-Ã Ž ŽçïáÔ€ÕŸ€çïY=bÃáÔ€±€Éj€çïYô$ÃÃçïçïÉj€½5€áÔ€s÷€0Ô 5$Ÿ0Ô= €,€¤Ë€¤Ë€±€€,€¤Ë€çïÕŸ€˜–€¤Ë€€,€±$ø1-tPI—áÔ€ÕŸ€ÕŸ€çïáÔ€Éj€±€½5€ÉjÃI—I—$ø$øçïa¨˜–€Éj€¤Ë€Éj Ž1-1-=b$ø1-1-$øYáÔ€ÕŸ€½5Y Ž1-=b$øY½5€= j 5$ŸI>a¨0ÔUs0Ô= Usj+Ä~±²~7 ‚7 ‚7 ‚±²|7777Ë€BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUUUAUUUUUUUUUUUUUUUUUUUUUUUUUUýàc| 5 5j| 5 50ÔÕŸ€ô$ÛºÉj€ÕŸ€Éj€˜–€˜–€j 5¥}~+k€0Ô[€Éj€s÷€Us= j0ÔI>I>€,€çïô$ÕŸ€Éj€¤Ë€s÷€ÕŸ€±€Œa€½5€¤Ë€Éj€˜–€Éj€ÕŸ€ÕŸ€±€[€[€[€g€€,€Œa€±€ô$çï±€±€ÛºÉj€¤Ë€Œa€€,€˜–€½5€ÕŸ€ÛºY1-I— ŽÛº½5€˜–€¤Ë€Œa€¤Ë€ÉjÃÃ1-1-$øÃÃÃYô$Éj€Éj€Éj€ÕŸ€½5€Éj€ÕŸ€Éj€ÛºÉj€Éj€ÛºY ŽI—b1-UÌ1-$ø=bI—b=bUÌ=b$ø=bI—UÌI—ÃÃô$Y7777Ë€BUFR¶bÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€T0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’Km¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Êt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@)2à]Ÿ c º<˨1—Pf;àÌwÁC|‚n28¡ ~ð\À*¹€LK@Ï…1†Ä´ÆÈàýà0Ô[€ÃPèHÑB ,Žø+|Ð)2àŒaY²Ð?x øP\À#`@@s÷€·n6·tIðdp 'ÀO€ 5a¨zÄÈ&% z$øŸ ÏÞÜl28“à ®`9ûÀŒaI—nèc õˆ q°ã`w@OX€ž±=bc B@ýà6î€g€υ1-bZŸ¼Æ q°Ö w@6î€Ï…bZ¸Ø ‰hýà@@€,à @ÝÐ#`I>¡¾A1-IðÄ´¡ Èà C#€Œa1-bZÝÆÈà!‘À6î€mÝYIð ò 'Àð C#€Œa Ž7777bBUFR&bÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó‚UUUUUUUUUUUUUUUUUUUU]kZÖµ­kZÖµ­kZÖµ­ï{Þ÷½ï{Þ÷½ï{Þ÷°„!B„!B„!BB„!B„!B„!ŒcÆ0Šˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUTUUUUUUUUPð a ŽI—1-=b$ø1-=bI—bŒºb$ø$øI—=bI—1-ŒºÕøÕø±Y€…UÌ=bÉj€Œa€s÷€Usg€Œa€ŒaYÕŸ€½5€s÷€a¨a¨Usg€s÷€s÷€a¨I>0Ôa¨I> 5j= = 0Ô= 0ÔI>Us€,€s÷€Us= I>I>0Ô0Ô$ŸI>Us= ¤Ë€½5€ÕŸ€ô$ ޽5€I>j= $ŸjI>I>$Ÿ 50Ô 5 5±²| 5g€çï$ø½Ž½ŽbUÌ$ø1-çïáÔYY Ž€…½ŽI—ÕŸ€ÕŸ€ÕŸ€€,€Œa€½5€Éj€Éj€áÔ€çïYYÕŸ€±€g€j±²~7 ‚±²+Ä|0Ôs÷€7777²|BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀ0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUUUUUUUUUUUUUUUUUUTð `˜–€˜–€±€ÕŸ€Œa€½5€±€±€½5€±€¤Ë€˜–€s÷€I>= 0Ô 57 ‚7 ƒ+Ä|ŒaÃI—$øÉjUÌ=bô$1-UÌUÌI—tPbI—n6¥$I—Ãô$ÕŸ€±€˜–€½5Y$øI—½5€±€s÷€0Ô= I>g€Œa€ÕŸ¥$±YI—$øáÔÃYÉj€s÷€I> 5j= g€˜–€€,€g€UsI>I>€,$øÕŸ€ÕŸ€a¨±€g€= = 5±²}ss€Œas€…€js÷€Œa€s÷€I>I>a¨$Ÿ$Ÿ$ŸI>€,€Usj0Ô= $Ÿ7 ƒ+Ä~7 ú—€…‚7 ‚7 €j 5±²+Ä|jjj7777,€BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀ$0I$’I$’I$”’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUU@UUUU@UUUTUUUTUUUUUUUUUUUð `I>I>I>a¨= 50Ô= $Ÿ+Ä}ú—€…ú—€I>±€ÕŸ€Œa€UsI>UsI>I>a¨€,€½5€Éj€çïa¨a¨g€g€j±²~7 ‚7 ‚±²|0Ô€,€¤Ë€Œa€I>I>a¨ 5jj0Ô= a¨a¨Us0Ô+Ä+Ä~±²~±²}ú—‚7 €a¨€,€˜–€g€a¨Usg€s÷€s÷€I>a¨s÷€I>0Ô0Ô= j+Ä+Ä~±²+Ä~7 € 5I>½5€¤Ë€I>I>g€I>= j$Ÿg€Usg€I>Us= 0ÔI>= $Ÿj= I>Œa€½5€ô$çïUs$Ÿ$Ÿ$ŸjUsa¨˜–€˜–€½5€g€a¨Usg€7777,€BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀ<0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUT@UUUUUUUUUUUUð `Éj€s÷€˜–€€,€s÷€Œa€½5€0Ô0Ô= jjj0ÔUs0Ôa¨€,€€,€Œa€g€= Us0ÔUsÉj€±€˜–€g€˜–€¤Ë€¤Ë€˜–€Éj€ÕŸ€0Ô= = I>Œa1-ŒºI—tPUÌb=bb1-ÕŸ€áÔ€áÔYn6n6I—Y½5€Éj€¤Ë€½5€±€±€½5€Éj€˜–€g€$Ÿ$Ÿ$Ÿ+Ä|+Ä~±²~±²~7 €$Ÿg€a¨€,€= I>Us= a¨a¨I>Us½5tPâ-±Y$ø1-=bn6b$ø ŽYô$I—²½Ž‚ çUÌ ŽYô$ô$ÕŸ½Ž‚V%Ê‚úð‚½ç‚½Ž±Y˜ï˜ï˜ï±Yâ-ÉÀ…€7777,€BUFRÆbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀP0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$¶Ûm¶Ûm¶ÐŠ•-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Ж¹ðŒ§JÚà†B˜è[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@&% `çï¤Ë€˜–€±€·$øYà ŽC|=btP=bYÃP˜–€€,€¤Ë€g€˜–€·çïÃPg€C#€jjj 5j0Ôg€±€Ûºô$ç€C#€jj[€s÷€˜–€·±€·˜–€¤Ë€€,€€,€ 5$Ÿ0Ô6î€C#€C#€s÷€·Œa€C#€C#€g€s÷€Ûº$ø÷·˜–€ÃPYC|€Œa€0Ô$Ÿ$Ÿ 50Ô$Ÿ0ÔC#€g€¤Ë€¤Ë€±1-$ø˜–€˜–€g€g€s÷ Ž¤Ë€·çï6î€g€OX€Œa€Ï…±Y‚%Qht‚P ‚=»Ü½Ž½ŽtPh[æC|1-˜ïÏÞÛº·˜–€ÛºÏ…çïYO±ÏÞô}é7777±YBUFRÆbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀd0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð b çîb‚ çb=b1-ÃY$øn6â-˜ï€Œa€UsI>UsUsI>a¨±bŒº ŽÕŸ€áÔ ŽI—$øáÔ€ÕŸ€áÔ€ô$ô$YÃ=b Ž= I>= I>I>g€s÷€±€ÕŸ€Éj ŽUÌäˀs÷€$Ÿ0Ôa¨±€±€˜–€s÷€s÷€Uss÷€€,€˜–€ÕŸ€ÕŸI—ô$ÕŸ ŽY½5€çïŒa€¤Ë€g€€,€˜–€½5€çïÃ=bŒºI—b˜ïŒºÕøÕøtP=bÕŸ€ô$áÔ€áÔ€áÔ€áÔ€½5€¤Ë€˜–€Œa€çïI—Us0ÔUsUsI>= I>a¨€,€€,€Œa€s÷€0ÔI>I>s÷€s÷€Usj= ±UÌ7777±YBUFR&bÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÂUUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷½ïx!B„!B„!BB„!B„!B„1ŒcÆ1ŒcÆ1ŒcÈB„!B„!@Šc¡*[çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUEUUUUUUUUð atPîbâ-$øÕŸ€˜–€Œa€˜–€˜–€½5€çïô$$ø=bUÌn6tP€ô$¤Ë€a¨a¨a¨I>±€ô$ ŽY½5€s÷€s÷€a¨I>Usa¨g€I>0Ô$Ÿj±²}ú—ú—ú—‚±²|= s÷€˜–€s÷€I>a¨s÷€Us= I>s÷€s÷€a¨áÔYn6=bÕŸ€s÷€g Ž ŽÕŸ€çïY1-áÔ€Éj€Œa€g€UsI>g€¤Ë€Éj€Éj€±€Éj€ÕŸ€¤Ë€¤Ë€I>I> 5+Ä|jg€Éj€ÕŸ€Éj€€,€€,€g€€,€s÷€Usa¨I> 5$Ÿ0Ôj= $Ÿ0ÔI> 5±²|I>s÷€€,€I>UsI>0Ô= Us€,€g€Uss÷€Éj€7777²|BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó0’I$’I$’II$’I$’I$“m¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶Ûm¶í¶Û`‹:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUPQU@UQUUPUUUUUUUTUUUUUUUð a Ž=bY$øÃçï±²~±²~7 ‚±²~±²|7 ‚±²~±²+Ä~±²~±²|±²| 5$Ÿ+Ä|+Ä+Ä~7 ‚±²~7 ‚±²~7 €= s÷€g€$Ÿj±²~±²~7 ‚±²| 5 5 5$Ÿ 5 5+Ä| 5j½5ÃÃI—Éj€j0Ô±²~±²|jj= g€g€Usg€¤Ë€± Ž$ø1-áÔ€= $Ÿ= = 50Ôj0Ôj$Ÿ0Ô$Ÿ±²+Ä|$Ÿ$Ÿa¨ÕŸ$øÃYÉj€±€±€½5€Éj€s÷€±€Éj€¤Ë€˜–€g€s÷€Œa€½5€€,€˜–€€,€s÷€áÔ€çïÃ=bñ€7777ÔBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó,0’I$’I$’I)$’I$’I$’m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡*[çÂ2+k€C!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUU@UUUUUUUUUUUUUUUUUUUð `s÷€¤Ë€g€՟YÕŸ€±€áÔ Ž€…˜ïÉñYtPUÌ=b=bI—ÃI—UÌ1-g€$Ÿ= j0Ô= 50ÔUs¤Ë€€,€g€a¨= $Ÿ0Ô0Ô0Ôg€€,€a¨Us$Ÿj$Ÿ+Ä+Ä+Ä| 5 5$Ÿ0Ô$Ÿ$Ÿ$Ÿj$Ÿj0ÔI>s÷€€,€s÷€Œa€€,€g€a¨I>a¨€,€¤Ë€½5€Œa€ÕŸY¤Ë€ô$a¨0Ôa¨UsØŒºŒºtPn6ÕŸ€€,€Œa€s÷€g€€,€½5€çïáÔ€±€€,€g€s÷Y½Žbô$=bn6ô}1†Œº€Œa€= 0Ô$Ÿ= 0ÔI>= I>Us= Usa¨7777ÔBUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@0I$’I$’I$”’I$’I$’I6Ûm¶Ûm¶ÛnI$’I$’I$–Ûm¶Ûm¶ÛmÛm¶Û`‹pd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUAUUUUUUQUUUUUUUð `½5€= = = a¨ÕŸYô$¤Ë€Œa€a¨= 0Ô$Ÿ$Ÿ= I>a¨UsUsg€s÷€g€= I>0Ô0Ô= a¨½5€s÷€˜–€€,€Usj 5jjjjjj0Ô0Ô= = 0Ôj 5+Ä+Ä| 5jjjj 5$Ÿ$Ÿ$Ÿjj0Ô0Ô0Ôj0Ô0Ô= j+Ä+Ä|+Ä| 5+Ä+Ä|+Ä+Ä|jj 5j+Ä| 5$ŸI>$Ÿjj$Ÿ+Ä|jj$Ÿ= I>g€Œa€Éj€áÔ€áÔ€a¨I>0Ô= a¨½51-ô$Éj€s÷€I>a¨Œa€7777ÔBUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓX0$’I$’I$’RI$’I$’I6Ûm¶Ûm¶ÛnI$’I$’I$–Ûm¶Ûm¶ÛmÛ`Š×>”é[\ c¡*[çÂ2+k€C!Lt%sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUTUð `a¨˜–€€,€˜–€¤Ë€¤Ë€áÔn6±YÕøŒº€çï1-Ã1-1-=b1-YŒa€a¨ 5 5+Ä|j 5j= 0Ô= $Ÿ 5$ŸI>˜–UÌ€…À,€UsŒa€Éj€Éj€½5€Éj€çïI—=bn6¥$b ŽáÔ€çïÕŸYáÔ€ÕŸ€½5€s÷€g€Éj€ô$çïçï½5€½5€½5€±€½5€¤Ë€¤Ë€Éj€¤Ë€Usg€Œa€Œa€Éj€±€±€½5€˜–€€,€UsUsUsg€I>a¨€,€€,€€,€€,€½5€çïÉj€a¨7 ú—‚±²|Us±²~±²|$Ÿ7 ‚±²| 5+Ä~±²~7 €¤Ë€ô$Y˜–€$Ÿ±²}s€…€…€7777ÔBUFR&bÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓUUUUUUUUUUUUUUU]ï{Þ÷½ï{Þ÷½ï|ç9Îsœç9Îsœç9Îs½ï{Þ÷½ï{Þ÷½ï{Þ€„!B„!B„!B!B„!B„ ŠS RØ×>”é[\ c¡*[çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUU@UUUUPUUUUU@UUU@PUUð b7 €js÷€s÷€a¨s÷€€,€Œa€˜–€½5€ÕŸYáÔ€¤Ë€g€€,UÌ€,€a¨+Ä|$ŸŒa€˜–€= 0Ôa¨g€Usg€½5€çïçïçïYçï€,€= j±²}ú—ú—ú—€$Ÿg€áÔ€áÔ€çïa¨s÷€Œa€s÷€g€Éj€Éj€Éj€€,€I>ŒaY$ø$øÉj€0Ô±²~±²|0Ôs÷€ç€g€0Ô0Ô0Ô0ÔI>UsUsa¨ÕŸ€…ÉÃ1-áÔ€g€= ±²}ú—ú—ú—€0ÔI>Us€,€UsUs€,€€,€€,€½5€çïäˀçïŒa€±²+Ä}s€…sú—‚±²| 5+Ä+Ä|I>UsUsUsÕŸ€˜–€Éj€7777²|BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@ 0’I$’I$’I)$’I$’I$’m¶Ûm¶Ûm¶ä’I$’I$’Im¶Ûm¶Ûm¶Ý¶Û`‹)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS [çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTTU@UUUUUUUUUUUUPUUUUUUUð `±€€,€¤Ë€Œa€I>Us$Ÿ±²}€…€…€…€ 5j±²~±²}ú—ú—ƒ+Ä+Ä+Ä|j¤Ë€¤Ë€˜–€€,€˜–€Us±²}ú—ú—€…ú—‚±²+Ä~7 €ú—€…s€…ú—‚7 ú—ú—ƒ+Ä|I>s÷€˜–€çïg€s÷€˜–€±€±€±€g€Us$Ÿ 5$Ÿ0Ô$ŸI>$Ÿ$Ÿ0ÔUsa¨g€= 0Ô= €,€˜–€ô$çïY ŽÕŸ€Œa€s÷€I>= a¨€,€€,€s÷€€,€€,€½5€½5€½5€€,€s÷€Us€…‚±²|€,€= Us= 50Ô0ÔjI>I>I>s÷€= 0Ôa¨Œa€áÔ$øYYáÔ1-çïYbI—€,€7777²BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@$0I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶Ûm¶ÐŠ•-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èRØ×>”é[\ c¡*[çÂ2+k€C!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUEUUUUUUUUUUUUUUUUUUUUUUUUUUUð `g€çïUs0Ôj 5 5$Ÿ+Ä|jj= g€a¨€,€a¨Œa€˜–€Œa€±€g€= UsUsI>a¨UsI>0Ô$Ÿ 5j$Ÿ 5Œa€jŒa€¤Ë€˜–€Éj€s÷€I>$Ÿ= $Ÿj0ÔjUsa¨UsI>s÷€Éj€Éj€s÷€ÕŸ€ô$ÕŸ€= 0Ô0Ô= I>a¨0Ô= Usj$Ÿ0Ô0Ôj 50Ô= = 5¤Ë€Œa€g€Œa€€,€Us0Ô 5$Ÿ 5= j= Us$Ÿ0Ô$Ÿj+Ä~7 €…€…ú—‚±²| 5I>a¨s÷€I>= = = $Ÿ0ÔUsa¨a¨0ÔUsa¨½5$ø7777²BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@80I$’I$’I$”’I$’I$’I6Ûm¶Ûm¶ÛnI$’I$’I$–Ûm¶Ûm¶ÛmÛm¶Û`‹pd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS SÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUQUUUUUUUUUUUUUPUUUUUU@UUð a1-=b=b$ø=b1-bäˀ0ÔI>I>$Ÿ0Ô$Ÿa¨$Ÿ$Ÿ$Ÿa¨˜–€s÷€g€I>$Ÿ±²| 5j€,€˜–€˜–€¤Ë€s÷€˜–€g€˜–€Éj€áÔ€Éj€€,€¤Ë€€,€I>a¨¤Ë€s÷€jI>$Ÿ$ŸUss÷€a¨= g€g€՟€¤Ë€I>Us$Ÿj$Ÿ$Ÿ$Ÿs÷€Us˜–€€,€a¨g€a¨s÷€a¨$Ÿ0Ôj$Ÿ0Ôú—‚7 ƒ+Ä|$ŸUsŒa€€,€0ÔÕŸ€±€ÕŸ€g€€,€½5€Éj€±€s÷€s÷€Us€,€˜–€a¨I>j±²|$Ÿ= s÷€s÷€çïg€՟€±ú—ƒ+Ä~±²|0ÔUs= = a¨$Ÿ 57777²BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@P0 $’I$’I$’’I$’I$’I&Ûm¶Ûm¶ÛmÉ$’I$’I$’Ûm¶Ûm¶Ûm»`ŠçÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆٣díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUU@UUUUUUUUUUUEUUU@UUð `$ŸI> 5 5 5+Ä+Ä~±²~7 ú—€ 5= €,€s÷€I>UsUsI>0Ôs÷€a¨±YáÔ€s÷€ÕŸ€çïŒa€= j+Ä}ssú—€I>s÷€s÷€= I>I>Us˜–€˜–€½5€€,€€,€€,€€,€Éj€Éj€¤Ë€= ±²|+Ä| 5s÷€ÉjY€,€0Ô0Ôg€0Ô 5g€= g€ 5ja¨½5€áÔ€çï Ž˜–€¤Ë€Éj€±€˜–€€,€Usj$Ÿ 5+Ä|= = 0Ô= j 5j$Ÿj$Ÿ$Ÿ 5 5$Ÿ±²}ú—‚±²}€…€…‚±²~7 €…s‚7 ú—€…ƒ+Ä~7 ƒ+Ä| 5= $Ÿ0Ô0Ô€,€s÷€s÷€7777²BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@h0$’I$’I$’JI$’I$’I$›m¶Ûm¶Ûm·$’I$’I$’Km¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡*[çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUEUUUUUUUUUUUUUUPUUEUUPUUUUð `áÔ€ÕŸ€€,€Us0Ô+Ä|jj 5j0ÔI>Usg€¤Ë ŽáÔI—Yô$±€I>Uss÷€a¨s÷€˜–€€,€€,€g€a¨= s÷€€,€˜–€˜–€˜–€€,€˜–€áÔ€±€¤Ë€¤Ë€˜–€±€Œa€s÷€€,€˜–€¤Ë€Éj€Usa¨g€Us0Ô 5Usg€0Ôs÷€çïYa¨ 5+Ä+Ä|$Ÿ˜–YI—s÷€= +Ä|+Ä|j= ±²|j0ÔI>Uss÷€$Ÿ+Ä| 5= ÃtPb 5+Ä+Ä}€…‚±²~±²~7 ‚7 ƒ+Ä+Ä|j$Ÿa¨ÕŸ$øÕŸ€I>Usg€՟€±€ô$a¨j+Ä+Ä| 5+Ä|7777²BUFR&bÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓBUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷¼„!B„!B„!„!B„!B„!cÆ1ŒcÆ1ŒcÆ1„!B„!B„!B”¥)JP‹N•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜ê[çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUATDUUUUUUUUUUUUUUUPUUUUUUð b±²+Ä|jjj0Ôg€ 5±²+Ä|Usg€I>±²+Ä~7 ‚±²|a¨0Ô7 €+Ä~±²+Ä~±²+Ä| 5±²|$Ÿa¨˜–€¤Ë€¤Ë€g€I>g€= g€g€a¨I>= 0Ô$Ÿs÷$ø=b$ø1-±€Œa€€,€˜–€áÔ€Éj‚7 ‚±²|$ŸI> 5j= = ±€˜–€= s÷€I>0Ô$Ÿs÷€¤Ë€= UsŒa€ô$$ø¤Ë€Œa€Usa¨ja¨I>= = 5$Ÿ0Ô½5€Œa€= jŒaƒ+Ä|Œa€€,€I>g€I>$ŸUsŒa€I>0ÔI>Œa€g€Œa€€,€Œa€˜–€g€€,€a¨±²|$Ÿ+Ä|= €,€½5€½5€7777²|BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€0I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶Û’I$’I$’I%¶Ûm¶Ûm¶ÐŠ•-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUTPPUUUUTUUUUUUUUUð `g€Œa€s÷€s÷€Œa€€,€g€€,€˜–€Œa€a¨a¨g€a¨€,€= Us$Ÿ0Ô$Ÿa¨g€0Ôj0ÔUs= I>= = = Usa¨ ŽçïI—ÕŸ€€,€Œa‚±²}ss€Œa€…ƒ+Ä}€…€…ƒ+Ä|j 5+Ä}€…ss€…€…€…‚7 ‚7 ƒ+Ä|I>¤Ë€…‚±²|a¨±€g€I> 5I>0ÔUs0ÔjI>a¨I>= j= g€$Ÿj±²}€…€j0Ôjs÷€Éj€Œa€Œa€Œa€½5€Œa€˜–€Éj€s÷€UsÃYáÔ€Œaƒ+Ä|Éj€Éj€s÷€g€€,€˜–€˜–€I>0ÔjjI>a¨$Ÿg€= 0Ô$Ÿ 5€,€½5€±€7777ÔBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€,0 $’I$’I$’’I$’I$’I&Ûm¶Ûm¶ÛmÉ$’I$’I$’Ûm¶Ûm¶Ûm»m¶Û`‹k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸2ÇBT¶5Ï„e:V׆B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUEUUUUUUUTA@U@PUUUQUUð `¤Ë€UsŒa€Éj€¤Ë€±€s÷€±€±€0Ô0Ôj 5 5jjj0Ô$Ÿ0ÔUs±€$Ÿú—€g€½5€ÕŸ€˜–€¤Ë€a¨I>= 0ÔI>$Ÿ0Ô0Ôa¨I>0Ô$ŸI>g€½5€Usg€j$Ÿ$Ÿ0Ô$Ÿ= $ŸUs= jú—€…ú—€…s‚±²|$Ÿ= ±²|a¨+Ä~7 €$Ÿ$Ÿ+Ä+Ä+Ä+Ä|$Ÿ 5$ŸUs= Us+Ä~7 ‚±²~±²|0Ô$Ÿ+Ä+Ä|0Ô€,€s÷€¤Ë€€,€= ±²| 5jja¨s÷€Us0Ô±²|0ÔUs€,€I>$Ÿ+Ä|0Ô= €,YṲˀg€s÷€7777ÔBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€D0$’I$’I$’RI$’I$’I$Ûm¶Ûm¶Ûm¹$’I$’I$’[m¶Ûm¶Ûm·`ŠÆ¹ðŒ§JÚàÈS [çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUEUUUT@UUUUUUUUTUEUUTð `g€Œa€g€a¨g€a¨a¨jI>I>Éj€a¨s÷‚±²|a¨˜–€Œa€a¨a¨s÷€˜–€€,€s÷€a¨I>= j±²| 5 5j+Ä~7 sƒ+Ä+Ä|$Ÿ 5j$Ÿ 5 5+Ä|±²+Ä+Ä~±²}ú—€…‚±²| 50Ôj+Ä}ú—‚±²~±²|= Us$Ÿ0Ô$Ÿ$Ÿjjj$Ÿ$Ÿ0Ô0Ôj 5 50ÔI>a¨±€½5€½5YÉj€€,€çïô$Usa¨Us= +Ä|$Ÿj7 € 5+Ä|jj7 sssú—‚±²+Ä~±²+Ä|j 5$Ÿ= I>0Ô= 5I>Œa€Œa€˜–€jjs€7777ÔBUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€\0’I$’I$’II$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’Im¶Ûm¶ÐŠ2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚàÈS RØ×>”é[\ c¡*[çÂ2+k€C!Lt%Kc\øFS¥mpd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUUUUUPPUUUUUUUUð a€…ƒ+Ä|a¨¤ËY¤Ë€g€0ÔUs 5 5$Ÿ= $Ÿ 5$ŸjjUs¤Ë€I> 5+Ä+Ä| 5 5I>a¨I>= I>UsUsI>= 50Ô$Ÿj$Ÿs÷€Us= 5= ja¨g€˜–€g€= 0Ô 5±²+Ä+Ä~±²+Ä~7 ‚7 ‚7 ‚7 ‚7 ú—ú—€…ss€Œaú—‚±²+Ä|0Ô0Ô$Ÿ+Ä+Ä~±²~7 ‚±²}ú—ú—‚±²~±²+Ä~±²| 5±²}€…sƒ+Ä|0Ô0Ô0Ôjj0ÔUsáÔYçïYáÔ€a¨s÷€a¨½5€±€I>$Ÿ0Ô$Ÿj 5$Ÿ0Ôjj$Ÿa¨Œa€$Ÿ7777ÔBUFR&bÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó‚UUUUUUUUUUUUUUUUUU]ï{Þ÷¾sœç9Îsœç9Îsœç9Þ÷½ï{Þ÷½ï{Þ÷½ï@B„!B„!B„!„!B„!B„!BÆ0‹Êt­® …1Е-sáN•µÀ!¦:¥±®|#)Ò¶¸!¦:¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTPUUUUUUUUUUUUUUUU@UUUUPð `$Ÿa¨YŒa€Us$Ÿ 5+Ä| 5±²~±²~±²}€…ú—ú—ú—€…ú—‚±²~±²~±²}ú—‚7 ƒ+Ä|±²}ú—€…€…‚±²~7 €Us0Ô= $Ÿs÷€¤Ë€çïçïçï½5€ÕŸ€€,€¤Ë€= ¤Ë€€,€¤Ë€s÷€s÷€Œa€€,€I>g€½5€ô$çï±€ô$áÔ€Éj€¤Ë€Éj ŽÕŸ€áÔ€Éj€áÔ€€,€Œa€a¨0Ô$Ÿ 5I>g€a¨Us˜–€Œa€Œa€Usg€I>a¨€,€g€UsUs€,€€,€±€ 5ú—‚7 ‚7 €…‚7 €I>˜–€ÕŸ€ÕŸ€±€Œa€€,€s÷€˜–€€,€a¨a¨$Ÿjj$Ÿj+Ä~±²|7777²|BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀ0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUU@UPUUUUUUUUUTUUUð c+Ä| 5Usa¨€,€a¨= Usa¨a¨a¨Us€,€s÷€I> 5 5= I>g€$Ÿj0Ô 50Ô$ŸI>s÷€a¨Œa€g€s÷€Œa€a¨a¨€,€g€UsUsI>UsI>I>€,€g€g€j 5 5$Ÿú—€…€…‚±²}ú—ú—‚7 ‚7 ‚±²+Ä|$Ÿ= I>€,€˜–€= ±²~7 €€,€Éj€çï¤Ë€0Ô= = I>0Ô= $Ÿ 5$Ÿ 5j$Ÿ±€a¨¤Ë€±€Œa€= €,€˜–€a¨˜–€˜–€€,€I>Us0Ô 5jUs0Ô0Ô$Ÿ7 ƒ+Ä|I>Usj= Us0Ô0Ôj$ŸI>s÷€Œa€g€Us7777Ÿ€BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀ$0’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶àж5Ï„e:V×D2ÇsáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUU@UUUEUUUUUUTU@Pð `I>= $Ÿj= I>0ÔUsg€՟=báÔYÃçïô$€,€Œa€˜–€Us 5j$Ÿ+Ä|$Ÿ±²| 5+Ä+Ä}€…‚±²}€…‚±²+Ä| 5I>I>$Ÿ 5j0Ô$Ÿ$ŸjI>= 5+Ä|jI>a¨g€g€¤Ë€çï€,€Œa€a¨s÷€€,€s÷€g€= j0Ô 5$Ÿ 5jjs÷€= ja¨±²|Usj$Ÿ±²~±²}€…ú—ú—‚7 ú—sss€…s€…ú—‚±²~7 ú—s€Œa€…ssú—‚±²+Ä| 5 5+Ä~7 ‚7 ‚±²~±²}ú—‚±²~7 ú—‚7 ‚7 ‚±²| 5+Ä}ú—€7777Ÿ€BUFRöbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀ<@3334DDDDDDDDDDDEUUUUUUUUUUUVfffffffffffgwwwwwwwpŠ …1Е-sáN•µÀ …1ÑÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUPUUUUPUUUUPUUTUUUUUUUUð b±²~7 ú—ƒ+Ä|Usa¨0Ô= ±²~7 ƒ+Ä+Ä|+Ä+Ä~±²|jjjú—€…‚7 €j= Usa¨Œa€½5€¤Ë€ÕŸYô$±€¤Ë€g€= ±²+Ä+Ä|j0Ô= I>$Ÿ0Ôa¨= 0ÔI>a¨s÷€˜–€Œa€½5€Éj€Usg€UsŒa€ 5+Ä+Ä}ss‚7 €+Ä|j0Ô 50Ô$Ÿa¨Usa¨Usa¨Œa€Éj€I>$Ÿ+Ä}ú—ƒ+Ä}€…‚±²~±²|= I>€,€Œa€˜–€€,€= 0Ô 5jI>a¨˜–€±€Éj€çï½5€ô$½5€¤Ë€s÷€= 0Ôa¨g€g€€,€= j 5s÷€½5€½5€a¨s÷€7777€€BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀX0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­® …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUTUð `I>= jj$ŸUsô$ç€a¨= 0ÔUsUss÷€a¨Usa¨a¨UsŒa€Œa€¤Ë€€,€±€€,€0Ôg€a¨= ±€˜–€$Ÿ 5jj$ŸUs= j$Ÿ 5 5 5$ŸUsI>0Ô€,€¤Ë€çïs÷€0Ô7 s€O€Œa‚7 €jI>Us= $Ÿ$Ÿj0Ô= Uss÷€I>$Ÿg€€,€UsI>= ¤Ë€¤Ë€g€a¨s÷€a¨s÷€g€I>j0ÔI>= 0Ô0Ôg€$Ÿ€,€Us˜–€±€½5€€,€I>= = j 5±²+Ä~7 ƒ+Ä~±²~7 ‚±²~±²~7 ú—‚7 ‚7 ‚7 ú—‚7 ‚±²| 5˜–€€,€Us½5€77775€BUFR&bÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÂUUUUUUUU]ï{Þ÷½ï{Þ÷½ï{Þ÷Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½ï½ï{Þ÷½ï{Þ÷½ï{ÞðB„!BŠ …1Е-sáN•µÀ …1ж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUU@UUUUUUUUUQUUUUUUUUUUUUð `0Ôg€j$Ÿ€,€˜–€s÷€I>$Ÿ$ŸUs= 0Ô= €,€Œa€g€$ŸI>+Ä~7 €…ú—‚7 ú—€Us€,€Œa€s÷€s÷€a¨g€Œa€€,€¤Ë€s÷€g€0Ô 5 5UsI> 5I>0Ô±²~7 €I>= Usa¨s÷€a¨Usa¨= Us˜–€¤Ë€g€= a¨I>UsUsj+Ä|j 5$ŸUsŒa€s÷€€,€½5€Œa€a¨s÷€g€I>g€0ÔUsUs= 0Ôj7 ‚±²|±²+Ä+Ä|jI>Œa€€,€g€Usg€€,€˜–€a¨g€s÷€I>$Ÿs÷€a¨= 5Us= I>0ÔI>g€s÷€±€s÷€= 0Ôj7777²|BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðETUUUPUUUUUQPUUUT@UUUU@UUUð `±²|0Ô 5+Ä|UsŒa€Éj€€,€I>€,€Œa€UsI>s÷€s÷€g€j 57 ‚±²+Ä~±²~7 ‚±²~±²~7 ‚7 ƒ+Ä|= ½5Y ŽáÔ€Œa€g€= 0ԤˀŒa€ÕŸ€çïÃÉj€Œa€€,€$ŸI> 57 €$Ÿ0Ô+Ä~±²~±²}ú—sss€…ƒ+Ä|I>g€j0Ô 5j 5= s÷€I> 5€,€$Ÿ+Ä|+Ä~7 ‚7 ‚±²~±²|0ÔÉj€½5€a¨¤Ë€Éj€½5€Us˜–€g€g€Éj€˜–€I>UsI>0Ô0Ôj±²~7 ‚±²~7 ú—€€,€ô$çïô$Y¤Ë€s÷€€,€s÷€Éj€Œa€s÷€= 7777÷€BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Û¶Û`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V׈S c\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUTUUUUU@UTUUUUQUUPUTUUUUUð `Usa¨¤Ë€Éj€±€€,€0Ô7 ƒ+Ä|$Ÿ€,€˜–€çï$ø= 5g€0ÔÉj€ô$Y=b˜ï¥$¥$¥$‚1†=»½Ž±Y¥$ ŽI>7 ƒ+Ä+Ä|$ŸI>Œa€½5Ãg€I>+Ä~±²+Ä+Ä|áÔÃÃô$áÔbU̽5€Us˜–€˜–€çï¤Ë€= Us 5j0Ô+Ä| 5$Ÿ0Ôg€0Ô= 0ÔUss÷€$Ÿ 5±²~7 ú—‚±²|0ÔI>I>I>= +Ä~7 € 5I>a¨Usj±²~±²|+Ä}ú—ss€O€O‚7 €$ŸI>Us½5€±€Œa€s÷€g€s÷€s÷€I>a¨YÉj$ø½5€€,€I>I>j= g€˜–€7777÷€BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó40I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUU@T@T@UUUð `Œa€€,€a¨0Ô= $Ÿ$Ÿjj= 0Ô$ŸUsŒa€UsI>= 0ÔI>˜–€˜–€½5€€,€I>g€I>0Ô$Ÿ$Ÿ0ÔI>a¨0Ô 57 ‚±²+Ä|7 €$Ÿ¤Ë€¤Ë€Œa€€,€s÷€Éj€ô$ÕŸ€I>$Ÿ= $Ÿ0Ôa¨0Ô+Ä+Ä~±²|0Ô€,€ 57 ‚±²~±²~±²~±²}ú—‚7 ƒ+Ä|j+Ä+Ä}sú—€…ú—‚7 ‚7 €…‚±²~±²|j$Ÿ±²~7 €…€…€Œa€…€±²~±²+Ä}ssssssú—sú—ƒ+Ä|a¨s÷‚±²+Ä~±²~7 ‚7 ƒ+Ä|0Ôa¨g ŽÃ Ž¤Ë€= g€UsUs0Ô0Ô7777÷€BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓH0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUQUTPETQ@QQUUð `±€¤Ë€s÷€0Ô$Ÿ0ÔŒa€Us+Ä|Œa€˜–€˜–€˜–€Œa€¤Ë€€,€I>jjjj 5$Ÿ= $ŸjjUs= g€½5€çïô$çïô$áÔ€çïÕŸ€áÔYÕŸ€a¨a¨0Ô0Ô0Ô= 0Ô0ÔI>Œa€¤Ë€ÕŸ=b$øI>½5€¤Ë€0Ô= = Uss÷€0Ôjj+Ä|j 5j$ŸjUs0Ô+Ä}ú—€…‚7 ú—€…ú—€$Ÿ$Ÿ+Ä+Ä|+Ä|jj 5 5±²| 5+Ä|±²}ú—sú—‚±²|= 0Ô0Ô 5+Ä|$Ÿj 5+Ä|0Ôj 5 50Ô= $Ÿ7777÷€BUFRæbÿ« fÓ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó\0I$’I$’I$’’I$’I$’I&Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÛmÛm¶Û`‹pC!Lt%Kc\øFS¥mpd)Ž„©lkŸÊt­®!¦:¶5Ï„e:V×D2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðU@T@QPUUPUUUUUUð `$Ÿ$Ÿj$Ÿ7 €…s€…ss€…ss€…€Œa€Œa€…ss€…ƒ+Ä|j7 €…€Œa€Œa€Œass€…€…ss‚7 ú—ú—ú—€…s‚7 ú—€…ƒ+Ä}ú—‚±²}€…sss€Œaú—€$Ÿ0Ô0Ô±²| 5+Ä+Ä}ú—€ 5+Ä|j 5 5+Ä~7 €…s€Œas€…€…ƒ+Ä|$ŸUsUsjú—€+Ä| 5I>€,€€,€$Ÿjú—ú—s€O€Œa€Œa‚7 € 5ja¨a¨$Ÿj= = $Ÿ 5 50Ô0Ô0Ô$Ÿ$Ÿ$Ÿ0Ôj 5+Ä|0Ôa¨€,€g€s÷€UsUs7777÷€BUFR&bÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓUUUUUUUUUUUUUUUUU^sœç9Îsœï{Þ÷½ï{Þ÷½ï{Þ÷½÷½ï{Þ÷½ï{Þ÷½ï{ÞB„!B„!B„!„!B„!B„ ŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUUUUUUT@PUUUUUUUUUUUUUUUUUð `Us= I>s÷€= j$Ÿ= a¨s÷€˜–€¤Ë€a¨ 5±²~±²|g€€,€jUsI>¤Ë€I> 5jj$Ÿ= Us€, Ž ŽÉj€çïçï½5€˜–€a¨$Ÿ= +Ä|±²~±²~±²| 57 ƒ+Ä+Ä|0ÔUsŒa€€,€˜–€Œa€0Ô±²}ú—ƒ+Ä|j= ¤Ë€±€a¨g€s÷€Œa€a¨a¨= s÷€Us€,€˜–€˜–€s÷€±€çïô$Yçï½5€ÕŸ€Œa€¤Ë€±€±€ÕŸ€¤Ë€Œa€s÷€0Ô0Ô= ¤Ë€±€˜–€˜–€±€˜–€½5€˜–€˜–€˜–€Us= I>a¨g€€,€Œa€¤Ë€±€¤Ë€±€½5€±€a¨€,€±€s÷€˜–€±Y7777²|BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@ 0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUAUUDUUUUUUUUUUUUUTUUUUUUUð aÃ=b$ø Ž˜–€˜–€½5€¤Ë€±€ÕŸ€ô$=b=bô$a¨j7 ‚7 €j$Ÿs÷YI>j 5 5$Ÿ+Ä|ú—ƒ+Ä|= g€a¨Usg€a¨= s÷€½5I—1-Y¥$b$øŒº1-áÔ€ô$±€Us$Ÿa¨Œa€€,€±€¤Ë€UsI>€,€a¨$Ÿ 5a¨0Ôj0Ôs÷€Us€,€áÔ€ô$±€½5€˜–€˜–€Œa€a¨UsŒa€0ÔI> 5 5 5j+Ä+Ä|0ÔUsáÔ€½5€áÔ€$Ÿ 5$Ÿ$Ÿjja¨¤Ë€½5€˜–€a¨$Ÿ 5±²|Us±Ãô$˜–€I>€,€˜–€±€g€= jj0Ô7777 BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@$0$’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠB˜éRØ×>”é[\ c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUQUUUUUUUUUUUUUQUUUUUUUUUUUPUUð `I>Œa€¤Ë€½5€j$Ÿ+Ä|$Ÿ= UsUsI>Us$Ÿ$Ÿ0Ô0Ôg€jŒa‚7 ú—‚7 ‚7 €˜–€±€g€Us€,€€,€€,€UsUsUs˜–€a¨g€՟Ã Ž ŽYÉj€€,€Œa€€,€˜–€a¨½5$ø ŽáÔ€¤Ë€±€ÕŸ€ô$±€ÕŸ€áÔ€ô$YáÔ€¤Ë€$Ÿ+Ä|7 €$Ÿs÷€Éj€çïý5€€,€g€0Ô$Ÿ˜–€Œa€Œa€s÷€s÷€±€çïô$s÷€€,€g€= = UsŒa€¤Ë€ÕŸ€Éj€Éj€€,€g€Us= ¤Ë€€,€0Ôa¨g€s÷€˜–€±€˜–€s÷Ãa¨0Ôg€$Ÿ±²+Ä|jI>= ˜–€a¨a¨= = 7777 BUFRÆbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@80 $’I$’I$’RI$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$–Ûm¶Ûm¶Ûm»`ŠçÂ2+k€" c¡*[çÂ2+k€" c¡*|#)Ò¶¸!¦:¥±®|#)Ò¶¸D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ `= OX€s÷€OX€¤Ë€…tP˜ï€…1-ô$I—Ã1-YI—h±Y˜ï€…1-½5€½5€˜–Yg€çïÛºô}±²‚V%1†1†ô}ô}èH½Ž˜ïtP˜ï¥$Ü%Q²Y ŽY¥$‚€Þ‚‚ô}¥$tPtP€…[æ$øI—€…ÕøÉÀçïY˜–€€,€€,€g€= Ï…g€¤Ë‚V%[ætPÉÃU̱€˜–€Ï…çïYYUÌ=bÃŒa€OX€$ŸOX€s÷€½5€0Ôj 5[€Ï…±€±€Œa€OX€OX€0Ô= g€½5€¤Ë€s÷€Œa€s÷€ 5[€= $ŸI>jI>çïYUÌ[æÃ1-Ûº[€[€7777jBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@P0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇB–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUPQ@UUUUUUUUUTUUUUUUUUUUUUUð `I>½5€¤Ë€áÔ€Éj€¤Ë€I>UsI>Us0Ô$Ÿj0Ô$ŸI>j$Ÿ= I>j$Ÿ+Ä+Ä|I> 5+Ä|j$Ÿ±²~±²+Ä|$Ÿg€I>a¨= 0ÔgÂn6áÔ€ÕŸ€±€¤Ë€€,€I>0Ô 5= $Ÿ0Ô€,€±€s÷€€,€g€I>Us= s÷€€,€€,€s÷€g€UsUsjj 5 5+Ä}ú—‚±²|0Ô€,€¤Ë€Œa€I>s÷€= I>I>s÷€g€a¨¤Ë€ÕŸ€±€ÕŸ€s÷€I>Éj€Éj€¤Ë€çïáÔ€çï ŽYçïçïçïg€Usg€Œa€ÕŸ€½5€±Œº€…n6b=bçïô$Y1-à ŽYUÌUÌUÌô$¤Ë€±€7777 BUFRæbÿ« fÓ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó@d0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUEUUPEUUUUUUUUUUTUUUUð `±€g€±€áÔ€áÔU̱YîbÉÃîbîb¥$€…UÌUÌ=b$ø1-=b=bn6bI—1-½5€ÕŸ$øô$ÃÃ1-1-ô$Œa€= s÷€€,€s÷€˜–€Œa€½5€½5€ÕŸ€çï½5€¤Ë€a¨ 5$Ÿ+Ä|j= = $ŸI>I>I>= a¨$Ÿ 5+Ä~±²|j+Ä|$Ÿa¨g€Us= Us= 0Ôj= = €,€çï=bÃ$øYô$ÕŸ€áÔ€Éj€ÕŸ€Éj€çï Ž$øÕŸ€±€€,€a¨s÷€¤Ë€Éj€¤Ë1-$øÃ$øYÉj€s÷€Us 5+Ä| 5I>áÔ€Éj€±€±€½5€€,€€,€s÷€a¨s÷€¤Ë€g€s÷€g€7777 BUFR&bÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓBUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^÷½B„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œc!B„!B„!B„)JP‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUU@UUUUPU@ð `s÷€a¨0Ô0Ô= g€g€I>Us¤Ë€ô$ô$ç€= I> 5jj$Ÿj0ÔI>Œa€áÔ€ÕŸ€±€I>= 0Ô0ÔUsa¨¤Ë€Éj€ÕŸ€½5€çïáÔ€áÔ€áÔ€I>Us= Us˜–€ô$n6I—1- Žçï±€½5€Œa€±€ÕŸY Ž$øÃçïô$áÔ€ÕŸ€½5€Œa€a¨UsŒa€g€¤Ë€Éj€g€= = ±²~7 ú—‚7 ‚7 €$ŸI>I>= j0Ôa¨= UsI>= = = Œa€±€s÷€€,€0Ô= $Ÿ+Ä}ú—ú—‚±²|$ŸUs±²|ú—‚7 ú—‚7 ƒ+Ä~7 € 5€,€±€±²|= g€g€€…ú—‚±²|7777²|BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€0$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚå1ж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUU@UUUUUUUUUUDUUUU@UUUUUUUUUð `= g€Œa€¤Ë€€,€g€I>0Ô$Ÿ= I>˜–€Us0ÔUs 5+Ä+Ä~7 €€,€˜–€¤Ë€g€UsUs= g€s÷€˜–€€,€±€±€˜–€Œa€a¨I>˜–ÃÃáÔ€ÕŸ€çïÃYŒa€a¨a¨I>= = = I>= $Ÿjj$Ÿú—€7 ú—‚7 €0Ô±€ÕŸ€±€g€a¨0Ô$Ÿ$Ÿ= Uss÷€I>j= Œa€Usj±²}ú—‚7 ‚±²~±²~±²|s÷€½5€Œa€UsUsa¨UsI>UsI>€,€¤Ë€ÕŸ€ô$YÕŸ€ô$Y1-$øÃÃ$øô$Yô$çïçï½5€€,€I>I>Œa€€,€g€Œa=b7777BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€,0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUPUPUUUUUUUUUUUUUUUUUUUUUUUð a$øÉj€¤Ë€= j 5 50Ô0Ô= ±²~±²}ú—ú—‚7 ‚7 ‚7 ƒ+Ä|jj0Ôa¨0Ô 5j 5±²~7 ‚7 ƒ+Ä| 5g€€,€s÷€a¨UsUs= = = 0Ô€,€±€¤Ë€¤Ë€˜–€Œa€½5€˜–€Œa€g€g€g€g€s÷€Œa€¤Ë€g€a¨Us= = $Ÿ$ŸI>s÷€˜–€€,€Œa€¤Ë€Œa€€,€Us= I>0Ô0Ô= a¨˜–€˜–€€,€g€UsI>Us= I>Us˜–€±€€,€s÷€g€s÷€Œa€$Ÿ0Ô 5j$Ÿ= €,€½5€ô$ÕŸ€I>= $Ÿ= = 0Ô= Us½5€s÷€s÷€a¨Us0Ô$Ÿ= = 0Ô7777BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€D0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×ÈS [Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUAUUPPUUUUUUUUUUUUUð `0Ôa¨±€±€±€ÕŸ€¤Ë€$Ÿ$Ÿ 5= $ŸI>€,€¤Ë€¤Ë€Œa€¤Ë€±€˜–€s÷€= 5±²+Ä|js÷€€,€g€jj 5+Ä+Ä|jj= I>I>Œa€s÷€g€€,€j+Ä~±²}€…sƒ+Ä~±²|7 ƒ+Ä~7 ú—‚7 ‚7 ‚7 ú—‚7 ‚±²+Ä|0Ô$Ÿ0Ô+Ä~7 €…€…€…‚±²|s÷€Éj Ž Ž˜–€€,€g€€,€s÷€˜–€½5€ÕŸ=bUÌ=bÃY Žô$½5€Éj€½5€ÕŸ€Éj€çï1-€…½ŽtPà Ž$øY1-I—çïô$UÌtPbô$€,€= $Ÿ= = €,€ÕŸ€ô$çïÕŸ€±€I>Us7777BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó€X0 $’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛmÉ$’I$’I$’Ûm¶Ûm¶Ûm·`ŠçÂ2+k€d)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸΕµÀ …:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUQUUUUUUUUUUUUUUUUUTUUUUUUUUUUð `g€g€˜–€˜–€I>Éj€áÔ€Œa€Us= +Ä| 50ÔgÂYçïçï€,€jI>ja¨s÷€a¨±$ø$øÃY=bI—=bbYáÔ€ÕŸ€ô$ÕŸ€Éj€çïYYçïáÔ€˜–€ÕŸ€¤Ë€ÉjÃ=b=bn6=bYô$ Žçï ŽáÔ€çïçï±€€,€¤Ë€±€g€g€UsUs0Ô$Ÿja¨a¨$Ÿ0Ôg€a¨g€Œa€$Ÿ0Ô±²+Ä|$Ÿ 50Ôj 5 5 5= s÷€˜– Ž$øI—1-I—I—1-1-$øáÔ€çïÉj€ô$=bŒº€…€ÕŸ€ÕŸ€ÕŸY=bYn6Õø‚ çîbîbÕø±Y€…I—1-7777BUFR&bÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó‚UUUUUUUUU]ï{Þ÷½ï{Þ÷½ï{ÞùÎsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½÷½ï{Þ÷½ï{Þ÷½ï{ÞB„!BŠ!¦:¥±®|#)Ò¶¸!ÇBT¶5Ï„e:V×FB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUQUUUUUUUUTUUUU@ð aÃçïYô$YI—n6UÌ1- Ž$ø$øÃ1-btPtP1-1-$øÕŸ€½5€g€= = $Ÿ$ŸUsçï=b ޱ$ø1-$øçïUÌn6€…Õø ŽÉj€½5€€,€I> 5±²|±²|jÉj€áÔYçïÉj€¤Ë€€,€Uss÷€€,€áÔ€±€s÷€I> 5jj±²~7 ‚7 ‚7 ‚±²~±²| 5I>g€€,€˜–€s÷€¤Ë€Éj€Éj€áÔ€ô$Éj€ÕŸ€áÔ€±€áÔ€ô$ÕŸ€€,€0Ô$Ÿ+Ä~±²|0Ô˜–€¤Ë€€,€˜–€€,€€,€UsI>g€Éj€ô$ Ž1- Žô$áÔ€˜–€ 57 ‚7 €…€…ss€…ƒ+Ä| 5€,€Us7777²|BUFRbÿ« fÓ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!²LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀPB„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œd„!B„!F1ŒcÆ1ŒcÆ1ŒcÊR”¥ ŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ˜×>”é[\ c\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUU@UUUUUUUAUUUUUUð `$ŸjUsáÔ€±ÃáÔ€Éj€˜–€Œa€s÷€$Ÿ$Ÿ$Ÿ$Ÿ0Ô0Ô= I>€,€Œa€= $Ÿj 5jI>€,€Œa€Éjb1-ô$=b$øÕŸ€Éj€ÕŸ€áÔ€½5€±€±€Éj€Éj€¤Ë€±€çï±€áÔ€ÕŸ€±€Éj€áÔ€ÕŸ€½5€Œa€a¨s÷€$Ÿ0Ô±²+Ä~7 ƒ+Ä|Usg€Œa€±€€,€˜–€€,€½5€áÔ€ÕŸ ŽYYçïYÉj€½5€˜–€I>$Ÿ$ŸjI>s÷€±€Éj€€,€Œa€¤Ë€$Ÿ+Ä}ú—ss€$Ÿ+Ä~±²|j= g€Us= a¨˜–€g€€,€Éj€áÔ€ô$áÔ€€,€s÷€Œa€s÷€Us= = = j0Ô= s÷€7777€…BUFRÆbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!rLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÀP0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@,@ `s÷€6î€C#€6î€6î€[€OX€€,€ÛºÏ…·ž±g€Œa€€,€g€C#€C#€g€˜–€Œa€ž±s÷€€,€ž±Ûº Ž[æ˜ïhtPO±+ ŽÃ Žô$ ŽÃô$Ï…ž±€,€€,€Œa€OX€6î€C#€OX€C#€OX€OX€C#€OX€s÷€€,€ž±˜–€˜–€˜–€ž±ªæªæž±€,€g€[€g€[€C#€6î€6î€C#€[€g€€,€s÷€€,€s÷€€,€ž±Œa€Œa€€,€Œa€Œa€ž±·Ï…··ªæŒa€g€€,€˜–€Ï…[æ+‚ÏÞ·tÃÏ…Ï…[æ¥$O±ÃÃÛºÃP˜–€€,€Œa€6î€j[€€,€Œa€ªæž±OX€g€Œa€·7777–€BUFR&bÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓÂU\cÆ1Œg9Îsœç9Îsœç9Öµ­kZÖµ­kZÖµ­kZÞ÷½ï{Þ÷½ï{Þ÷½ï{ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷ ŠøFS¥mp˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†C RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUU@UUUUUUUUUýàa$ø Ž$øäˀUs= jîb€€,€$Ÿ±1-Ûº±€ô$[€I>0Ô˜–€˜–=b=bYb1-$øÛºÛº€,€Œa€½5€±€Éj€½5YI— Žçï Ž ŽÛº$øbI—hI—$ø Ž=bYÃçïÛº˜–€½5€ô$Éj$øhhbb ޽5€Éj€ÛºYÃçïÛº€,€¤Ë€Us= $Ÿ¥}~¥}~¥}~¥}|ú>îbîb‚+k‚+k‚¥}~+k‚¥}|0Ôg€±Y½5ÃÉj€ô$˜–€çï¤Ë€0Ôg€€,€= s÷€€,€Us€,€Us[€$ŸI>I>Us= €,€ÕŸ€˜–€s÷€s÷€g€Us$Ÿ$Ÿ 57777²|BUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS SçÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUTUUUUUUUUUU@ð ` 5$Ÿg€Œa€¤Ë€I>s÷€I>UsUsI>$ŸUs€,€€,€˜–€€,€a¨0Ô$Ÿ±²+Ä~±²~±²| 5$ŸI>s÷€˜–€˜–€€,€¤Ë€¤Ë€¤Ë€¤Ë€±€Œa€Œa€Œa€Œa€€,€s÷€€,€€,€s÷€s÷€€,€Œa€Œa€±€Éj€Éj€½5€˜–€Œa€Œa€s÷€Œa€Œa€€,€¤Ë€s÷€g€I>= 57 €…€…ú—€Œasƒ+Ä|Usg€€,€s÷€I>I>g€a¨a¨0Ô$Ÿ0Ôjú—ú—‚7 s‚±²~±²| 50Ô½5€çïáÔ€Éj€a¨UsáÔ$ø1-YÃô$$øI—YçïYçï½5€Éj€±€¤Ë€¤Ë€Œa€= j0Ô±²+Ä~7 €7777sBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQUU@UUUUUUUUUUUUUUUUUUUUUUUUUð c+Ä~±²~7 €$Ÿ7 €0ÔjI>j+Ä|0Ô$ŸUss÷€ÕŸ€Éj€çï$Ÿ7 €…€…‚±²|a¨½5€ô$ÃY±€çï±€˜–€a¨= a¨= s÷€¤Ë€±€Éj€ô$ô$¤Ë€a¨a¨g€˜–€áÔYÕŸ€Éj€áÔ€ô$çïÕŸ€¤Ë€€,€Usa¨Usa¨˜–€€,€¤Ë€áÔ€½5€½5€±€½5€ÕŸ€Éj€çïô$YçïçïçïY1-b1-Éj€¤Ë€Œa€¤Ë€¤ËYUÌ¥$tPý5 ŽÃ Ž$øÃ Ž ŽYYáÔ€áÔ€çï½5€±€¤Ë€a¨g€I>0Ô±€ô$$øn6€…UÌ1- Ž ŽYáÔ€±€ÕŸ Ž$ø7777sBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ó,0 $’I$’I$’RI$’I$’I$›m¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm·m¶Û`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€"1Е-sáN•µÀ …1Е-sáN•µÀ …1Е1®|#)Ò¶¸!¦:Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUTUUUTQUUUUUUUUUUUUUUUð a$øUÌ=b$ø1-çïÕŸ€±€±€±€çïáÔYçï±€±€áÔ€ô$ô$áÔ€Éj€±€Usg€Us7 ‚±²|Œa‚±²~7 €$ŸUs0ÔI>a¨I>= Us0Ôj 5jI> 5ú—ss€O€Os€Os‚±²~7 ‚±²+Ä|±²|j±²| 5 5±²| 5Œa€€,€˜–€Œa€€,€s÷€s÷€Uss÷€½5€ô$1-b$øáÔ€ÕŸ€áÔ Ž=b1-$ø=bbŒº€…±YŒº=bÃô$ ŽÃYáÔ$ø1-I—ô$áÔ€áÔYçïÃà ŽYô$ÕŸ€çïáÔ€ÕŸ€ÕŸ€½5€Éj€Éj€½5€ô$YUÌUÌ7777sBUFRæbÿ« fÓ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓD0’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶Ûm¶ÐŠ¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUTUUU@UUUð a=bÃÃÃ$ø=b=b=bUÌI—=b1-=b=b1-Ã$ø Ž Ž ŽáÔ€çï1-ô$YÃYÃ Ž ŽI—1-UÌ$ø$øI—YYçïçï ŽÉj€½5€½5€±€áÔ€áÔY Ž Ž Ž Ž$øI— ŽÃYô$ ŽçïÕŸ€±€±€Œa€€,€€,€Œa€Œa€½5€ÕŸ€Éj€±€Éj€Œa€0Ô€,€¤Ë€€,€Us+Ä~±²|7 ‚±²~7 s‚7 ú—€…‚±²}ú—‚7 ‚±²~±²+Ä| 5$Ÿ$Ÿ$Ÿ= I>I>s÷€Œa€0ÔI>0Ô 5$Ÿ+Ä~±²~±²~±²}ú—‚7 €˜–€ÕŸ€çïçïáÔ Ž Ž$ø$ø$ø1-Ã7777sBUFRæbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓX0’I$’I$’I%$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹)Ò¶¸!¦:¥±®|#)Ò¶¸!”ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUEUUUUUQUUUUPUUUUUUUUð a Žô$I—$ø1-YçïÕŸ€Éj€I>a¨$Ÿ¤Ë€áÔ1-=bYáÔ€çïÃçïô$ô$ô$¤Ë€€,€€,€€,€Œa€a¨= +Ä|Uss÷€½5€Éj€€,€a¨Usg€Usg€˜–€Éj€çï¤Ë€˜–€0Ô$Ÿj$ŸŒa€€,€ú—€…‚±²|0ÔŒa€s÷ƒ+Ä|$Ÿ$ŸI>g€Œa€g€Usjg€¤Ë€˜–€g€€,€UsUs0Ô$Ÿ$Ÿ±²+Ä|I> 5$ŸI>UsUsa¨Us$Ÿ0Ô0Ôj+Ä| 5a¨g‚7 ‚7 ú—‚±²}ss€ 5a¨g€€,€˜–€g€s÷€ÕŸ€áÔ€½5€s÷€áÔbn6UÌbI—1-Y½5€Œa€= 7777sBUFRfbÿ« fÓ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÓUUUUUUUUTD»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»°]ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½ï½ï{Þ÷½ï{Þ÷½ï{ÞðB„!BŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V׆B˜èJ˜×>”é[\ÈS RØÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðDAUUUUUUUUUUUUUUUUUUUU@TUUð `j+Ä|+Ä|$Ÿú—ƒ+Ä| 5+Ä|0Ô0Ô 5j= j$Ÿj 5 5jI>˜–€½5€áÔ€Éj$ø=btPI—Ãô$ÕŸ€ÕŸ€çïYY Žô$ô$YY Ž$ø=b$øÃYáÔ€çïáÔÃUÌI—1-ÃY ŽçïçïáÔ€ô$ô$Yô$ô$ô$ô$çï Ž$øYY Ž$ø$øUÌU̘ïb1-Ãô$=bô$±€€,€UsUs0Ôj±²}ú—‚±²~±²|s÷€çïÕŸ€Œa€$Ÿ±²~7 ‚7 ‚7 ‚±²| 5j±²~7 ú—€…€…€…ú—€…ú—€$Ÿ0Ô[€UsUsg€Us7777BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@0$’I$’I$’JI$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I-¶Ûm¶Ûm¶ÐŠ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS SçÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUTð `0Ô[€[€[€€,€UsUsg€s÷€Œa€€,€Œa€s÷€s÷€g€I>Usg€½5€±€±€±€±€Œa€˜–€€,€˜–€½5€¤Ë€˜–€˜–€¤Ë€¤Ë€€,€g€$Ÿj 5±²~7 € 5g€s÷€¤Ë€¤Ë€¤Ë€€,€g€Uss÷€½5YY$øçïÛºÛºçïÉj€€,€[€I>Uss÷€˜–€€,€±€ÛºÉj€ÕŸ€ÛºÛºçïYÃÛº½5€ô$ÛºÉj€Œa€s÷€˜–€s÷€I>0Ô 5Us0ÔŒa$øäˀ$Ÿ 5$Ÿ€,€˜–€€,€˜–€Éj=bUÌ1-YÛº˜–€$Ÿj$ŸI>€,€˜–€ÕŸ€Éj€Éj€½5€€,€g€˜–€€,€g€g€Us$Ÿ 5+Ä|7777UsBUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@0 $’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶ÛvÛm¶Û`‹k€C!Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„Â2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUU@TU@UUU@Uð aú—ú—s€…€…s€…‚7 ƒ+Ä~±²+Ä|Uss÷€Œa€˜–€ÕŸ€çïçïÃYY Ž ŽÉj€s÷€˜–€Œa€Œa€€,€$ŸÉj€Éj Ž1-€,€s÷€UsI>I>UsÉj€ÕŸ€ô$¤ËÃ Ž¤Ë€s÷€Œa€0Ôs÷€UsUsI>$Ÿ[€±€¤Ë€Ûº±€˜–€½5€±€ÕŸ€çï½5€€,€Us€,€= g€I>= 7 ‚7 ƒ+Ä| 5 5 5€…€Œas€…‚±²}ú—‚±²|±²|j±€I>Us0Ô±²+Ä+Ä}s€0Ôú—€Œa€ 5Us¤ËYô$ Žçïçï1-$øÕŸ€±€0Ô7 €…€…€…€…€7 €…€$Ÿ0Ôj7777UsBUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@40 $’I$’I$’RI$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUUUTUUUUUUUUUUUð `jI>Us˜–€˜–€I>0Ôjjsss‚7 ƒ+Ä|UsÛºhUÌçïô$¤Ë$øI—h1-Ãçï½5€˜–€s÷€ŒaY±€€,€0ÔI>= = I>[$øhh=b$øYÛº˜–€€,€Œa€€,€½5€Us¤Ë€€,‚7 ‚7 €…s€Œas‚±²|jUsI>Usg€0ÔI>Us[€¤Ë€±€±€±€½5€s÷€I>= $Ÿj 5±²|€,€s÷Y1-=bÉj€Ûº½5€g€g€g€g€Uss÷€g€[€Usg€g€g€±€˜–€˜–€s÷€ô$Y=b ŽÉj€Œa€[€[€[€Œa€˜–Y¤Ë€çïçï¤Ë€UsUss÷€7777UsBUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@L0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@UUT@UUUPUUUUUUUUUUUUUUUUPð ` 57 €Œa€O€Œas€…€0ÔUsUs[€s÷€s÷€[€€,€0Ô= I> 5+Ä| 57 €…€…s€Œas€…ú—€…€$ŸŒa€ô$ÕŸ€Éj€Ûºô$çïYçïYÃô$Éj€g€$Ÿ+Ä~±²}€…€…€…€Œaú—‚±²|UsÉj Ž$øçïÉj€±€¤Ë€½5€Ûº ŽYY ŽYY=b½5ÃUs$Ÿ$Ÿ0ÔI>¤Ë€Éj€ô$$øYçïÃô$ÕŸ Ž=b$ø$øÕŸÃÕŸ1-ô$±€½5€s÷€[€ 5Us˜–€Éj€çï½5€±€Éj€ÕŸ€¤Ë€Œa€±€ÕŸ€±€±€¤Ë€Éj€s÷€Us 5±²+Ä+Ä+Ä|= s÷€7777UsBUFRöbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!¢LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@`@"""""""""""#33335UUUUffffffffffffwwwwwwwwwwpŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„¾”é[\ÈS RØ×>”é[\ÈS RØ×>”èÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUTUU@ð `[€½5€g€UsUs0Ôj$Ÿ½5€¤Ë€€,€s÷€s÷€Œa€±€±€€,€Éj€±€Œa€g€I>g€՟€çïçïÛºÛº[€I>= ±$ø=b=b$ø ŽÃI—ÃÛº˜–€€,€€,€˜–€±€¤Ë€ÕŸ€ÕŸ€ÕŸ€±€˜–€¤Ë€Éj€çïô$ Ž$øô$ÛºÕŸ€ÛºÛº±€I>= s÷€g€= 0Ôs÷€ô$[æUÌŒa€Éj$ø1-¥$h$øÕŸ€Œa€¤Ë ŽÛº˜–€çï½5 ŽI—tPŒº1-ô$Ã1-Ã$øÕŸ€ô$Éj€±€±€½5€Éj€Éj€Œa€½5€±€€,ƒ+Ä~7 ú—€j[€g€s÷€g€€,€˜–€s÷€0Ô 5±²}€…€…€7777²}BUFR&bÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔBUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_{ÀB„!B„!B„"„!B„!B„!CÆ1ŒcÆ1ŒcÆ1Œd!B„!B„!B…)JP‹[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTUUUUTUUUUUUUU@UUUUUð as€…€…ú—€= ˜–€I>ú—ú—ƒ+Ä~±²~7 ‚7 ‚±²| 5g€Œa€s÷€$ŸUss÷€[‚±²+Ä}€…€…€…sss‚±²|½5€ÕŸ€ô$YÛºI>g€±€ÕŸ€g€Us±€±€¤Ë€±€¤Ë€g€= I>±²~7 ‚7 ‚7 ‚±²+Ä|jUsUsUs€,€€,€= I>[€s÷€˜–€½5€Œa€g€Us0Ô$Ÿ±²~7 ‚7 ‚7 €j0Ô[€€,€= I>€,€I>= I>$Ÿ€,€I>= 0Ô 5±²}ú—ú—‚7 s€…€0Ôg€€,€Œa€ô$$øY Žô$çïÛºçï Ž ŽÃÛºÉj ŽÛº= 5+Ä}ú—‚±²|[€77775BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô€0$’I$’I$’RI$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$–Ûm¶Ûm¶ÐŠS RØ×>”é[\Êc¡*[çÂ2+k€C!Е-sáN•µÀ …1Е-sáN•µÀ …1ж5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðEUUU@D@UUUUUUUUUUUUUUUUð `Us+Ä|¤ËU̘tPI—ÛºYÃhU̱=b=bÕŸƒ+Ä}ú—ú—‚7 ‚7 €Œasú—€= 0Ô+Ä+Ä| 5±²|+Ä| 5+Ä+Ä}€…‚7 ú—s€Œass€Œas€…ú—ss‚7 ú—‚±²|j 5 5Us= $Ÿ 5= ¤Ë€˜–€½5€€,€¤Ë€Œa€ÕŸYô$Yô$ô$Ûº¤Ë€ç€ÉjUÌ½Ž½Ž¥$Œº[æ=bçï±€Éj€ô$±€[à ŽÃŒa€Œa€¤Ë€˜–€Œa€I>[€g€I>I>0Ôj±²}€…‚7 ú—ú—‚7 ƒ+Ä|€, Ž=bI—ÃÕŸ€çïÛºçïà ŽÃ Ž7777YBUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô€,0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUQUUUUUUUUUUUð `çïŒa€[€j+Ä|= $ŸjUsŒa€UsUs€,€˜–€Éj€ÕŸ€ÕŸ€Éj€ÛºçïY Žçï Ž ŽY Ž Žô$ÛºÕŸ€Éj€ÕŸ€Ûº½5€½5€Éj€ÕŸ€ÕŸYÉj€±€Éj€Éj€ô$Y=bÃYÛºçï±€Œa€½5€Éj€±€˜–€€,€¤Ë€½5€ÕŸ€ÕŸ€ÛºÛºÉj€ÕŸ€çïô$ô$Yçïô$1-=b ŽYÕŸ€Éj€g€= $Ÿ 5+Ä| 5 5j$Ÿj$ŸI>±€Éj€˜–€½5€¤Ë€±€ÕŸ€Éj€Œa€[€[€€,€¤Ë€½5€Éj€ÕŸY1-=bhŒºUÌÕŸ€½5€ÕŸ$ø1-I—hhhI—I—ÃÃô$Y7777YBUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô€D0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUTUUUUUEUUUUUUUUUUPATð `çïÛº½5€ÕŸ€ô$à ޽5€ÕŸ€Ûº½5€çïÃ$øÕŸ€Ûº˜–€s÷€€,€˜–€ÕŸ€½5€Éj€½5€˜–€˜–€½5ÃI—I—I—1-$øÛº¤Ë€ÛºÛº1-UÌ[æI—äˀ€,€I>0Ô 5±²+Ä+Ä|s÷ ŽUÌçïI>0Ô$Ÿ 5$Ÿj= ¤Ë€€,€Œa€Usg€s÷€g€Usj= 0Ô±²|0Ôs÷Y$ø¤Ë€j 5 5j 5Us0Ô= I>Us= I>= g€¤Ë€s÷€s÷€g€±€ÕŸ€¤Ë€±€½5€±€˜–€s÷€[€s÷€Œa€€,€Us0Ôj0Ô= = 5 5+Ä+Ä|+Ä+Ä|$Ÿg€Usj+Ä|7777YBUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô€X0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ÆÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUAUUUUUUUUUUUUUUUUUUUUUUUUUUUUýàc| 5 5jI>OX€OX€OX€[€= $Ÿ 5¥}|0Ô½5€0ÔI> ŽI—ÃÉj€½5€˜–€±€ÛºÃ$ø=bI—€…€…[æ[æYÏ…€…¥$h=b=b=b=bh€… ŽY Ž1-ô$ Žô$Ûº$øÉj€¤Ë€€,€½5 Ž[æ€s÷€¤Ë€s÷€OX€s÷€ÉjO±1-Ûº±€±€g€˜–€Ï…Ï…tPO±tPÃô$1- ޱ€±€¤Ë€g€ÉjÃI—h$øçï½5€¤Ë€Œa€±€ô$ Ž1-€…[æ1-[æ€Ï…g€g€OX€I>0Ô$ŸOX€I>g€υۺ½5€Éj€Éj€Ï…Éj€˜–€ô$1-€…[æÃI—7777YBUFR&bÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô‚UUUUUUUUUUUUUUUUUUU]k{Þ÷½ï{Þ÷½ï{Þ÷½ïœç9Îsœç9Îsœç9Îp!B„!B„!B„B„!B„!B„!cÆ0‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUU@UUUUUUUUUUUUUUUUUUUUUð aÃÉj€½5€±€g€s÷€$ŸI>[€½5€çïçï½5€Éj€ÛºÕŸ€Éj€ÕŸ€ÕŸ€ô$çï¤Ë€¤Ë€€,€Œa€Éj€g€çïÉj€Œa€s÷€€,€Œa€˜–€Œa€Us+Ä~±²}ú—‚7 € 5 5$ŸI>Y€…h€…hI—I—UÌÃ=bUÌtP±Yâ-èHÕøØ–€˜–€ÛºÃ±Y¥$‚ ç²èH çht‚V%1†èHâ-èHèHâ-â-‚V%ht€…[ætP=btP€…=b½Ž‚%Q1†ô}Õø˜ïñ€çïÛº½5€Œa€Éj˜ïŒºtPh1-1-±€ÕŸ1-I—tP±YtPYÕŸ€ô$ÕŸ€˜–€ÛºŒa€½5€Œa€çï½5€77775BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÀ0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’Km¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡lkŸÊt­®ˆd)Ž„©lkžÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUEUUUUUUð `ÛºÃI—I—ÃY$ø$øÃ1-I—Œº€…±Y¥$hhI—I—Ã$ø1- ŽÛº ŽÃtPI—$ø±€ÛºÉjY1- Ž Ž¥$½ŽŒºtP€…tPhh[æ1-½5€Œa€ÕŸYYçïÕŸ€çï±€±€˜–€Œa€Éj€¤ËÃà ŽÛº½5€½5€[€UsUsI> 5$Ÿ[€€,€s÷€¤Ë€g€= s÷€g€s÷€s÷€±€Éj€ÛºÃY±€€,€I>= 5+Ä|0Ô±h˜ï€ÕŸ€Œa€s÷€½5€ÕŸ€ô$À…˜ï€çï½5€±€I>+Ä}ú—ƒ+Ä~7 ú—€s÷1-=bŒa€I>I>[€[€0Ôj7777-BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÀ$0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶Ð‹Êt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUPUUUUUUUUUUUUUUUUUUUUUUUUU@Tð `$Ÿ[€g€I>j= 0ÔI>±²~±²~7 €[€˜–€Éj€Éj€g€= ¤Ë€s÷€[€ô$çï€,€[€s÷€˜–€€,€€,€Œa€s÷€g€0Ô 5 50Ô= s÷€€,€g€[€I>[€€,€€,€[€Œa€¤Ë€˜–€g€[€s÷€[€0Ôjj 5 5+Ä+Ä|$ŸUs˜–€¤Ë€¤Ë€¤Ë€±€ÕŸ€ÛºÛºÛºYYô$çïçïÛº½5€ÛºÛºÕŸ€½5€ÛºÉj€¤Ë€±Y Ž˜–€[€j= 5€,€¤Ë€½5$øÉj€€,€g€UsŒa€Us[€[€g€0Ôj0ÔI>0Ô 50Ôj$Ÿ= ±²+Ä+Ä|gƒ+Ä|7777-BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÀ<0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUð b±²}ú—€…€…‚±²|I>˜–€Éj€Œa€˜–€±€Éj€½5€Éj€Éj€±€˜–€½5€Œa€I>0Ô$ŸI> 5+Ä|j 5j$Ÿ[€½5€±€±€Œa€˜–€I>€,€Œa€¤Ë€½5€ô$YÉj€s÷€€,€Œa€s÷€¤Ë€€,€s÷€I>s÷€€,Ãçï ޽5€s÷€¤Ë€Œa€s÷€[€s÷€€,€çïh±Yâ-èHâ-½ŽÕøÉÃtPhI—±$ø[æ=bô$ô$çïÕŸ€¤Ë€Éj€Œa€¤Ë€€,€½5€Œa€[€0Ô˜–€Us˜–€g€g€gƒ+Ä~±²|j[€€,€[€= 5±²~±²+Ä|j 5 5[€UsI>jg€$Ÿs÷€Œa€0Ô 57 €…‚±²|s÷€7777-BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÀP0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lk¡N•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUUUUUUUUUUUUUUUUUð b7 ‚7 ƒ+Ä~±²~7 ‚7 s€…€…€…‚7 ‚7 €…‚7 ú—ú—€…‚7 s€…€Œas€…ú—s€…€Œas€…s€…sú—‚7 ú—ú—€ 5= 7 ú—ƒ+Ä~7 ‚±²+Ä~±²| 50Ôg€Œa€€,€s÷€Œa€g€UsUsI>g€¤Ë€€,€Œa€s÷€0ÔUsg€= j$Ÿ= €,€±€çï±€ÕŸ€s÷€±€¤Ë€s÷€s÷€±€½5€Ûº½5€€,€I>0Ô0Ôj 5$Ÿ$Ÿg€±€Ûºçï±€½5€˜–€˜–€¤Ë€¤Ë€½5€ÕŸ€ô$çï$øUÌ€…˜ï€…=b1-Yg€Œa€ÛºÃñ€½5€€,€I>s÷€[€I>s÷€7777-BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÀd0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm»`‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-te:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUTUUUUUUUUUUUUTð `±€çïô$ ŽçïÕŸ€ô$Œa€€,€s÷€g€Œa€˜–€Éj$ø=b=bYçïô$ÕŸ€çïÛºYÃ1-ÛºÕŸ€ÕŸ€¤Ë€˜–€€,€±€½5€Œa€I>[€s÷€˜–€Ûºô$½5€€,€€,€€,€±€¤Ë€±€±€¤Ë€çïçïI—1-Ãô$ÕŸ€s÷€g€€,€I>= $Ÿg€s÷€Us+Ä+Ä|j 50Ô0ÔUs½5€çïô$1-à Žô$çïÉj€ÛºY[潎˜ïèHÃŒa€= $Ÿ= €,€s÷€½5€ô$ÃYçï±€€,€jjj€,€çï Žçï½5€±€g€0Ô$Ÿj 50Ô0Ô7 €…s€…s€7777-BUFR&bÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÂUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷½ï{ÞðB„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1Œc!B„!@Š2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V׆B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUAUUUUAQUUU@QUUð a€…‚±²| 5€,€Œa€Œa€Œa€g€g€I>I> 5 5 5= [€= 0ÔI>jI>s÷€˜–€˜–€˜–€˜–€˜–€±€çïçïs÷€Us[€Œa€g€ 50Ô= jj$Ÿj 5+Ä+Ä|0Ôú—‚±²+Ä|˜–€ÛºÕŸ€¤Ë€˜–€g€g€Us= [€g€[€½5€g€½5€¤Ë€s÷€j+Ä+Ä|j$Ÿ+Ä|j$Ÿ[€Œa€s÷€= 0Ôj[€= Œa€˜–€g€0Ô±²}ú—ú—€…ss€Œas€…€…ú—€…€Œaú—‚7 €…€€…‚±²~±²~±²~±²|$Ÿ[€[‚±²|j+Ä}€…s€…€g€±€ÕŸYŒa€s÷€0Ô$Ÿ77775BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô0$’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èKçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðQTUUUUUUUUUUUUUUUUUUUUUUEUUUUð `$Ÿj+Ä|= = = j+Ä~±²~7 ‚7 ‚±²}€…€…s€…‚7 €I>Œa€= jg€Éj€±€€,€€,€Éj€ÕŸ€Ûº€,€€,€¤Ë€˜–€Œa€[€$Ÿ= I>±€ÛºÉj€g€Œa€Éj€˜–€€,€s÷€Œa€Œa€Ûº ŽÛº˜–€¤Ë€I>I>Œa€$Ÿ0ÔI>j= g€ۺÃÕŸ€˜–€Œa€s÷€[€[€g€g€s÷€˜–€[€Uss÷€€,€˜–€[€s÷€Œa ŽÃ Žô$$ø[æ=bg€I>$Ÿ 5 5= = Us[€Œa€g€[€= 0Ô= $Ÿ0Ô 5±²|0Ôjj0Ôjjj 5 5$Ÿ 5j˜–€g€7777²~BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô(0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðEUUTUUUUUUUUUUUUUUUUUUUUUUUUUUUð `€,ƒ+Ä|0Ô[€s÷€Usg€€,€g€½5€ 5j+Ä|j 5= 0Ô[€±€ô$ÛºŒa€s÷€I>I>[€€,€Œa€½5€ÛºÛºg€+Ä|7 ƒ+Ä|j 5 5= j0Ô0Ô 5 5j0Ô0Ô 5jŒaYÉj€€,€±€¤Ë€½5€±€€,€0Ô[€Œa€= I>ç‚â-˜ï[æI—=bYçïY1-=b±€g€= s÷€I>[€I>g€€,€€,€Us€,€s÷€Us€,€Us= = €,€$Ÿ0Ԥˀ˜–€¤Ë€˜–€g€0Ô= [€I>= ˜–€˜–Y±€ÛºÕŸ€Œa€˜–€s÷ Ž[€$Ÿ0Ô[€7777²~BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’Im¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUU@UUUUUUUUUUUUUUTUUð `ÛºŒº˜ïI—ô$ÛºÉj€˜–€UsI>YI—ô$ ޱ€Œa€½5€€,€€,€Œa€Us0Ô= = ¤Ë€s÷€Éj€€,€g€0Ô$Ÿ= = $Ÿ 5ç€I> 5±²~7 ‚±²}ú—€…s€…ú—‚7 ‚7 € 5$Ÿ0Ôs÷€j$Ÿ= I>0Ô0Ô0Ôjj= ±€0Ô$Ÿ[€½5€±€ÕŸ€çïŒa€= g€I>[€[€Us€,€s÷€Usg€s÷€€,€˜–€˜–€= Œa€s÷€Œa€¤Ë€˜– Ž Ž$øÛº€,€¤Ë€€,€[€˜–€g€s÷€€,€[€Œa€0Ô 5+Ä+Ä}ú—€+Ä~7 ƒ+Ä| 5I>s÷€€,€g€g€= Uss÷€g€7777²~BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔT0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUð `g€s÷€¤Ë€= ˜–€˜–€s÷€0ÔUs= Éj€Ûº¤Ë€€,€½5€çï½5€½5€g€[€$Ÿ$ŸI>0ÔI>I>0Ô€,€Ûº Ž ŽÛº¤Ë€s÷€s÷€çïY1-[æ[æ¥$UÌÛºÉj€±€I>= Us= [€Usg€ۺ€…½Ž€…UÌÉj=b1-$øYÛºô$=bŒº€çïUs0Ô= 0ÔI>[€j 5jI>Éj€g€$Ÿ0Ô˜–€= I>s÷€¤Ë€Éj€Éj€Ûº=bI—Œa€ 5+Ä~±²~±²~7 ‚±²~7 € 5j 5jjjj$ŸI>s÷€ÕŸ$ø$øY¤Ë€½5€€,€€,€˜–€˜–€ç Ž¤Ë€I>UsI>7777²~BUFR&bÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔUUUUUUU\ëZÖµ­kZÖµ­kZÖµ­o{Þ÷½ï{Þ÷½ï{Þ÷½óœç9Îsœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{Þ€!B‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUUUUUUUUUUUUUUUUUUUUUUð `[€ 5+Ä~7 ú—€= çï ŽçïÛºYô$1-Ã1-çïà ŽÛº¤Ë€s÷€= +Ä}ú—€…€…ú—€…ƒ+Ä|0Ô€,€Œa€€,€€,€g€$Ÿ= [€g€Œa€Œa€I>$Ÿ$Ÿ 5ú—€…€…€…€…€…€js÷€Œa€¤Ë€½5€½5€¤Ë€½5€½5€Éj€ô$Yô$Éj€¤Ë€Œa€±€±€Œa€0Ô 50Ô 5= ¤Ë€½5€ÛºÛº½5€¤Ë€¤Ë€€,€[€s÷€Œa€s÷€= I>$Ÿjj$Ÿj0Ôjj±²|j0Ôg€s÷€g€s÷€g€Us= s÷€Us= 0Ô$Ÿ0Ô0Ô[€±€ÕŸ€ÕŸ€¤Ë€s÷€±€¤Ë€±€g€Œa€77775BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶ÐŠt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%KcáN•µÀ …1Е-sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUQQUUUUUUUUUUUUUUUUUUUUUUUð `s÷€j 5$Ÿj= j$Ÿs÷€˜–€çï[€UsUsI>0Ô0Ô0Ô$Ÿ0Ô€,€j$Ÿ$Ÿ= I>g€I>j+Ä| 5 5±²| 5Us¤ËYUÌ1-Ãs÷€€,€˜–€I>$Ÿ0ÔŒa€˜–=bÕŸ€ÕŸ1-çïÉj€ÕŸYçïÕŸ ŽØ–€Us$Ÿ˜–€s÷€[€js÷Y ŽÉj€±€˜–€Œa€˜–€UsñÃUÌ€…€…=bI—€,€˜–€½5€˜–€s÷€½5€ô$Éj€±€Éj€˜–€Éj€Éj€Éj€˜–€s÷€Œa€g€ÉjY=bUÌô$YÛºÉj€ô$Éj€Éj€ÕŸ$øI—½5€[€g€[€g€€,€½5€ÛºÛº7777 BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUQUUUUUUEUUUUUUUUUTUUUUTPUUU@ð `±€±€Ûº€,€[€$Ÿ= jj±²|$Ÿj= g€Œa€Œa€˜–€g€[€g€g€g€[€Usg€s÷€[€[€= 0ÔI>0Ô 5$Ÿ+Ä| 5+Ä| 5= g€Us±€I>I>[€g€g€0ÔUs$Ÿ0Ô[€Us0Ô 5jg€±€ÕŸ€ÕŸ€ÛºÛº½5€½5€g€[€I>˜–€±€0Ô$Ÿ[€s÷YY$øÉj€±€Us+Ä|j[€s÷€±€ÕŸ€ÕŸ€çïÉj€½5€¤Ë€½5€Éj€ÕŸ€Éj€½5Ã1-1-½5‚7 €$Ÿú—ú—‚±²|g€Œa€s÷€s÷€Us[€Us[€Us½5€Œa€s÷€€,€[€€,€0Ô+Ä}ú—‚±²|7777 BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@40’I$’I$’I%$’I$’I$’I¶Ûm¶Ûm¶ÛnI$’I$’I$’Ûm¶ÐЦ:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:TÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUQUEUUUUUUUUUð `$Ÿj$Ÿ˜–1-tP$øô$½5€±€±€˜–€s÷€˜–€±€Éj€±€€,€ô$[æ€çïô$Ûºçï¤Ë€€,€€,€[€¤Ë€Ûºg€s÷€±€Œa€˜–€Œa€[€[€s÷€±€Éj€Ûº ŽÛºÛºÉj€¤Ë€Éj€½5€˜–€˜–€Œa ŽÛºs÷€= $ŸI>$ŸUs$Ÿ 5$ŸI>Œa€±€ÛºI—[æ=b$øçï¤Ë€€,€Œa€ÕŸYŒa€ 5j 5+Ä| 5$Ÿ0Ô0Ô$Ÿ+Ä|I>ÕŸ=b[€ŒaÃ$øô$$ø ŽUÌ€…[æ€Ûº€,€[€[€[€jI>g€= I>I>s÷€s÷€Œa€˜–€ÕŸ€çïÉj€˜–€ÛºÉj=bI—˜–€I>7777 BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@H0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUQUUUUUUUUUUPEð `= €,€g€I>= s÷€Us$Ÿ0ÔUsUsI>I>0Ô½5€ÛºÃ Žô$ç€Us= jj$Ÿ$Ÿj= g€$ŸjjI>= [€s÷€½5€˜–€s÷€Éj€½5€€,€Œa€Œa€€,€Œa€s÷€I>$ŸUsg€˜–€g€s÷€€,€Us= = 0Ô$Ÿ$Ÿ$Ÿ 5±²|= €,€±€€,€ 5±²|˜–€çï$Ÿ= = $Ÿ+Ä| 5 5Usg€Uss÷€g€I>I>¤Ë€½5€= 0ÔI>= 5j$Ÿj$Ÿ 5jjjs÷€g€½5€ô$YÛº±€Éj€±€[€7 ú—‚7 ƒ+Ä~±²~7 €±²| 57777 BUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@\0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUU@UAU@U@UUUUUUð `j= €,€Œa€I> 5$ŸYI—=b$ø Ž ŽYÛº˜–€€,€Us[€g€Œa€€,€[€jUs€,€˜–€s÷€I>= €,€[€€,€çïYYY˜–€Œa€€,€€,€s÷€I>g€g€€,€s÷€j 5±²+Ä~±²}€…€…ƒ+Ä~7 ú—‚±²~±²|j$Ÿ0ÔI>0Ô 5±²~7 €±²+Ä|j= $Ÿ0ÔjUsssss‚7 €I>= s÷€$Ÿ 5+Ä~±²~±²+Ä|+Ä+Ä+Ä| 5= ±²}ú—‚7 ú—ú—ƒ+Ä|jUs= jj= s÷€g€Us[€g€g€Usg€= Uss÷€UsI>= 0Ô7777 BUFR&bÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔBUUUUUUUUUUUUUU^sœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½ï½ï{Þ÷½ï{Þ÷½ï{ÞðB„!B„!D!B„!B„ Š2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇD#)Ò¶¸!¦:¥±®|"Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUTU@UUUUPUPUUUUð `0Ô 5j= = I>€,€€,€¤Ë€€,€= [€= $Ÿ€,€0Ô0Ô€,€I>Us[€Us¤Ë€˜–€$Ÿj$Ÿj+Ä}ú—‚±²}ú—‚±²~7 ‚7 ú—ú—€…‚±²~7 €j$ŸI>€,€Œa€ÕŸ€çïçïÛºÉj€s÷€¤Ë€s÷€ 5 5 5±²+Ä|= jI>s÷€±€˜–€Œa€= €…€Œasú—€…€…€ 50ÔI>$Ÿ= $Ÿ$Ÿ½5€ô$ô$½5€½5€s÷€Œa€Œa€±€Ûºg€ 5±²+Ä+Ä+Ä|jUs˜–€UsUs0Ô$Ÿ+Ä}ú—€…‚±²| 5+Ä|Us½5€Œa€±€¤Ë€Éj€Œa€UsÉj€˜–€˜–€Ûºô$çï1-1-77775BUFR&bÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô‚UUUU P„!B„!B„!D!B„!B„!B†1ŒcÆ1ŒcÆ1ŒcÈB„!B„!B„! R”¥)K{Þ÷½ï{Þ÷¾1€‹)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¥±®|#)Ò¶¸!¦:¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUATUTTUUUUUUUUUUUPUUUð a ŽçïÕŸ€Ûºs÷€= 50Ô 5I>Us[€[€I>0Ôj$Ÿ+Ä+Ä|= +Ä|j= Œa€Œa€I>±²}ú—€Œa€…‚±²+Ä~±²~±²|+Ä| 5 5$Ÿ$Ÿ±²~±²+Ä|= g€$Ÿ$Ÿj 5+Ä|$Ÿ[€0Ô+Ä}€…sú—ú—ú—ú—‚±²~±²|$Ÿ= Us[€s÷ ŽŒa€ÕŸ€$ŸŒa€±€Œa€±€€,€½5€¤Ë€s÷€€,€UsI>j$Ÿj0Ô$Ÿ0Ô$Ÿs÷€ÛºÕŸ€½5€0Ôs÷€Œa€[€ 5$Ÿ$Ÿg€Us$Ÿ0Ôj7 ‚±²|$Ÿ= jUsg€€,€g€0Ô0ÔI>s÷€77775BUFR&bÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÂUU]kZÖµ­kZÖµ­kZÖ÷½ï{Þ÷½ï{Þ÷½ï{ß9Îsœç9Îsœç9Îsœç{Þ÷½ï{Þ÷½ï{Þ÷½ï½ï{Þ÷½ï{Þ÷½ï{ÞðŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUPUUUUUUUUUUUUUUUUUU@ð `g€I>I>= [€= UsI>j0Ô0Ô[€g€Éj€˜–€½5€çï±€¤Ë€ÛºÉj€0Ôj 5±²|j$ŸUsI>j 5 5j0ÔI>s÷€€,€[€s÷€±€Œaú—€…sss‚7 €j0ÔUs= g€½5€Œa€= = $ŸI>[€±€Ûº¤ËY€…I—s÷€0Ôg€˜–€ÕŸ€s÷€[€s÷€[€[€[€Us 5j= = 5 50Ô0Ôj= [€˜–€˜–€Éj€Œa€Œa€¤Ë€€,€g€g€g€€,€€,€[€€,€˜–€Us0ÔÉj€Us= Uss÷€s÷€g€€,€çïU̽5€ô$s÷€[€j€…€Œa€…€Os€…s€77775BUFRbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÂLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð„ „!B„!B€B„!@€! !B!B„!B„!aèHô$èHn6ô$n6n6bZbZŸc“†þŸctþbZzzô$èHèHŸcg€g€gƒ“†ÿ“†þbZtþbZèH“†ÿtüg€˜–ƒtþbZèHô$zzô$n6tü±Ã[æ€ô$±€˜–€ÃPÏ…Ûº€,€Œa ŽtPé Ž$øŒa€Œa‚ŸcbZbZbZ¤Ë€½5€±€ÛºÃPs÷€gƒtüg‚bZ“†üçü¤Ë€Œa€g‚ŸcŸcbZèHzô$ô$zn6èHtÿtýèHgƒtþbZèHn6n6n6“†ü€,€ô$˜ï$øŒa‚bZn6èH¤Ë€€, Ž ŽYçïۺۺυ¤Ë€½5€¤Ë€±€˜–€½5€ÃPŒa€s÷€7777sBUFRbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÂLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶9ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðB„!B„! B„!B„!B„„!B„!B„!B„!B„!`ÃPçïô$[怅tPO±C|à ŽÛºçïô$±€€,€˜–€˜–ƒ“†þŸcŸc“†ÿtýèHèHŸctþbZbZbZtþbZn6ô$ô$ô$n6n6n6èHn6n6n6n6n6bZ“†üs÷ƒ“†þbZèHbZn6n6ô$ô$n6bZ±O±=b1-1-[æ=bô$ÃP˜–€€,€ŒaÃ$ø[æ=bY1-¤Ë€s÷€gÂèHèHŸcztüs÷€s÷€€,€½5€±€ô$ÛºÛº¤Ë€±€˜–€˜–Y€,½Ž¥$[æ1-YÃ$øY Ž1-1-=bô$Ï…½5ƒtü€,€Œa€Œa€¤Ë€Œa€˜–€¤Ë€gƒ“†þŸctþŸcn6z7777sBUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô00$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶ÐŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðPUUUUUUUUUPUUUUUUUUUUUUUUUTUUð `Œaú—€ 5$Ÿ$Ÿ 5±²}€…€Usjg€Œa€½5€€,€ÛºÉj€Œa€çï½5€½5€¤Ë€±€€,€˜–€s÷€g€g€s÷€[€s÷€I>Usg€½5Y=bÃ$ø$øô$Éj€[€s÷€Us 5±²}ú—€…€0ÔUsI>Us[€Œa€[€ 5$Ÿ= 0Ô$Ÿ$Ÿ[€= I>¤Ë Ž=bçï[€˜–€s÷€g€€,€Us0Ô+Ä|±²|$Ÿ$Ÿ 50Ô$Ÿ$Ÿs÷€s÷€Us€,€s÷€s÷€I>UsI>Uss÷€s÷€[€= j0Ô$Ÿ= I>€,€g€˜–€˜–€€,€¤Ë€¤Ë€g€˜–€±€€,€ 5$Ÿú—€= s÷€±€½5€s÷€[€Usg€7777€ŒBUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔD0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÐŠÆ¹ðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUTTUUTUUUUU@UQUUUUUTð `I>= Œa€½5€±€Œa€€,€½5 ŽÛº$Ÿ±²~7 ssss‚±²|$ŸI>0Ôj 5+Ä|0Ôj 5= Us0Ô[€I>g€Œa€Us±²+Ä| 5+Ä|$Ÿs÷€[€Usg€ 50Ô$Ÿ€…ú—‚7 ‚±²}€…s€[€€,€Œa€˜–€s÷€0Ô$Ÿ0Ô 5$Ÿ 50Ô0Ô 5ú—ƒ+Ä~±²|UsI>$Ÿ= = Us±²|jI>Œa€Œa€Œa€[€= $Ÿ0Ô$Ÿ$Ÿ 5±²|+Ä}ú—sú—€…€…ú—‚7 €[€[€s÷€˜–€ÕŸ€ÛºÛºÉj€¤Ë€s÷€I>0Ô 5ú—ss€…s€…€…s€Œa€…€Œas€…€7777€ŒBUFRæbÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔX0$’I$’I$’II$’I$’I$“m¶Ûm¶Ûm¶Ü’I$’I$’I%¶Ûm¶Ûm¶ÛnÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èRØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUPUAUUUQUUUUUð asú—‚7 ú—‚7 €…€…€Œas€…‚±²|j0ÔUsUs$ŸI>[€0Ô 5[€g€s÷€ÛºÕŸ€ÕŸ€¤Ë€€,€Usg€$ŸUss÷€s÷€±€Éj€[€= 0Ôj0ÔŒa€Us 5$Ÿ$ŸI> 50Ô[€g€€,€€,€˜–€Éj€˜–€˜–€I>= 0Ôj$Ÿ0Ô= [€= = = 0Ô= Usj±²}€…ss€…€ 5= Us[€= 5+Ä+Ä|$Ÿj0Ô0Ô$ŸI>ô$ÕŸ€Œa€s÷€Us0Ô$Ÿ$Ÿ+Ä|0Ô0Ô0ÔI>I>0ÔUs 5 5±²| 5jI>½5€ÛºÕŸ€s÷€€,€¤Ë€¤Ë€¤Ë€€,€˜–€7777€ŒBUFR&bÿ« fÔ2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔUUUUUUUUU]ï{Þ÷½ï{Þ÷½ï|ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þ÷¾÷½ï{Þ÷½ï{Þ÷½ï{ÀB„!BŠS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS RØ×>”é[\ÈS*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUQUUU@PQUUUUUUUUUUUUUUUð `€,€s÷€g€= $Ÿ 5j0Ô0Ôj+Ä| 5+Ä|I>Éj$øÃô$ÛºÛºÕŸ€Éj€¤Ë€€,€[€I>= I>0Ô+Ä~7 ‚±²|ú—€…€…‚7 ‚±²+Ä~±²+Ä|ú—‚±²}s€Œas€…ú—€…€…ú—‚7 ƒ+Ä~7 ú—‚7 ‚7 ‚±²+Ä|$Ÿ= = +Ä|Us 5€,€˜–€˜–€€,€[€[€I>0Ô0Ô0Ô0ÔI>UsUs¤Ë€ÛºÃI—hUÌYÛº¤Ë€¤Ë€±€Éj€Ûº$øI—[€UsI>Usg€s÷€€,€€,€Œa€˜–=b±Y˜ïh€çïÛº€,€g€ 5Us±€çïçïUs0ÔI>s÷€I>77775BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2*Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUTQTUUTTTTð `= = UsŒa€Ûº±Y±Y½Ž˜ï€ÕŸUÌ$øYÕŸ€ÕŸY$øI—$øÕŸ€g€˜–€Us[€s÷€j0ÔUs1-=bÃtP[æ ŽÛºÉj€Éj€Éj€±€Éj€Éj€Éj€0ÔUs0Ô0ÔI>j$Ÿj$Ÿj= ±€ÕŸÃÛº¤Ë€Uss÷€g€g€I>= $Ÿ 5 57 ú—€Œas€…€…ú—€…‚7 €$Ÿ+Ä|$Ÿ 5 5 5+Ä}ú—‚7 ƒ+Ä|= s÷€s÷€[€I>Us 5$Ÿ0Ôj0ÔI>+Ä~7 ú—‚7 €…€Œa€O€Œa€Œa€Œa€Œa€…€Us= $Ÿ+Ä~7 ‚7 ‚±²~±²| 5 5+Ä| 5ú—€7777–BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`‹k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðTU@UUUUUUUUUUUUUUTUUð b7 ú—ú—€…s€…ú—€jUsI> 5±²+Ä~±²~±²~7 ƒ+Ä+Ä+Ä+Ä| 5 5jI>$Ÿ±²}s€Œass‚7 €jI>$Ÿ 5$Ÿ$Ÿ 5 5 5 5 5I>€,€UsI>[€g€¤Ë€½5€±€˜–€˜–€¤Ë€±€½5€çï=bÕŸI—I—tP€çïY Žçïô$1-çï½5€Usj= g€g€[€0Ô€,€s÷€€,€I>$Ÿ0Ô+Ä|$Ÿ 50ÔŒa€€,€€,€= Us±²~7 €…ú—sú—‚7 €…€…ú—€…s€…‚7 s‚±²}ú—€ 5 5Us[€Us0Ô0Ô+Ä|±²~±²+Ä}s‚7 €j7777–BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@40 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUEUUTUQUE@UUUUUUUUUUQEUUUUUUUTð `±€±€g€= 5±²| 5$Ÿ$ŸUss÷€s÷€Œa€½5€g€€,€s÷€I>$Ÿ7 ƒ+Ä~±²|0ÔUsg€Us0Ô0Ôj+Ä| 5 5$Ÿj 5$Ÿ+Ä| 5Us 5€…€Œass€…ú—€$Ÿs÷€g€s÷€[€[€[€Us[€g€s÷€Œa€˜–=b€…˜ïâ-tPà ŽYçïÉj€Éj€ô$=b=bÉj€g€I>Us0Ô0Ôg€Œa€ÕŸ€Œa€˜–€Us0Ô 5ú—€ 5s€jUs€,€€,€€,€€,€s÷€s÷€€,€˜–€Œa€¤Ë€g€g€Us$Ÿ 5 5[€0Ô= [€UsUsg€[€[€= 0Ô$ŸUs$Ÿj+Ä|7777–BUFRbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÂLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@H0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡+c\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð„!B„!B„!B„!B€BB„!B„ !BB„ðB„!B„!ctÿtüs÷€g€Œa€Œa€¤Ë€¤Ë€±€Ûºçï$ø±€±€g€gƒ“†þŸcbZŸcbZbZèHbZbZs÷€çï$øÃô$Ï…±€±€¤Ë€Œa€€,€˜–€Œa€¤Ë€s÷€˜–€½5€±€¤Ë€Œa‚ŸcŸctÿtüs÷€€,ƒ“†ÿtþŸcŸcbZèHn6ô$n6ô$ô$èHtüŒa€ÃP˜–€s÷€g€€,€Œa€¤Ë€¤Ë€±€¤Ë€Œa€Œa€Œa€s÷ƒtÿtüô$zô$ô$Œa€½5€±€Œa€˜–€gƒtþbZŸc“†ü˜–€˜–€˜–€Œa€¤Ë€g‚ŸcbZbZô$zn6n6bZs÷€Œa€˜–€¤Ë€Œa€˜–€€,€€,€s÷€Œa€¤Ë€½5€½5€±€¤Ë€s÷€g€7777>BUFRbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÂLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô@\0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð!B„!B„!B„!B„!B„!!@ð!B„!B„!B!B„!B!„!`Œaƒ“†ÿtþŸctÿtüÃPO±$øÏ…±€½5€±€±€ÃPçïÏ…Ûºô$C|YO±1-YÛº½5€½5€±Ã1-ÃPçïÛº½5€±€¤Ë€˜–€˜–€¤Ë€¤Ë€g€€,€€,€Œa€¤ËY¤Ë€¤Ë€˜–ƒ“†ÿ“†þbZn6èH˜–€g€g€s÷ƒ“†ýn6èHn6zzô$èH“†þbZbZbZn6týèHn6zzèHg€±€±€ÛºÛº¤Ë€Œa€˜–€Œa€Œa€±€ÃPçïÛºÃPÃP½5€½5€½5€½5€±€˜–€ô$bZ¤Ë€Ï…Ï…½5€¤Ë€˜–€€,€s÷€˜–€g€€,€¤Ë€Ï…±ƒ“†ü¤Ë€ÃP±ƒtÿtüg€g€€,€½5€ô$$ø7777>BUFR&bÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔBUUUUUUUUUUUUUUUUUUUUU^sœç9Îsœç9Îw½ï{Þ÷½ï{Þ÷½ï{Þ€!B„!B„!BˆB„!B„!B„! cÆ1ŒcÆ0Št%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUPUUUUUUUUUTQQ@UUUEP@TUð `½5€[€= j 5j0Ô$ŸŒa€Œa€˜–€€,€g€s÷€s÷€s÷€= +Ä}€…€…€Œa‚±²|$ŸI>s÷€˜–€s÷€Usj 5 5[€s÷€Œa€g€I>I>s÷€[€g€I>s÷€€,€Œa€˜–€¤Ë€¤Ë€ÕŸ€Œa€g€I>Us$Ÿ$Ÿ0Ôg€UsI>$ŸUs˜–€= 7 ú—€Œa€I>= 0Ô$Ÿ+Ä|= $Ÿ$Ÿ+Ä| 57 ‚±²+Ä}€…€€,€Œa€I>$Ÿ 50Ô€,€Œa€0ÔI>UsI>j$Ÿj+Ä|$Ÿ0Ô$Ÿj±²~±²|7 ú—€…€…€…€…s‚7 €Œa€Œa€O€Œas‚±²|I>j˜–€= ±²| 5j77775BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô€0I$’I$’I$’’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶Ûm¶Ûm¶ÐŠøFS¥mpC!Lt%Kc\øFS¥mpC!Lt)lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUEUPUTEUUUUUUUUU@@ð `= €,[æ1-[æ=bÉj€½5€±€$Ÿ$ŸI>$ŸI>g€±€½5€Œa€I>I>0Ô$Ÿ 5j$ŸUsŒa€g€g€Us 5$Ÿ0Ô+Ä|j$Ÿ0Ô 5= [€g€0Ô7 ss€…€…‚±²|0Ô= g€±€g€= 5±²|= 7 €[€= j[€s÷€s÷€Us= Us$Ÿ±²~±²| 5I>Œa€ô$Y=bô$$ø1- Žçï±€€,€s÷€Uss÷€±€˜–€= 5 5$Ÿ+Ä|0ÔUs$ŸŒa€¤Ë€Us[€[€g€Us0Ô 5±²}s€O€Oú—€j 57 €Œa€O€Œas€Œasss€…€…€…‚±²}€…s€7777…BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô€(0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’Km¶ÐŠˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)ŽÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUEUUUUUUQUAUUUUUUUUUUUð as€Œa€O€O€Œas€…ú—s€Œass€…sú—ú—‚±²|+Ä~±²~±²~±²~±²}€…€…€O€Osú—€$Ÿ˜–€= 5 5 5j 5+Ä| 5 5$Ÿ= [€g€0Ô0Ô0Ôs€Œa€O€Œasƒ+Ä| 5 5 5 50Ô0Ô$Ÿ= $Ÿ 5 5j+Ä| 5$Ÿ 5jj$Ÿ±²~±²|j0ÔÕŸ€çïŒa€˜–€ÕŸ ŽÕŸ€±€Œa€g€g€0Ô= 0Ô 5 50Ô= [€s÷€s÷€Us 50Ô0Ôg€±€±€ô$çïÉj€Éj€±€¤Ë€Œa€€,€I>$ŸUsŒa€ÕŸ Ž7777…BUFRæbÿ« fÔ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô€<0I$’I$’I$”’I$’I$’I&Ûm¶Ûm¶Ûm¹$’I$’I$’[m¶Ûm¶ÐŠ„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©lkŸÊt­®ˆd)Ž„©sáN•µÀ …1Е-sàÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUU@UUUUTUTQUUUUUUUUUUUUUUUð aÃÉj€s÷€¤Ë€s÷€0Ôg€±€ÕŸ€½5€€,€[€jú—‚7 €…ƒ+Ä+Ä+Ä| 50Ô0Ô= I>Us= jj 5$Ÿ 50Ô˜–€±€¤Ë€½5€Œa€[€jú—‚±²}ú—€Œa€Œa€Œa€Œaú—ú—€…€…ú—€…‚±²}ú—ú—€$Ÿ$Ÿ$ŸI>UsUs0Ô+Ä|$Ÿ+Ä|$Ÿs÷€Œa€±€ÕŸ€½5€g€[€[€Uss÷€˜–€Œa€Ûº¥$[æ$øÃ Žô$Ûº˜–€¤Ë€Œa€[€[€¤Ë€½5€ÕŸÃ Žô$Éj€ÛºÃ1-ô$ Žô$ô$Éj€½5€Éj€ÛºÕŸ€˜–€[€s÷€Œa€s÷€Œa€˜–€Œa€Éj€ÛºÉj€ÕŸ€¤Ë€Éj€ÕŸ€ô$7777…BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô€P0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶Ûm¶Ûm¶à‹N•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðU@UUUUUUUUUUUUUUUUUUUUQUEPQUUð `ÛºÕŸ€s÷€0Ô 5+Ä~7 ‚7 s€Œa€…‚±²|= s÷€Œa€¤Ë€Us= = I>Uss÷€¤Ë€˜–€Œa€g€UsI>0Ôj$Ÿ0Ô= s÷€Œa€˜–€ÛºY$øŒa€s÷€g€Œa€Œa€±€¤Ë€¤Ë€˜–€Œa€s÷€s÷€[€I>[€Us[€I>€,€UsŒa€0Ô0Ô$Ÿ= = ŒaY$øô$ ŽŒºtP€¤Ë€¤Ë€¤Ë€g€€,€g€€,€€,€g€€,€ 50Ôs÷€0ÔI>[€g€Us 5+Ä|˜–€j[€I>j±²|$Ÿ$Ÿ±²~±²~±²| 5= $Ÿ$Ÿ 5+Ä| 5±²~±²| 5= I>[€[€[€s÷€±€Ûº¤Ë€7777…BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô€h0I$’I$’I$¤’I$’I$’I6Ûm¶Ûm¶ÛmÉ$’I$’I$’[m¶ÐŠ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1Е-sáN•µÀ …1ÐÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUAUUUU@UUUUUUUUUPTð `Éj€g€½5€ÕŸ€çïI—hÃÕŸ€½5€ÕŸ€Éj€±€±€¤Ë1-ÃçïÛºÉj€ÛºÛºÕŸ€Ûº½5€˜–€ô$±€g€Œa€s÷€[€[€[€g€0Ô0Ô0Ô[€g€[€ 5+Ä~±²~±²+Ä|+Ä+Ä| 5I>s÷€[€s÷€g€s÷€g€$Ÿ0ÔI>˜–€s÷€s÷€I> 5 5+Ä~7 ‚7 ‚±²~±²~7 ‚7 ƒ+Ä|I>€,€s÷€Œa€[€= Usg€s÷€Œa€Éj€½5€±€¤Ë€½5€Éj€€,€€,€[€s÷€[€Usg€g€Uss÷€g€UsUs[€€,€€,€˜–€¤Ë€±€½5€Éj€Éj€I>€,€[ƒ+Ä+Ä| 57 ƒ+Ä|ú—€7777…BUFR&bÿ« fÔ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô‚UUUUUUUUUUUUUUUUUUUUUUUUUUUU_{Þ÷½ï{Þ÷¼„!B„!B„!„!B„!B„!BÆ1ŒcÆ1ŒcÆ1ŒcB„!B„!@Š•-sáN•µÀ …1Е-sáN•µÀ …1Ж5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„dÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUð `Œa‚7 ú—€ 5I>¤Ë€Usjô$Y ŽYÛºÕŸ€ÉjYYçïÛºÕŸ€Éj€ÛºçïÛºÕŸ€±€˜–€±€±€±€ÕŸYÛº±€= j0Ô$Ÿ$Ÿ7 ‚±²~±²~7 € 5[€€,€Œa€s÷€˜–€Œa€Œa€s÷€s÷€g€g€€,€s÷€€,€s÷€€,€Œa€˜–€±€½5€˜–€¤Ë€½5YÛºÕŸ€Éj€ÕŸ€ÛºYYô$ ŽY ŽÛºô$ÛºÕŸ€½5€g€g€[€[€[€g€€,€¤Ë€Ûº˜–€[€0Ô0Ô$ŸI>±Ã$øYô$$øYg€s÷€g€Us0Ô 5j= ±=b€…h ޽5€Œa€s÷€s÷€çïô$ Ž$ø77775BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÀ0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶Ûm¶Ûm»`‹:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×DÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUEUUUUUUUUUUAUUUUUUUUUUUUUUUUUUð a$ø ŽÃY±€g€= j±²|= I>UsUsUsg€s÷€s÷€˜–€˜–€ÕŸÃçïô$ô$ô$ÛºÉj€˜–€s÷€Œa€˜–€I>I>g€Œa€Œa€g€g€Us= Us= I>UsUsI>I>[€[€I>I>+Ä+Ä| 5$Ÿ$ŸUs±Y$øÃô$ÛºYçï$ø$øI—I—YYÕŸ Žô$Œa€s÷€0Ô0Ô 50Ô€,€çï=b=bI—I—ÕŸ€½5€½5€ô$ ŽÃÃ$øÕŸ€Œa€Éj€ô$Ûº˜–€Éj€Éj€[€0Ô[€½5€çïô$±€±€¤Ë€¤Ë€Œa€±Yô$YÛºÃÛº½5€¤Ë€g€˜–€€,€s÷€7777€BUFR¶bÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!bLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÀ,0’I$’I$’I)$’I$’I$’M¶Ûm¶Ûm¶ÛrI$’I$’I$–Ûm¶ÐŠ2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBT¶5Ï„e:V×D2ÇBTÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ð@ð \Ï…$ø&\\À7±Ðu~ º(AYÏÞ“à ëE+|Ð] ÌwÁ[æ‚“.&\ 'ÀŒ0 'À0ÔUÌc Yø$ŸReÀ†Gçïb$ø>¸Ø ®`O€-ÆÀŒa€a¨Ŭ Èw@/M`@@= I>† ?xýà6î€X€@ÉjzkbZÜlÈw@I>’|$ønè 'ÀŒ0$ŸZàº(A1-’ÕV~ 'À~ð$ŸReÀzŒa€Ï…ô$IðW02Z mÝYIðõˆ @ܸ1—PLK@dµ@s÷YU̬üB@ = dµ@½5·t²&\ L¸³ð= jÏÀÕŸzk%ªé¬ ÓX™p#`3á@Ûº«?V~ÝÐB@*¹€f;à¤Ë€Éj€7777€±BUFRæbÿ« fÔ  2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÀ@0’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶Ðж5Ï„e:V×D2ÇBVƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ¦Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUU@UUUUUUUUUUUUUUUUUUUUUýà`½5€¤Ë€˜–€€,€Éj Ž$ø$ø½5€s÷€g€[€OX€= $Ÿ$Ÿ 50Ôj0Ôg€s÷€[€g€[€€,€€,€s÷€OX€0Ô0Ô 5¥}~+k‚¥}|ú>€€,€ú>€€,€ú>€ 5= ± Žô$ô$ô$1-$ø$ø ŽÉj€½5YY[€[€g€Éj€s÷€j$Ÿ= OX€Œa€çïY$ø1-1-$øÃYçï[怅[æI—1- ŽÏ…O±€ô$Ï…Ã$ø$ø1-I—=bO±=b=bÃçïÃ$ø=b$øÃ ŽÃYÏ…½5€½5€¤Ë€˜–€Œa€Œa€Œa€˜–€Éj€çïÛºÉj€±€Œa€Œa€Éj€½5€½5€˜–€½5€Éj€±€Ûº7777€BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÀT0$’I$’I$’II$’I$’I$’m¶Ûm¶Ûm¶Û’I$’I$’I$¶Ûm¶Ûm¶ÛmÛ`‹JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUTUUUUUUUUUUUUUUUUUUUUUUUð `ÕŸ€˜–€= j€,€€,€Œa€I>7 ƒ+Ä|I>s÷€Œa€Us0ÔUsUsUss÷€±€˜–€€,€¤Ë€g€s÷€Us7 ú—ú—€…s‚7 €$Ÿ±Ã=bYYYÛºô$çï ŽÃUÌUÌh[ætPh1-çïÕŸ€½5€¤Ë€˜–€˜–€Éj€çïÃ=b=b ŽYô$ô$Y ŽÛºçïYçïYçïÉj€Éj€¤Ë€±€˜–€¤Ë€˜–€½5€Ûºô$Ãô$ÛºÉj€Ûºô$ÃI—$øYô$ÕŸ€ô$ô$½5€±€˜–€g€Œa€Œa€g€g€¤Ë€Éj€Éj€Éj€Éj€ÕŸ€Éj€ÛºÃ Žô$½5€¤Ë€ÕŸ€Éj€¤Ë€¤Ë€˜–€˜–€Éj€˜–€7777€BUFR&bÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!ÒLEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔÂUUUUUUUUU]kZÖµ­kZÖµ­kZÞ÷½ï{Þ÷½ï{Þ÷½ï{ç9Îsœç9Îsœç9Îsï{Þ÷½ï{Þ÷½ï{Þô!B„!BŠB˜èJ–ƹðŒ§JÚà†B˜èJ–ƹðŒ§JÚà†B˜èJ–×>”é[\ÈS SçÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUEUUUUUUUUUUUUUUUUUUUUUUUUð `±YÃ1-1-ô$YYÃÃYYY Žô$Éj€¤Ë€±€¤Ë€s÷€¤Ë€+Ä| 5 5+Ä|$Ÿ= [€g€= = UsI>= I>[€I>UsI>0Ô0Ôjj0Ôg€ۺÃ=bI—=bÃÛºçïçïÕŸ€çïô$ ŽUÌÃô$çïÉj€¤Ë€˜–€Œa€€,€€,€€,€˜–€±€ÉjYçïÛºÛºÛºÛºô$YY Ž$ø$ø$øô$çïçïô$çïô$Y1-€…I—ô$ÕŸ€ÕŸ€ÕŸ€ÉjY$øUÌ Ž ŽÃ Ž1-$ø1-ô$ÛºÕŸ€½5€Éj€çï$øtP½ŽtP1-ô$çï77775BUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k„C!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUTUUUUUUUUUU `çïô$Yô$ÃY=bC|C|1-$ø$øçïçïçïÃ1-[æ[æ$øYY ŽYô$C|O±C|$ø$ø1-ÃÃYçïçïçïô$ÃPÃPÏ…YÛº Žô$Ï…Ï…Ûº ŽÃô$çïçïÛºçï¤Ë€Œa€[€ 50Ô$Ÿ 5$Ÿj[€OX€Œa€g€€,€g€s÷€½5€çïC|1-$øçï Ž ŽÛºÛº¤Ë‚™H}hâ-‚™H|OX€çïÃP½5€˜–€Œa€[€g€C#€˜–€ô$$øô$YÃP½5€¤Ë€½5€Œa€±€¤Ë€g€€,€¤Ë€ÃPY=b€…€…h¥$˜ï±Y=b1-=b ŽÃPÏ…ÃPÃP7777ŽBUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô0I$’I$’I$’’I$’I$’I$Ûm¶Ûm¶Ûm·$’I$’I$’Im¶Ûm¶Ûm¶Û¶Û`‹pC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!Lt%Kc\øFS¥mpC!LÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU `¤Ë€˜–€s÷€Œa€˜–€¤Ë€±€½5€ÛºçïÛºÃP±€¤Ë€½5€Ï…1-1-ÃYYçïô$çïÏ…˜–€˜–€s÷‚™H~6€OX€±€½5€Ï…€,€ÃPYÏ…çïçï ŽYçïۺυυçïô$çïô$YÃÃô$Ï…ÃPÃPÃP¤Ë€±€ÃPۺυ Ž1-=bC|Y ŽÛºÛºÏ…ۺυÃP±€˜–€Œa€¤Ë€ÃPà Žô$ô$˜–€½5€½5€±1-tP‚Ið¥$€Ï…Ï…çïçïçïÃPOX€C#€g€¤Ë€¤Ë€g€OX€= = C#€C#€C#€OX€g€g€s÷€= $Ÿj$Ÿ[€½5Y ŽÃÃ1-7777ŽBUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô40’I$’II$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÛvÛ`Št%Kc\øFS¢–ƹðŒ§JÚà†B˜èJšçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUPUUUUUUUUUUTýàaO±[æ1-$ø$øÏ…Ï…çïYô$Yô$çïÉj€½5€Éj€¤Ë€˜–€Ï…Y ŽYÛºÉj€±€Éj€½5€¤Ë€€,€€,€g€[€= €,€Œa€½5€Ûºô$YÃO±[æ[ætPtPhO±$øÛº½5€€,€g€[€[€[€s÷€Œa€Éj€[€€,€½5€Œa€[€= = [€s÷€˜–€OX€0Ô~¥}| 5I>¥}~¥}|Œa€±€OX€ô$[æI—1- ŽÉj€¤Ë€[€g€±€Œa€OX€OX€$ŸOX€= I>s÷€Ï…$Ÿ 5g€Œa€çï±€½5€çï±€¤Ë€Ï… Ž$øI—tP=bÏ…˜–€g€I>$Ÿ}tP€ú>tPtP€7777ŽBUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<ÔL0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶ÐŠc¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[Ù£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUUUUUUUUUUUUUUUUUUUUUQUUPUUð c+Ä|0Ôg€¤Ë€[€I>I>s÷€˜–€Ûº=b=b=btP€…½Ž‚Ið çÉÃtP=b=bI—1-[æ˜ï¥$˜ïUÌ1-=b$ø$øUÌ[æÃ1-çï ŽÛºçïÕŸ€±€€,€¤Ë€±€½5€çï Ž1-€…h1-=b Ž Ž Ž=bUÌI—¥$€…1-Y1-YÛºçï±€€,€$Ÿj[€Œa€½5€Us[€€,€¤Ë€I>[€˜–€±€¤Ë€g€Us$Ÿj 5$Ÿ+Ä|ú—€Œa€Œasú—€jj$Ÿ0Ô= 0ÔUsI>g€= j 5±²~±²~±²~±²|Œa€Œa€Œassƒ+Ä|= 0Ô±€Œa€Us= Us½5€7777ŽBUFRæbÿ« fÔ 2€ÀÔÕÖרÙÁ Á Á +,-ZZ!’LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ô`0 $’I$’I$’RI$’I$’I$›m¶Ûm¶Ûm¶ä’I$’I$’I-¶Ûm¶Ûm¶ÐŠçÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡*[çÂ2+k€" c¡Kc\øFS¥lÙ£díâ$TÿøñÄÀÄÀÈ´ÐдÀ€ðUT@U@U@UUUUUUUUUUPUUUPUUUUð `Éj€¤Ë€jjj 5±²~±²~±²|±²|j+Ä}ú—‚7 €$Ÿ€,€½5€$Ÿ[‚7 ‚±²+Ä~±²~7 ‚±²| 5[€s÷€$Ÿ0Ô$Ÿ±²}ú—‚7 ƒ+Ä~±²~7 €= ±€Œa€Éj€ÕŸ€€,€€,€[€s÷€s÷€Œa€ô$ô$=b$ø=bÃ1- Žô$ô$Éj€Éj€ÕŸYY$øô$çïçïYYçïô$ô$YÉj€½5€¤Ë€€,€[€gƒ+Ä~±²}€…€…‚7 ‚7 ƒ+Ä|jjjj$Ÿ= $Ÿ$Ÿ0ÔI>I>Us[€I>$Ÿ0Ô$Ÿ€…€…‚±²}ú—ú—ƒ+Ä|= çï1-à ŽçïÛºÉj€ç€±€Éj€UsÉj€Ûº˜–€7777ŽBUFRbÿ« fÔ 21ÀÔÕÖרÙÁ Á Á +,-ZZ!<LEICESTER CENTRE 1% €€€t#S“tÐŒ @@<Ôt!UUUUUVªªªªª¨"ÜÈS RØ×>”é[\ÈS RØ×>”é[\³FÈ!ÛÄH¨ÿðâ ‰‰‘i¡¡ià8€ªªªª*ªªªŒøP0@@ýKÁÐ@F0ÀÀBÀF0ÁXÙ>O€„€ 5$ŸÐ@ýKÁXÙ>€„€*¹€^šÀs÷€dµ@X€@jÏÀjÏÀ 5j*¹€F0À 'ÀF0ÀýKÁ•â>$Ÿ„€„€j 5€ 5F0ÀF0Às÷€s÷€s÷€€,€z*¹€ 57777dballe-7.21/extra/bufr/synotemp.bufr0000644000175000017500000000073213022043102014413 00000000000000BUFR2be €É–A A!øÿÿÿûëáw­ˆðŒ÷äÿþÿÿÿü6|è ê«;@ N €%ZÕk^É>ê–¥ൠ¢sFLb”<Ü  ÆŒƒÅðœáÿÿÿÿð Íˆ€Q/æ¢7ˆÿáåöAâ¼>‚qÌ>¾˜ê¿ÿÿØÿÿÿÿü  ú 'äÅ+­”_ÿÿÿÿò0°ÿÿ®ÂŒÀrÿÿÿÿÌ€d ¸/ÿÿÿÿøÜ²ÿÿÿÿÿ 4 ¿ÿÿÿÿåPPTÿÿÿÿüZ€ÃÿÿÿÿÿhàŸÿø­uŸÿÿ‚ð ÿÿÿÿþ<ÀRAÿÿÿÿÆ@´ OÿüYºÿÿÿÁ,@\‹‹·g‚€%¿ÿÿÿÿä`Fpÿÿÿÿüª À„„ÿÿÆ;¹ÿÿü0_ÿÿÿÿòX#àÿÿïÿÿð;ÁÿÿÿÿÉ`ð/ÿÿÿÿù€á ÿÿŽ—‹ÿÿøà¿ÿÿÿÿåPx8'ÿþ?Þ_ÿÿàd 3lÇûËŒ‚€ p_ÿÿÿÿñ¸P| ÿÿÿÿþZ .ÿãõåÿþ˜oÿüƒ¼ùT-| x0`páÄÎ8Là‡ œ8pá3„Î8á‡8p™Ã„À8Lá3‡ œ&áÂd€@UcF4hÑ£F4hÑ£F\hÑ£K4jQ¥F5(Ò£F”iQ£FJ4¨Ñ£F¥4hÑ£R4hÑ©F4hÔ£F4iñ£F”hÑ£FJ4hÑ£F¥4hÑ£K4¸Ñ£K4¸Ñ£K4¸Ñ£K4¸Ñ£K4¸Ñ£R4hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hѥƔhÑ£F.4hÓãF4¸Ñ£K4¸Ñ£K4¸Ñ£K4¸Ñ£K4¸Ñ£K5(Ñ£F\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hѥƔhÑ£F.4hÒãF.4hÓãF0‡ÿÿïß¿~ýû÷ïß¿þýûÿÿÿÿÿÿÿÿÿßÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿ÷ÿÿÿøP¢ÿ`IÀö ×€¸ÈtTHÌ(É ?Ûxò rÄÎ7777dballe-7.21/extra/bufr/vad.bufr0000644000175000017500000001012013022043102013277 00000000000000BUFRŠN€ Ý  ÿÿ)Ö‚  )h,€!"ÁÁ Á Áy}G  ! ! 2*ÿÿ >좰ٛˆùYàoãÿþ ¸‘QÿÁµ‘@L ø7777BUFRšN€ Ý  ÿÿ)Ò®  )h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좰ÚL¨öøwÓÿþ ¸}!ÿÿÿÁµ d?ÿÿø>‚ §ÿÿÿÊ=Âàÿÿÿà7777BUFRšN€ Ý  ÿÿ)Ôß  )h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좲L¨öøwÓÿþ ¸~yÿÿÿÁµ ‰?ÿÿø>‚çÿÿÿÊAA´ÿÿÿà7777BUFRŠN€ Ý  ÿÿ)Ú^  )h,€!"ÁÁ Á Áy}G  ! ! 2*ÿÿ ¾ì¢²™Áˆó¬ÀGÿþ Ä¡éÿÁw0 ø7777BUFRšN€ Ý  ÿÿ)ÖŽ  )h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좳ZL¨öøwÓÿþ ¸€ ÿÿÿÁµ?ÿÿø>‚ÇÿÿÿÊAôÿÿÿà7777BUFRŠN€ Ý  ÿÿ)Ú^  )h,€!"ÁÁ Á Áy}G  ! ! 2*ÿÿ >좳Y›ˆùYàoãÿþ ¸YÿÁµ‘ O ø7777BUFRšN€ Ý  ÿÿ)ØÅ  )h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좴šL¨öøwÓÿþ ¸ƒ±ÿÿÿÁµÐ˜?ÿÿø>‚ÇÿÿÿÊAÂÿÿÿà7777BUFR‚N€ Ý  ÿÿ)Þ:  ")h,€!"ÁÁ Á Áy}G  ! ! 2"ÿÿ ¾ì¢µÁˆó¬ÀGÿþ ¸ yÿÀ7777BUFRšN€ Ý  ÿÿ)Úƒ  )h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좵ÚL¨öøwÓÿþ ¸~©ÿÿÿÁµ ?ÿÿø>‚'ÿÿÿÊ@Âèÿÿÿà7777BUFRŠN€ Ý  ÿÿ)Þ:  ")h,€!"ÁÁ Á Áy}G  ! ! 2*ÿÿ >좵ٛˆùYàoãÿþ ¸† ÿÁµ‘°I ø7777BUFR’N€ Ý  ÿÿ)Üp  )h,€!"ÁÁ Á Áy}G  ! ! 22N Æ>좷L¨öøwÓÿþ ¸}ƒIÿÿÿÁµ‘Px?ÿÿø>‚L‡ÿÿÿ7777BUFRšN€ Ý  ÿÿ)Ûë  )h,€!"ÁÁ Á Áy}G  ! ! 2:×× J¾ì¢·š/c(ý/`SlxórÛ+ŸÿÂMRf»ÿøB FJèÿpÌñ}Oÿà7777BUFRÔN€ Ý  ÿÿ)áb  *)h,€!"ÁÁ Á Áy}G  ! ! 2tU‘¾ì¢·š3…êõ€RÓÿþlwaÿÿÿÁ0s?ÿÿø#ñì‡ÿÿÿâ=‚ÿÿÿà¨Ç°AŸÿÿü¨ùsÿÿÿƒ!ÿÿðg#ô"Oÿÿþ ¬€QÿÿÿÁÎ?ÿÿø<ò'ÿÿÿ7777BUFR‚N€ Ý  ÿÿ)ãM  /)h,€!"ÁÁ Á Áy}G  ! ! 2"ÿÿ ¾ì¢·™Áˆó¬ÀGÿþ ¸›ÁÿÀ7777BUFRšN€ Ý  !ÿÿ)Þd  ")h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좸ZL¨öøwÓÿþ ¸IÿÿÿÁµ‘Py?ÿÿø>‚*ÿÿÿÊD¤ÿÿÿà7777BUFRŠN€ Ý  !ÿÿ)ãM  /)h,€!"ÁÁ Á Áy}G  ! ! 2*ÿÿ >좸Y›ˆùYàoãÿþ ¸€!ÿÁµ‘°N ø7777BUFRšN€ Ý  &ÿÿ)à–  ()h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좹šL¨öøwÓÿþ ¸„ÉÿÿÿÁµ’k?ÿÿø>‚VÿÿÿÊ=‚tÿÿÿà7777BUFRšN€ Ý  +ÿÿ)↠ -)h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좺ÚL¨öøwÓÿþ ¸~ƒ¡ÿÿÿÁµ‘t?ÿÿø>‚ çÿÿÿÊCˆÿÿÿà7777BUFR’N€ Ý  +ÿÿ)æ   6)h,€!"ÁÁ Á Áy}G  ! ! 22ÿÿ >좺ٛˆùYàoãÿþ ¸‚yÿÁµ’I ø>‚\ Dÿ7777BUFRšN€ Ý  0ÿÿ)ä?  1)h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좼L¨öøwÓÿþ ¸}„!ÿÿÿÁµpj?ÿÿø>‚ GÿÿÿÊD‚øÿÿÿà7777BUFRšN€ Ý  5ÿÿ)æ,  6)h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좽ZL¨öøwÓÿþ ¸}‰ÿÿÿÁµ r?ÿÿø>‚ gÿÿÿÊ@‚tÿÿÿà7777BUFR’N€ Ý  5ÿÿ)ù¹  )h,€!"ÁÁ Á Áy}G  ! ! 22ÿÿ >좽Y›ˆùYàoãÿþ ¸~IÿÁµ‘°L ø>‚\ ÿ7777BUFRšN€ Ý  :ÿÿ)è&  ;)h,€!"ÁÁ Á Áy}G  ! ! 2:N Æ>좾šL¨öøwÓÿþ ¸‚ÿÿÿÁµàƒ?ÿÿø>‚gÿÿÿÊC|ÿÿÿà7777BUFRúN€ Ý  ÿÿ)ç±  :)h,€!"ÁÁ Á Áy}G  ! ! 2š×× J¾ì¢À/c(ý/`Slx\ lÚüïÿÁ3n@†hqÿø'-æäžÿÿý¾Àøxßÿࢷè#àÿü´ÿ‘ôÿÿ‚¢ŸÀb¾‡ÿðUÓ¼ —Éþ êvñ/ÿÁcOB¿ÿø-%ð #ý?ÿ¼¼“ïÿທ R„ÿü°ú buÿƒÀ¼BÿðaÃüÈ®þ h|‚ÁŸÿÁ’ï`6Áÿø3äC׿ÿ{¿A4oÿàÒw¨ ®Àÿü¬ÿÝÿƒa À:¼Wÿðm´H#ÿþ å†ÉÿÁ±€.Eÿø9 Câÿÿ:Ä@ô~÷ÿàêXH!>ÿü©r ŸÿƒÁ à¸@[ÿðy¤ ÈLþc„ƒ¯ÿÁòppi ÿø? £æÿùÁAp}ÿá(0#Òÿü ¥ Áòÿ„ ¡`t>[ÿð…”(ÊÿþáƒèüŸÿÂ"0AÿøE,£úÿÐA€ü~Çÿáøyÿü$;åêŸÿ€7777BUFRÞN€ Ý  ÿÿ)üº  )h,€!"ÁÁ Á Áy}G  ! ! 2~U‘¾ì¢À3…êõ€RÓÿþ4€éÿÿÿÁЄ?ÿÿø'øgÿÿÿF>Â0ÿÿÿàµGàIÿÿü8þ Cÿÿÿƒ9á2ÿÿðmcü&Oÿÿþt€„¹ÿÿÿÁç“?ÿÿø@Gÿÿÿf@ÂDÿÿÿà7777dballe-7.21/extra/bufr/C05060.bufr0000644000175000017500000000345413022043102013316 00000000000000BUFR,Pÿ Ù €É4QRC_`a=…<ñ  ÿÿÿÿÿÿÿÿ¨ ‡“ìàwÆ:úb\À¾äúüq ‘¨WÿÿÀPG¼úÑ*ˆ•Dk{c ©Q*‚è•C{zóiÌP  ‘*‚è•CÛ|»e„´Ð ˆQ*‚h•CÛ|£eÄ>Z‘Ñ*{(•N#pËZè ÐJ ²‘*€È•R»m›YCü d~ôÑ*‚è•ZógÃH¼4 Pfqú‘*„•[ƒg›G<0 glý*„¨•\#g{G , Ðu ‘*‡H•asc MSäÐx(Q*‰(•c b RóäPƒÏF*È•gËakDt Ћž]*¨•j+_“9d ‹ š_*È•j³_k8l P–^‚{Ñ*‘h•m[`› ÈP¹ Ù‘*šè•u3Y‹L P×ÿ+Ñ*©(•Vbõ#ÄÐôrƒvQ*³è•‹PºëÔ   ý¶Q*º(•”ûMòЃü Ñ  ¬ã‘*½¨•š[JÂ< ) x„Ñ*½H•žkHzÄ”x Q; '/‘*³(•¦G’ç¨Q= „4Ñ*¯h•¦ÛGBò¨ÑL Ü[Ñ*¤ˆ•®“CCä´Qm P°‘*…è•ÁK>ì¤Q€ „â*y•ÏÃ9²é dÑ’ ¸Q*qH•Þ+5ZïÄ`QÆ ñ“Q*U¨•ÿû)"Õ|”QÊ ã…œQ*Pˆ–û(RÛ”ê mî*E–£âåL<’ Ɔf*4è–6‹’öl’ ÄgÑ*4¨–7kbölÒ* š‡*.h–@û2å|d’5 v†¡‘*(È–Hã òýìtÒX çÑ*¨–c»’úœŒ’` ùQ* H–isšú<Œ¬‡?Ñ)üÈ–}bÿÒðP’«G‡“)ô–˜BøZà P¾¸‘)ëÈ–¤âôÊÛDxRËøÖ‘)ãH–¬"ñbÛŒ RÛ Ðù‘)Õ(–¶Ríª×œ€Òé¯Ñ)ψ–¿òêªÎl c[‘)¾h–ÙÂâªÍ|PÓVÊëÑ)ˆ—JÑêÁÔ|Óg©‰ ‘)—"Îjº”Œ“¢4 ‚Q)iè—UzÁ²¦œp!S´ ¥)ZÈ—fr½š£t€ SÌ Ü à)>ˆ—}²¶ò¡¼ &ÓÑЉìQ)5È—‚rµ’ Ä¤(Óç­ Ñ) È—™³2˜ŒÈ'Ôq WÑ(戗´z±rŽäd*”nŠZ‘(æÈ—µz±"Ž\d+TF â ‘(“ˆ˜'Ò Š…ä€KÔf µ >(I˜p žŠƒÜ|TTl¬‹I‘(;(˜~bº‚¼€RT‡ ƒQ( 蘵’œŠzld>ÔœX‹»( H˜ÚªuÌ@”¯7‹ê‘(h˜ÿÒ¥ruLD=T½ŒQ( È™š¢êjÄd3”ÞðŒVQ'ú¨™@Úžc<0'”å è c‘'ýH™HÊžBc$)Tìߌq(è™Qâ rd,-•¨ Ë‘(¨™œ¢b]L<-•~< ‘(@(š(ÚžâP„7U“& ·‘(UˆšLB¡ZQü<•¬ ç‘(t(šyÊ¢òP4@ÕÌîŽ(‘({ˆš²’§BP,L4Ì î)‘({ˆš²’§ZP4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777dballe-7.21/extra/bufr/obs2-101.16.bufr0000644000175000017500000000270013022043102014123 00000000000000BUFRÀb€e  4e}Ky€CL„cH08221 Ày¨Îy¦F€É–A A!Rnž£ê[ÌŽA †™ þÿÿÿýVqïÿÿÿÿÿÉIû_U|(I«¢«-)`@'…nUÿÿãF.®Š˜ÿÿü;ÁΕµXßÿÿ„Ñ>·ªýþ6ÿÿÿÿÿÄÀz€€ƒ*تoÿÿ¾¼ ÿÿÿÿÿ6‡ÐÿÿÿÿæÀdæð/ÿÿÿÿüÄ›X@ ¨`‘cc€¿ÿÿÿÿñÐŒgH0;–é:DLÐR½#ÿÿý`€üjsœŸÿÿ°è ÉLó+ÿÿöÿÿÿÿà€d»€oÿÿÿÿü` — ÿÿÿÿÿ‰â«Á‹T2ÿÿÿU(ÿÿÿÿþbʇ cÐ<ÑÿÿýA@_ÿÿÿÿøÀ'€-á=r¿dµÿÿÿÿß@ŒŽÐ/ÿÿÿÿü$¤h™¸Éÿÿú @¿ÿÿÿÿð@<>t–\â­àDzÿÿÿÿÿ¼æ _ÿÿÿÿ÷X¼ ÿÿÿÿþÿ#h‚0äv!ÿÿþj@/ÿÿÿÿûÀ žÿÿÿÿÿ‚w”ñŸ ®°2-Èÿÿÿÿý®…–ÿÿÿÿÿ¼ð©`_ÿÿÿÿ÷0 O­°Sÿÿò}ÿÿÿÿÕ@N"Id=Àº‰L*\†×ÿÿÿù€¿ÿÿÿÿèÀFàÿÿÿÿüðƒè IÂ;â¡Àðs _ÿÿÿÿõ( èPb—¯Ã¤ÿÿÿÿÜÀP2P/ÿÿÿÿü$ðÿÿÿÿÿn່«p‚ì®`FHÿÿÿÿýÖÂÕÿÿÿÿÿ·@W€Ão¸MuØ  P ÿÿÿÿþëA6ÿÿÿÿÞ ´%Ð/ÿÿÿÿü8„8=‚W!ÿÿø…À¿ÿÿÿÿî°Zðÿÿÿÿþ Aô&|A«˜ÂA<_ÿÿÿÿø 7ò ÿÿÿÿÿ"ÀØB•¡Ëÿþ /ÿÿÿÿü$ƒÿÿÿÿÿ“àYà¿ÿÿÿÿð< ñš \NQ‚ÿÿÿÿÿÂ@ð'_ÿÿÿÿøè° ÿÿÿÿþúÀÁÿÿÿÿà€Üx/ÿÿÿÿü°øÿÿÿÿÿ“à>ˆ éPRß² 2Äÿÿÿÿþ:@ôÿÿÿÿÿà _ÿÿÿÿø˜<€ ÿÿÿÿÿàlÿÿÿÿã xB•t ·ïÿÿÁ™ SæöýŽƒÀ8O0`8pà€ƒpáÀgœpà3€8 áÀp3‡páÀ8pà3‡8 áÀ8páÀ8p XÑ£F4hÑ£F4¸Ñ£F4hÔ£J4iq£F.4hÑ¥Æ5(Ò£F\hÑ¥Æ4¸Ñ£K4¸Ñ£R*4hÑ¥Æ|hÑ£F.4hÑ¥Æ4¸Ñ£F—4iq£F—4iq£F.4hÒãF\hÑ©F•4hÒãF.4hÒãF\hÑ©F•4hÒãF.4hÒãF.4hÑ¥Æ\hÑ©F•4hÒãF.4hÒãF.4hѥƔiQ£F.4hÑ¥Æ\hÑ©F•4hÒãF>4hÑ£F—4iq£F—4jQ¥F4¸Ñ£K4øÑ£F\hÑ¥Æ\hÑ¥Æ4¸Ñ£K5(Ò£F\hÑ¥Æ\hÑ£K4¸Ñ£K5(Ò£F\hÑ¥Æ\hÑ¥Æ\hѥƔiQ£F.4hÒãF.4hÒãF.4hÒãF|hÑ£FŒ7777dballe-7.21/extra/bufr/ed4-compr-string.bufr0000644000175000017500000000101413022043102015625 00000000000000BUFR ^ Ù  ÀÇPà <@BÔµˆÉ‹*Ȫjˆ*‰)éÄ()ˆIêHè(*I ªd Š¨Ê‰*ÉÄ 舩Êh¤ Š¨Ê‰*ÉÄ iè¨H©É*ÉÊd Š¨Ê‰*ÉÉ)©¨ªD 興¤Ë*DH#ì€Àí®‚Uùà#( C`P˜&î"àx}ñO†_ÿð'HsÇ騆5Áç þÿàÿÀÿÿ«l–’ÑU@5 ’úAM©@àÿ€+Ã39AÂÿüÿÀÿÿàǽ@0îâ B â€q‚ÕÂ>Ê÷AJ‚ahE('€VJPR€ù†¥0Zɹ\€Oøÿð?à~üÀÿÿÿøÿþÿð>ÿøÿàóþƒåƒåïÿÿÿàð?ÿÀÿð?ÿÿ@ÿð?üÿÿüÿÿÀÿÿÿü @?°á| SÀ*2‡½HÿÀÿÿàøð?üÿð?üÿÿÀÿð?üÿàÿÿþÿøþÿÿàÿÿüÿð?ÿÀÿð?üÀ7777dballe-7.21/extra/bufr/ed4-parseerror1.bufr0000644000175000017500000000163713022043102015461 00000000000000BUFRŸêÿ Ù !€ÁZÂÂ#Â$Â/Â0Â%Â+Â,AÂ-Â.\PL¤ ©¥§  §-"£ ª/³ŒÝ ‘§`4ÿÿÿÿÿÿÿÿÿøCsK\{ßÿÿÿÿÿ€ÿÿüÿÿÿøÿò?äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿß÷ÿÿÿþýÿÿÿÿÿÿÿÿÿÀ2?ÿÿÿÿÿÿÿÿÿÀú Oìn/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨,БUQÐSˆÙÀÆè¡GÈ€?§užeñÿÿÿÿü!Ã¥´õ·ÿøú?ÿÀÿÿÿÿÿüùòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú¥ÿÿ~ÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿà}'öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔˆH©Å¨êªI)éÄ )Ê…Ä)*J ìàctP€£ô¨b‚1S¶Ï<øÇÿÿÿÿþã:Øê«ÿü}ÿàÿÿ€ÿÿÿþ?üù?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇýR¿ÿÿ¿Gÿÿÿÿÿÿÿÿÿð ÿÿÿÿÿÿÿÿÿð>ˆû+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿê ä$TU"4„Ud4•E’öp1€¹HQðR© –§¦}ÿÿÿÿÿÈoùm{ÿÿÿÿÿðÿÿÿÿÿÿþGüŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûþÿÿÿÿߣÿÿÿÿÿÿÿÿÿøGÿÿÿÿÿÿÿÿÿøD ýŒ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ:*Jb ¡û8À[5œ(ÿ›€€Äòɾ‰ÿÿÿÿÿ€d8û¶qªÿÿ.çÿø?ÿàÿÿÿÿ€ÿ#þOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿT¯ÿÿïÑÿÿÿÿÿÿÿÿÿü#ÿÿÿÿÿÿÿÿÿü¢þà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø7777dballe-7.21/extra/bufr/tempforecast.bufr0000644000175000017500000000336213022043102015233 00000000000000BUFRòÈÿ  f€ÂÀÁÃÂÀÁ ÀÁ Á  ÀÁà      Á       Á       Á       Á       Á       Á       Á       Á       Á       Á      Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       Á       ÀÁÃÂÀntemp P@ @øÎ€Bºˆ€¼i@¥`_ËSã0P€ ;¹"$a‚((ªÀê0þçÐ P•gDc¤ @ 8r'm0ÿn¨€0aH\ôQ»dá…áÐZ1>íHЬo›M(ƹ @mA õ4# .ø€%PaòÆu0¬€r¼²¤aˆÓ·WCÿqØñˆÐ'´T½cüÆÚÄ¡‹ºÙÃñÿ‘¦óHP1pI`ÈÆKù @Ûp8` PX€=€cÅñÀpÓ€-à?iP ?R3¦€}hìÀæE@H€ÕQÎÒ!¤pG>•_@hP”P aøÕí "@FZ ,Q„ Y4€ i…À¤æ O€=iÐbD¡¦xlÁ>µµB P› 2dè× &@NoÐ#Q \´H€@iÉÀˆæ@B€ tQ¢„!§E™@ÒÓHè +쑬pI’BÑ7777dballe-7.21/extra/bufr/test-temp1.bufr0000644000175000017500000000252613022043102014543 00000000000000BUFRVb€e  4e}Ky€IpÈo2Ì06181 Vyžyœ, (€ÉD = >–A A!Ü Z££ê[̼Ë0’á¸þÿÿÿý.y(Àzê¬6¸ N €?\há){‚«2¤?ÿÿ,/ÿÿÿÿû¬¤"@Šªš‰x4JÁÂÕPÿÿ†Ø ’éÛÿÿðÌ_Óÿÿþ €mªŸŸÿÿ¤ ýU“ÝÿÿøMÆêÂrž  @=}YMÇÿÿݦ “ªéúÿÿûk¡u70@xlèÿÿÿÿþ žÿÿÿÿÿÁi€`ºQŸÿÿ®ô#3IsWÿÿõŒÿÿÿÿÜÀܪ @£= ʯÿÿÔúÿÿÿÿÿxÒqÞ»0q0FMÿÿÿÿþ0É’ ¿NŒ±ÿÿý,_ÿÿÿÿù##<3Ÿ4²ïÿÿô3È&6Oÿþ~/ÿÿÿÿüœ @•ù-“‚ѽ¿ÿÿÿÿôPZ6° ‚‚Dã·ÿÿæ6ŒFìYÿÿü»„I8¿‰ºPKˆ€R1ðwO ‚] vá– ÿþ>‚s¾Õ(4‡Æÿÿÿÿÿ¥öAÖpúÿÿH Âüß*Šî @ë×ÑB€] ƒR(%{ÿÿŠðm-o/ÿÿñ'¥ ­Ýÿÿþ$/ÿÿÿÿüì„L<9WWÿÿø}‡Ï0jìtðn(ÿÿÿÿþbŸ‚ÿÿÿÿÿÒ‚ø1°_ÿÿÿÿú Z” ÿÿÿÿÿJ ¯¯ßÝËéA@iB8óù¹­((€H­€w5ÿÿøJà¿ÿÿÿÿôð‚Ñ9Éý\Þ¨ÀÀ„*%?;”ÿÿü_ÿÿÿÿúÈK| ÿÿÿÿÿT €Kˆ_ÍÈiá|BàSý¹OÿÿÁ ÿÿÿÿÿ¥°`¿ÿÿÿÿõà `ÿÿÿÿþ¨d 1®?{ŽÓ¨ ð_ÿÿÿÿú(xTͼú®/ÿÿð&Â=_ÅÇÿÿþP/ÿÿÿÿý*€hqø|· ÿÿø ˆ_¯žâ4Qh!Ôåùܧÿÿà)‚ÿÿÿÿÿÎÄØ‡~'×qŸÿÿ€Œ+ÿÿÿÿÿJ€æ UÐÿÿþ0€Œÿð"`žÀÁƒ 0` à3€8 Àƒ€À À`8pg8p3‡8 À`œp@€@eãF4hÑ£F4hÑ£F4jQ¥F4¸Ñ£F—4jQ¥F4¸Ñ£F—4hÒãF\hÑ£K4jQ¥F4¸Ñ£F—4hÔ£J4iq£F—4iq£F.4hÑ¥Æ\hÑ£K5(Ò£F\hÑ¥Æ4¸Ñ£K4iq£F.4hÔ£J4iq£F—4hÒãF”iQ£FJ4¨Ñ£F—4hÔ£J4iq£F—4hÓãF4jQ¥F4¸Ñ£F—4hÒãF\hÑ¥Æ5(Ò£F\hÑ¥Æ\hѥƔiQ£F>4hÑ£F—4hÒãFJ4¨Ñ£F—4hÒãF.4hÔ£ 4iq£F.4hÒãF.4hÔ£J4iq£F—4hÒãF\hÑ¥Æ5(Ò£F\hÑ£K4¸Ñ£F—4iq£F4hÀ7777dballe-7.21/extra/bufr/temp-bad4.bufr0000644000175000017500000000130113022043102014303 00000000000000BUFR¼ë Û €É4‘P„ÿÿÿÿÿÿÿÿÿÿÿÿ“í‘àÕ»Ú“ñP*NÿÿÿÿüÿÿÿÿÿÿÀÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€Ìÿÿÿÿÿÿÿÿÿÿÿüˆ`ÿÿ€ÀÿÿÿÿÿÿÿÿÿÿÿÿüœL?ÿ€©ÿÿÿÿÿÿÿÿÿÿÿü8+ÿÿ€•ÿÿÿÿÿÿÿÿúyêToÿÿÿÿ€“ÿÿÿÿÿÿÿÿÿÿÿÿü$<¿ÿ€…ÿÿÿÿÿÿÿÿÿÿÿüt4ÿÿ€uÿÿÿÿÿÿÿÿÿÿÿüL/ÿÿ€iÿÿÿÿÿÿÿÿÿÿÿûè+ÿÿ€`ÿÿÿÿÿÿÿÿÿÿÿü`1?ÿ€^ÿÿÿÿÿÿÿÿú‰Šdÿÿÿÿ€Fÿÿÿÿÿÿÿÿÿÿÿÿü°%ÿ€<ÿÿÿÿÿÿÿÿÿÿÿü8?ÿ€ÿÿÿÿÿÿÿÿÿÿÿÿüÄ ?ÿ€ûÿÿÿÿÿÿÿúŠÊ_ÿÿÿÿ€úÿÿÿÿÿÿÿÿÿÿÿÿû\ÿ€ñÿÿÿÿÿÿÿÿÿÿÿûü¿ÿ€ãÿÿÿÿÿÿÿÿÿÿÿÿü$ÿÿ€Ýÿÿÿÿÿÿÿÿÿÿÿÿû¬ÿÿ€Òÿÿÿÿÿÿÿÿÿÿÿÿû¬ÿ€Îÿÿÿÿÿÿÿÿú–ªjïÿÿÿÿ€Âÿÿÿÿÿÿÿÿú£Êtïÿÿÿÿ€—ÿÿÿÿÿÿÿÿÿÿÿÿø(¿ÿ€‘ÿÿÿÿÿÿÿÿÿÿÿûHÿÿ€ŠÿÿÿÿÿÿÿÿÿÿÿÿûÔ ÿ€‚ÿÿÿÿÿÿÿÿÿÿÿýÿÿ€ÿÿÿÿÿÿÿÿÿÿÿý¿ÿ€yÿÿÿÿÿÿÿÿÿÿÿúÐÿ€vÿÿÿÿÿÿÿú©jn €7777 dballe-7.21/extra/bufr/generic-bug20140403.bufr0000644000175000017500000000030013022043102015531 00000000000000BUFR`Èÿÿè€ÂÀ"generic @O A3ðC¤7777BUFR`Èÿÿè€ÂÀ"generic @O A3˜+:7777dballe-7.21/extra/bufr/pilot-gts3.bufr0000644000175000017500000000147013022043102014542 00000000000000BUFR8b€[  4[}Õm€M•Te4415614 8m±FB€Á  Á Á ÁE   E = >–A A!¤3ûî«l”ÐЛ*¨ß6“¨ÿýÌ/ÿÿ¿ÀòÀ_ÿ÷ÐBhƒÿÿhÿá Œý /ÿûè’ÿÿ„‚ƒ˜¿ÿïPFnPÿþ M¬ ÿÿÄÁiŽÀ_ÿø 2/” ÿÿ e§ÿáÁ@œBÿüL2 Aÿÿ“‡â€¿ÿòÀú.áÿþb(K ÿÿËP£À_ÿù°‘( ÿÿ,sÿã¢N"ÿütA .ÿÿŒ‘ ¿ÿñЂ 0ÿþƒè ÿÿÇBXz€_ÿùF° ÿÿAÂÿßA5 /ÿü8-"ÿÿ‘мÀ¿ÿð@nqÿýþBÁÿÿÄ€R€_ÿú ÿÿ6á.ÿÞ Œ#ð/ÿûü„$ÿÿ‘}¿ÿìЈÿýêÁÂÿÿÄÁh5_ÿúð’ ÿþ¥ ¯ÿÔ x`/ÿú¼‡ÿÿsA¿ÿö€ ÑÿüÈ€àÿÿ@ÈP_ÿò€( ÿþPÀ\ÿÐ@d `/ÿùô€J–ÿÿ@ !0B„!B„!B„!B„!B„!B„!B‚1€tF4hÑ£F\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ4hÑ£7777dballe-7.21/extra/bufr/synop-groundtemp.bufr0000644000175000017500000001110013022043102016056 00000000000000ISID11 EDZW 030900 BUFR&N  €ÇPþ¤2¶3·¶0·2/³¤ß÷B=g|ÈøN 8ƒÙÿÿÿÿøCjÛg=Ïÿñ,ÿÿÿÿÿw²úˆ.8=þGüŸÿÿÿÿÿÿÿÿÿÿÿÿöÀp«þ˜Oþ£ÿÿÿ¿èÿÿÿÿûú@ÿûú@bÿü ý”÷öP+¦%‚çÿýú?ÿÿÿÿÿÿàÿïÑÿÿÿÿÿÿÿÿÿÿýÿÿñ@¢cK›¡ «1›Ëc¡û8@n¢Á#ïÔA @…Dßó=Oÿÿÿÿÿ€d5Öµ·`ÿÿ ÿÿÿÿÿù?ðiÿÿÿƒ@£ðŒ?üù?ÿÿÿÿÿÿÿÿÿÿÿÿíR©×ýƒßü?GÿÿÿÐÿÿÿÿ÷ô€ÿ÷ô€«ßÿøû«ïì‚çL<ŸÿûôþÿÿÿÿÿÿÀ€ÿߣÿÿÿÿÿÿÿÿÿÿûþÿÿâ‚566†ÆW7v–röp4€ÜˆšHN¯)Á ¾§5{_ÿÿÿÿÿÈk™kV¿ÿþÿÿÿÿÿòàê_|Ç@ÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿþÔ&=ÓÿÀôÿÿ÷ýÿÿÿÿÿHÿÿHjŸÿÿ?² >þÆàDtÃp2ÿÿ¿GÿïÿÿÿÿÿüÀ“ÿýú?ÿÿÿÿÿÿÿÿÿÿ¿ïÿþ(7Fehmarn _gH ÈŽ¤Ž&8|õœút—¶?ÿÿÿÿð †Á¶¸ _ÿâXÿÿÿÿÿÿ î7#÷À\a¸?üù?ÿÿÿÿÿÿÿÿÿÿÿÿí?áWýŸü?GÿÿÿÐÿÿÿÿ÷ô€ÿ÷ô€¬ÿøû KïìŒLAßÿûôþÿÿÿÿÿÿÀaÀaÿÿߣÿÿÿÿÿÿÿÿÿÿûþÿÿâ‰4†Ö'W&rÔgV†Ç6'VWGFVÅöp4€Û+lHy¶ÁiÉç:|ÿÿÿÿÿÈlkz³ÿþ%ÿÿÿÿÿòáž?|Æ àÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿþÕ>?Ó ÿÀôÿÿ÷ý#ÿÿÿÿÿHÿÿHkÿÿ?²0þþÈ QtÄ.ÿÿ¿Gÿïÿÿÿÿÿü¬§ÿýú?ÿÿÿÿÿÿÿÿÿÿ¿ïÿþ(¢Schwerin _gH ²ðD$°#ÜE›òuÆ?ÿÿÿÿ𠆼¶°ºÿÿâ¼ÿÿÿÿÿþÀî/£÷À\a|?üù?ÿÿÿÿÿÿÿÿÿÿÿÿíGaWý0_ü?GÿÿÿÐÿÿÿÿ÷ô€ÿ÷ô€¦?ÿøû#ïìn—LFÇÿûôþÿÿÿÿÿÿÿÿÿÿÿÿߣÿÿÿÿÿÿÿÿÿÿûþÿÿâ‹„w&V–g7vÆBöp4€Ûà4IÇsö€ýùÚçs|ÿÿÿÿÿÈkqjÛµÿþ%ÿÿÿÿÿåeQåËÃ*( hùòÿÿÿÿÿÿÿÿÿÿÿÿÚ4ÁOú!?ÿÿ~ÿÿÿÿÿÿÿÿÿÿÿïéÿïé 8ÿð'öF?ßÙN˜Œÿ÷èÿýÿÿÿÿÿÿÿÿÿÿÿÿ¿Gÿÿÿÿÿÿÿÿÿÿ÷ýÿÿÅ­¬Œ­Ä ìàiµ–øŽ×Áèò…Îù7ÿÿÿÿþÚòÚ-wÿü}ÿÿÿÿÿØÂ4~øŽ‚qƒPÿò?äÿÿÿÿÿÿÿÿÿÿÿÿÿµ¸€ŸôÂðýÿÿýÿ@ÿÿÿÿÿßÒ?ÿßÒèÿÿàOì–o¿²X1, ÿïÑÿûÿÿÿÿÿÿ44ÿÿ~ÿÿÿÿÿÿÿÿÿÿïûÿÿŠ8œ™[Y[ˆÙÀÒi Ääõ'!œñÿÿÿÿü!³°jÏÿøú?ÿÿÿÿÿ°:‹èÛð_á•@ÿäÉÿÿÿÿÿÿÿÿÿÿÿÿÿjï?é„ÿàú?ÿÿûþ€ ÿÿÿÿÿ¿¤ÿ¿¤5³ÿÿÀŸÙ?d`ºaà¿ÿߣÿ÷ÿÿÿÿÿþJGÿþýÿÿÿÿÿÿÿÿÿÿß÷ÿÿ‡'2º¹:¸84·³¤ÐsLg¸±Na;CàßÿÿÿÿøC^ YÝ¿ÿòÿÿÿÿÿþïÿï(PÿÿÿþGüŸÿÿÿÿÿÿÿÿÿÿÿÿö¦?ïÿÿïþ Ÿ£ÿÿÿÿÿÿÿÿÿÿÿûú@ÿûú@WÏÿü ý=÷öF“¦€ÿÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿñJ’C ss{³+‘û8@l±Z$-´A`”Þ3œ¾‹ÿÿÿÿÿ€d6£µÚÌÿÿ8Gÿÿÿÿÿöa#eC ˜a|?üù?ÿÿÿÿÿÿÿÿÿÿÿÿíbáWýŸü?GÿÿÿÐÿÿÿÿ÷ô€ÿ÷ô€½_ÿøû*ï쪗LPÿûôþÿÿÿÿÿÿÁ86¿ÿߣÿÿÿÿÿÿÿÿÿÿûþÿÿâ–”ÖvFV'W&röp4€ØÕIjS/)¼ç\|×ÿÿÿÿÿÈkýkt·ÿþ+Ïÿÿÿÿÿòò?|Æ(Âø8nÿ#þOÿÿÿÿÿÿÿÿÿÿÿÿûShUÿL'ÿÑÿÿÿßôÿÿÿÿýý ÿýý ¬‡ÿþþÉ`ûû(íÓÀ±ÿþýÿ¿ÿÿÿÿÿð5p5oÿ÷èÿÿÿÿÿÿÿÿÿÿþÿ¿ÿø¦%1¥¹‘•¹‰•Éœ€€€€€€€€€}œ 6?ª’ƒCà› NºoÙߟÿÿÿÿÿÀ2ÙÚ³mÿ‡Óÿÿÿÿÿ÷ãÜBÀ!†àHþGüŸÿÿÿÿÿÿÿÿÿÿÿÿöpSþ„/þŸ£ÿÿÿÿÿÿÿÿÿÿÿûú@ÿûú@Tÿÿü ý‘€=÷öF›¦ €óÿýú?ÿÿÿÿÿÿâ/!ßÿïÑÿÿÿÿÿÿÿÿÿÿýÿÿñL‚#«+››+c#{“1û8@kÍ+#Ÿ—à‰´Þ¿%ÿÿÿÿÿ€d7 ¶²Öÿÿ]Çÿÿÿÿÿö`í2þd`˜a?üù?ÿÿÿÿÿÿÿÿÿÿÿÿ혡Wý0Ÿü?GÿÿÿÐÿÿÿÿÿ÷ô€ÿ÷ô€Ñ_ÿøû*€¿ïì GLPoÿûôþÿÿÿÿÿÿÀ€¿ÿߣÿÿÿÿÿÿÿÿÿÿûþÿÿâ›d¶76VÂöp4€×štHDZÁŠi§M~OÿÿÿÿÿÈl÷kØ¥ÿþaÿÿÿÿÿëÿáßÿÿÿá?ãp7ü€€ÿ#þOÿÿÿÿÿÿÿÿÿÿÿÿû_J]ÿ`÷ÿÑÿÿÿßôÿÿÿÿýý ÿýý °—ÿþþË@!ûû*€ùÓ€ÿþýÿ¿ÿÿÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿþÿ¿ÿø§U1•¥Á饜µM¡­•Õ‘¥Ñè€}œ 5ô’UdÀ¥ðS®lÙßÿÿÿÿÿÀ2 ÚÞìÿ§ÿÿÿÿÿùc°¯™CxL0¾þGüŸÿÿÿÿÿÿÿÿÿÿÿÿö¨çÿ©Oþ£ÿÿÿÿÿÿÿÿÿÿÿûú@ÿûú@Yÿü ý•@…÷öU³¦(wÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿñOB#“+›#+qj[c{£Ó›C)û8@k¬L$ô¿A‡àŤËÓ½¾oÿÿÿÿÿ€d5ÛµTRÿÿ(§ÿÿÿÿÿæ@Xò…€‚@:ÀÿäÉÿÿÿÿÿÿÿÿÿÿÿÿÿjOþú”ÿàñú?ÿÿÿÿÿÿÿÿÿÿÿ¿¤ÿ¿¤5‹ÿÿÀŸÙ, ?e;ºb0ÿÿߣÿ÷ÿÿÿÿÿþ"T Wÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿý':²¹1:¹3–¡0¹;²´¶2¹/³¤±dr:Hl"’NIç9‹îÿÿÿÿøChûgnÿòîÿÿÿÿÿ`w’{à$84 Ç@ÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿþ×–:Ó ÿÀôÿÿ÷ý ÿÿÿÿÿHÿÿHkýÿÿ?³ >þËàatÅð8ÿ¿Gÿïÿÿÿÿÿÿÿÿÿÿÿýú?ÿÿÿÿÿÿÿÿÿÿ¿ïÿþ*$Meiningen _gH g³¤‰ø`Bh!N•>w'äÿÿÿÿÿð †·¶± ¿ÿâXÿÿÿÿÿÿ ð¤÷À`pt?üù?ÿÿÿÿÿÿÿÿÿÿÿÿíZ §ý(Ÿü?GÿÿÿÐÿÿÿÿ÷ô€ÿ÷ô€²ÿøû*€·ïìª'LZ§ÿûôþÿÿÿÿÿÿÁOAOÿߣÿÿÿÿÿÿÿÿÿÿûþÿÿâ§Ôg&æ¶gW'BôÖ–âöp4€Õ± GñÕ€@©´§\~ÿÿÿÿÿÈml^³ÿþdÿÿÿÿÿòá’?|F 8ÁØùòÿÿÿÿÿÿÿÿÿÿÿÿÛǯúa?ø~ÿÿþÿ ÿÿÿÿÿïéÿïé ”ÿÿð'ö-Oߨ Θ _ÿ÷èÿýÿÿÿÿÿÿÿÿÿÿÿÿ¿Gÿÿÿÿÿÿÿÿÿÿ÷ýÿÿÅU© ìÄ ìài¬3Ä’d lĹjOûŸÿÿÿÿþÕ¢Õÿü8_ÿÿÿÿÿØA‹ë– B0`ÿò?äÿÿÿÿÿÿÿÿÿÿÿÿÿ´õ‚Ÿô!ðýÿÿÿÿÿÿÿÿÿÿÿßÒ?ÿßÒÿÿàOì ¿²¨]1, ¿ÿïÑÿûÿÿÿÿÿÿTóÿÿ~ÿÿÿÿÿÿÿÿÿÿïûÿÿЏ”Ý]Ø\ QXÚ\™[™×ÙÀÒN}á ¼"»%œÍø?ÿÿÿÿü!²%ª.7ÿýÜ?ÿÿÿÿÿ°8¨Û0 }¡šàÔà?üù?ÿÿÿÿÿÿÿÿÿÿÿÿí#?ÏÿRŸü¿Gÿÿÿÿÿÿÿÿÿÿÿ÷ô€ÿ÷ô€¨ÿøû/€wï쾇LdGÿûôþÿÿÿÿÿÿÿÿÿÿÿÿߣÿÿÿÿÿÿÿÿÿÿÿÿÿÿ⯴çVW&æ&W&röp4€ÔÝèHáæƒ|À‰g}ÿÿÿÿÿÈkk¹ÿþ}ÿÿÿÿÿåŽCê5 †A(°ùòÿÿÿÿÿÿÿÿÿÿÿÿÚ‡Ÿþ¥?ø~ÿÿÿÿÿÿÿÿÿÿÿïéÿïé Lÿð'öA7ߨðΘ‚ÿ÷èÿýÿÿÿÿÿÿ„¸Þÿÿ¿GÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅbŠnŽL.¬M-Ìäìài§«Ø’éoUC°ÒòO2ú‡ÿÿÿÿþÖÖ“ÿü1ÿÿÿÿÿËÿÁwÿþ ~ €ÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿý«Üÿ­Sÿ€èÿÿÿÿÿÿÿÿÿÿÿþþÿþþÕÿÿcÀ}ýÀp釀<ÿÿ~ÿßÿÿÿÿÿø$$—ÿûôÿÿÿÿÿÿÿÿÿÿßÿüV¨‚êÎæÄêäÎ@@@@@@@@@@@@¾ÎgIÙ0†˜D?*|ò/±ÿÿÿÿÿà U-NX?ÿÆAÿÿÿÿÿû"×<¹€@ˆf¸$Öÿ#þOÿÿÿÿÿÿÿÿÿÿÿÿûEøqÿHÿÑÿÿÿÿÿÿÿÿÿÿÿýý ÿýý ¥÷ÿþþÈ ûûUÓ%€3ÿþýÿ¿ÿÿÿÿÿñXpmÿ÷èÿÿÿÿÿÿÿÿÿÿþÿ¿ÿø®É-•µÁÑ•¸€€€€€€€€€€€€€}œ 4‰¦&âY`¬®D9äSÿÿÿÿÿÀ2¶Úk(ÿ¾7ÿÿÿÿÿö_ù­ÿÿÀAOÍhÿò?äÿÿÿÿÿÿÿÿÿÿÿ€4-ÿ?ýJðDýÿÿÿÿÿÿÿÿÿÿÿßÒ?ÿßÒ<ÿàO삟¿²X 1@ÿÿïÑÿûÿÿÿÿÿÿ ¶ÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€7777 dballe-7.21/extra/bufr/gts-acars2.bufr0000644000175000017500000000025213022043102014500 00000000000000BUFRªN€ Ù 4ÿÿ¬Ä ;)$<€!"Ë@  g B K L % ' M*+,-)>FA!:8FJCYR4RAÿµ,N5ŸÙ&þ„€þÿÖI?ÿÿÿÿþÿÿÿÿÿþC¥5„"`ÿ7777dballe-7.21/extra/bufr/obs1-11.16.bufr0000644000175000017500000000030613022043102014042 00000000000000BUFRÆb€   4 }Ky€@•4aFXDHDE Æy‰*yˆdF€È  Å–A" A"!XDHDE C+ê[ÌŽrÿóŸ¼lxkV³çÐ Ù€o/¾[¡‹€ Ñ£F4hÖ,F6|hÔ&Æ¥V4j±ªÔ«V¬hÑ€7777dballe-7.21/extra/bufr/pilot-ecmwf-geopotential.bufr0000644000175000017500000000032013022043102017444 00000000000000BUFRÐb€[  4[}ÆQ HϦi'ì10954 ÐQ®F4€Á  Á Á ÁE   –A A!JÝûî2¤Ÿ°‘ŸL…ÿþØ<Ÿÿ‚ØÀ£ÿð@bšð€¼hÑ£F4hÑ£F4¸Ñ£K7777dballe-7.21/extra/bufr/obs2-91.2.bufr0000644000175000017500000000065413022043102013774 00000000000000BUFR¬b€[  4[}Ky€M•Te4415614 ¬y±Ìy±ÆF4€Á  Á Á ÁE   –A A!&3ûê[Ì”ÐЛ*¨ß”Àÿüš ÿÿÆ¢ €_ÿøH<È ÿÿ§Fÿá ÜÚÂÿüœ#&ÿÿ–bºÀ¿ÿðªPðÿþIÄ ÿÿÄÃ!/ _ÿøÀU$¸ ÿÿ dBÿàT}ÿü$- ¸Aÿÿ‡á8ˆ?ÿðàú%0ÿþ „ÿÿÇD`}ÿøèŒÄ ÿÿ"Awÿã¡àB/ÿüœ*€ÌB„!B„!B„ hÑ£F4hѥƗ*\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ€7777dballe-7.21/extra/bufr/issue62.bufr0000644000175000017500000000747213022043102014045 00000000000000BUFRØPdÿà€É4QRC_`a=…<œ H€( ‡“ð×Fkº²HÉŒüÿÿÿÿÿÿÿÿÀGù€üÑ*ˆ•D\\0Pë‘*‡¨•D{k+d`Ö *‡¨•E‹o;`PP ¼‘*†ˆ•G[p3\40Ð ˆ+*ˆÈ•H£pXcð;K*ˆÈ•Jcm U´4ÐG Ê‘*{È•Pc_óKxW­öÑ*y•McZóIÙЂ št*_h•B;MƒEØ Pƒ”‚vÑ*_h•B3M3E Ø P…‡‚|Ñ*_•A;L‹EHÜ Ð˜¹Q*Qˆ•8»G›1I(P©€ ë‘*BÈ•)sD[ xô!´cƒ ‘*2ˆ•“Aûàì$P½0ƒ#*!è•?K$ÀÐ&Æúƒ>*ˆ•kòÏit  ¬ïQ*¨”Õ <òÃyÑ ›ƒø‘*È”Ñ=jÅ9 ^* ˆ”ÄS<¢ÄYt7 ®„€‘* (”­Ã3ÊËÁlP F„¾Ñ*H” /æ(ü‘o ¸)í¨”“;&Òí°è… P…YQ)Ûˆ”ŠÓòçø¬ž é)¾È”€c¢ê°È­ ¸¾)²ˆ”x³‚àI Ѷ ”Ö‘)¬È”sêèI<Qà `…ù‘)§ˆ”k›ºðHüÑÑ 5Q)›È”dSÊÒPìÑÕ (!)—ˆ”b Ñ€ì‘ò ÄhÑ)ƒˆ”T³ÊÞ¡Ò  k†ª)vÈ”GS Ìá<’ 8†Ð)u”>ÚüjÓ)XÒ_WÑ)qè”&*èšÍ1< ÒúÏ)a”¢àZÀ@Ð  ÐòÑ)WH”BÜRÁð¼ Ò˜²ˆ Q)Oˆ”ºÙ‚Á ¼ R¿LfÑ).H” Ð°à  ÒÏ%ˆŠ) (”rÌ®x¸ Ú¨Ñ)h“ÿºÉ¨¬ìËÞ‘) H“ù¢ÄªŸ ÓX Ü ÏÑ(¹è“Ѻ® …8ÀS]Ó Ù‘(µh“Ð*­jƒÈÀ“p­Š(¤è“ÈJ© ðŠ| 9Q(–¨“¼Ê¦"z)Ó¤L pQ(…¨“²"¢Âv°¸Ó«? ‘(|蓯¡Òv¸ÓÄ ¶Ñ(bÈ“¢B¢:v°ìÓÖîŠá‘(R(“›B¥"nˆ¬ÓÚ â ñ(I“˜Š¤òl°¨ÓéÆ (;(“’º ºlÀÄSý£ BQ(è“‹ÒŸ’iˆƒ‹lÑ(ˆ“„"¢ê_蘔9B ÉQ'Òˆ“zÒ£_èP”O!‹ù‘'»“uФº]à¼ÔhüŒ1Ñ'žè“m ¤:\€„”v è R'‘h“hú£Ú[¸ÔÇ ‡'ˆ“_¤¢W9(”™¶Œ¢'|“Yj¦ŠVaÔÙd1Ñ'Mh“S¨ÊN8TçR SÑ'Bˆ“Uj§*Lý< Õ)ñÑ'È“V bHhl Õ9 îÑ&ô(“U*¡H•0UGÝŽ<‘&툓Y:¢ÂI\| ÑT‚‘&ר“…"ŸZCä UÚL—Ñ&Ù¨“‰’ŸªD 8•û1ã‘&¼¨“–ò›RA•HV(úÑ&¬¨“˜¢šªA@Iô•Q&¢È“ªrššB+˜VI ô–Ñ&¢è“ªZšŠB#”hÝÞ&©ˆ“±Ò—BAè·¦‘›Ñ&ψ“Òê“Ú?+ø ÖÁŸ‘´Q&Ôȓֺ’²>ó¼ –Ô“‘â&ݨ“Ý"‘Z>;à æˆ’ Q&êh“åú2=˰ö3&ûˆ“ïÚÒ>“Ì×qk‘'¨“ÿ"²>#ì×/ ^½',ˆ” º=;—3\Æ‘'0È”¢B<ó„MM“Ñ'C蔉B;+¼ W„0“'…H”0úˆr;K|—Ê@Q( (”a:…Š9s '×îÿ”š‘(Sh”š„º9C”öü®(`¨”…BƒB8[”û ú»(i(”ˆ¢ƒ²8k„ ô”Ý(‡(”‚„*8ëP*è,Ñ(Ûˆ”©*„8Kˆ%Ø?àaÑ) (”·Z„8{X!X]Õ¬)pH”Ëj„ª8ÓD3Ø…Ç–*È”úª…J8;ˆA˜¡¾XÑ*{È•#J…ò6›|9Ý«–ö+lè•jj:;ël30 –ÅÑ,㈕½2žz?³DC™KÑ-t(•Úª b?3DHYQ˜!-—•á ²?kDGYa‰˜L-òò>Ë@GÀÍLLÌÎ È?ÿœLÄЀ̸ØÐ¸Ä%¹É•…Í¥¹œÁÉ•ÍÍÕÉ”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€7777BUFRbPdÿà€É4QRC_`a=…<& H€( ‡“ð÷6kº²HÉŒüÿÿÿÿÿÿÿÿÀG×€üÑ*ˆ•Dm“g€øÐ ŽÑ*È•@ck3]ÈÀÐ ˆQ*~h•?›jë]ÈÄP*t•5«h»VùŒ"î]Q*v•3+g{YÁ˜Ð(Äo*z(•-³eSVј? ¼Q*†¨•+\TA¬BþÄQ*‰• [CR™°Q•ò‘*H• ÃU›Q„SŒöÑ*‘ˆ•UP)ˆk ‚0* ”ô3NãL¡ÄÐ}¶X*®ˆ”åJóJyÐ~°ZÑ*®ˆ”äJ›Iù”P‚ še*°”àsIóI‰ P‹k{*»ˆ”×;HG±¼"ЩÆÉ‘*ÞÈ”¿ BsAª¯ ÜQ*舔¼@³?ÚÏæ8Ñ+¨”ªÓ9#8éØÐô'ƒ›‘+,È”¢K5c/:¸ Ñ ˃Í+=H”£k1³,S$ ¬ÞQ+>ˆ”£›0C*›,‘ æQ+>蔣³/£)‘r ¸Ñ+!H”¬»DL y •…Q+h”¯›ÔH Ñ• kÑ+%(”ºûs£ä¼ S…èÑ+Gh”ƒÒÿ2ü ÑÏ þ$+dè”ÅC"úË0ÑÔ é3+lè”ÆÒþ¢ø³`QÜ  ÄMQ+w”ËrþÒúC¸Ñà ¶†W+}è”ÍúÿbúÓÐÑä ¥cÑ+h”ÐÂÿ ú3ìÑÿ 5†¶Q+‰H”ãÊø’÷ Òü†â+‹¨”ïÂôÚð´4-Ї;Ñ+ˆ• ºìòâ<,’6gXQ+(•éúÝÜ(c ÐÖQ+šh•9rÜÖ<$’z‘ + è•MzÖJÑ\$ÓF‰CQ+Ê(•øÚ´ª¢tD0“ nÑ+ÆH–‚¯¢¡lD0“/æ §+Áè–?¢ªÚœD2S4 Ü ²+À¨–GŠ©ÚœH2S:Ð ¾Ñ+¾–Q*© ›ÄH1“L©‰èQ+·È–j*§jˆ”H(_„ŠÑ+·ˆ–2¨bqô4Ógu #‘+¸H–†:©ênÔDS‹3 p‘+µ–£j¨jj,S«ü ³‘+§h–¾"ª¢eüˆÓº â ÔÑ+œˆ–ʺ© oÌx࣋&Q+{Ȗ纨‚d¤˜Ô `‹ƒ‘+M¨–ÿj¯Úh4ü”H §Q+=—*°rcÔ¸”2* ÔQ+5H— ²²zfDTTb è ;++(—Z¯‚d\ TqÓ ]+'—R®Jb,¸ ‡µ + —%’¯úb½8”£’ ÌQ*ÑH—(rµZbÐ Ô±€ŒëÑ*½(—&´`ˆl ”ÄiÑ*²h—$’³2aìôÔâHSQ*°È—+Z°úZŒ` ù/ …*«H—6²±Y|xU  «‘*ž(—<â°Ò[EU ÒÑ*†È—?²²ºZµ€ Õ6 î ‘*k¨—@ª¯bSu„ U|¦Ž«‘*Mˆ—Iš¨êMÌœ Õ”ŽâÑ*:—RÒ¥RLø••ŽŽåQ*8h—S2¥ZL|üÕ£‚‘*&h—WʦJ²u#Q*È—\J§BMä€ €ÍLLÌÎ N?ÿœLÄЀ̸ØÐ¸Ä%¹É•…Í¥¹œÁÉ•ÍÍÕÉ”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€7777dballe-7.21/extra/bufr/temp-tsig-2.bufr0000644000175000017500000000051613022043102014605 00000000000000BUFRNb€`   M4`}Êa F¨ÞeÌŒ07650 Na& a$ÆFF€Á ej„‚‚y‚…‚‚K„ „ „ „¶EO¹L$ƒé `eÙŸB@ˆÁ8@(Ê€œàƒ  % W`@À¢À4¨!8$€!À€ Á@ÜhN "hC7P2ø‚?€h'üçÁÀÀËÁ…À‹à„ %€ËàFF’°jh"Ð"‚€AH7pP@$˜ØžÀ LûSPOï)Å*‚@'÷•„,ýÊ@7777dballe-7.21/extra/bufr/synop-old-buoy.bufr0000644000175000017500000000026613022043102015437 00000000000000BUFR¶b€  4}Ky€H[%xÀ€€44613 ¶y‰¾yˆlF€È–A ÉA !LW"‚€õ-æ÷M(cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëäˆ4hÑ£F5›1£F4hÑ£F4hÑ£F7777dballe-7.21/extra/bufr/ecmwf-ship-1-14.bufr0000644000175000017500000000036213022043102015156 00000000000000BUFRòb€  4}ÓM EÅTlièBATFR54 òM*( @€Á$    ????! "%&$–A' A'!`BATFR54 p€ãîši¼;—ÿÿÿü@(´ Zÿÿÿÿÿÿÿÿÿÿÿÿü€cF4hÑ£ 4hÑ£F4hÑ£F4hÑ£F4hÀ7777dballe-7.21/extra/bufr/bufr20000644000175000017500000000026713022043102012623 00000000000000BUFR¶b€  4}Ky€?êËe|x44743 ¶y¶èy´ºF€È–A ÉA !LWc‚€õ-æÏÙÎvIÙ Gÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíˆ4hÑ£F5zñ£MŸ4hÑ£F4hÑ£F7777 dballe-7.21/extra/bufr/synop-strayvs.bufr0000644000175000017500000000037413022043102015420 00000000000000ISID40 LIMV 040900 BUFRäP Ù  ÇV¸ ;¨ ©©§¯¢"¤¯£¤§«$/³‚$jtÂ@”*"¦XIë:âÎÿÿÿøCW{SåÀ €dÿÿÿÄ_ß{àóø.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø­ÿI÷ÿÿïÑÿÀ2?ÿÿÿÿÿü#ÿàÿÿÿàÿü#þÖ€lûûÿýý¿ÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿþ7777 dballe-7.21/extra/bufr/airep-old-4-142.bufr0000644000175000017500000000024213022043102015052 00000000000000BUFR¢b€Ž 4Ž}Y pn bHUA17 ¢'¼%ôF€Ë–A A!8UA17 ï« ÁF!”€ópQÁ:â¹Ü%Ÿÿÿÿÿà hÑ£F4hÓãF4hÀ7777dballe-7.21/extra/bufr/synop-cloudbelow.bufr0000644000175000017500000000337113022043102016044 00000000000000BUFRôY Ù  ÀÇVÉ,H  ÇF9ÉŒs;b1Xü’aD´\/  !´2±%°¹67»<+0¹<*:¹´¶´±²(6=2·¦´µº¶5°!´:¹0·7»&´¶2¹·»5°*¹º470²&0±2¶"7µ¹°·<(90´0–¦4±:¹*2¶²¶4·!—!:²2µ7»4±²–©7½77»%·¹º2¶74&¼¹¶7»0(2±87²)·2½5·º*¹º470²'¹64±´)»90º7º±´":µ·»0·<%º±´0¹7»4±²&:µ°)²¹0µ!²¹;2·0:&4±0»2$7¶2¹·»&<¹°$7¹0*ª¨ªª«ì€ÀŸRšNtu$(+(¢Iõ»` M͘öö 㡵ï{Zò¦âŠ€ZÞÿ5«ë%^*ˆ’ÊÆ¨Z-'"ú(;)ä©ÌOÿEdncÉ%êÂdúÉCÀ¡ùlC±I‹bî³ÏMâèåÀ®ŠüGrrÌ8Ë$X†lŠWæ—ˆzZW R@9›ReÖŠ%Ønp-´\X(;]‚¼GÄ‹ Ï„ Ë(ÓÑ 6l±'H 3LªÕD¸ôn岋”ûlœ2…¹a@Î@0Š—Gç Ú$iþ Åç´ës½ µ_ûœÕ+ÿ·ýýûÌ!ª3*³5#²¯ *†IH¤Ñ(’PEð!4+ÿ»¿ÿü»¿ÿÿÿÿÿûºîÿîïÿÿÿÀ »ÿÖeà'ÿÿÖ€ÿÿÿÿÿþ¿øÿÿÿý~ÿöÆ8‡ÃŽ:Hºpꂆ^Ó®KI,úxu€ -uñ¥,#ÀÈÜ¥ ¡Ìû%DÏUQEbÏõ‹W”µ"+Ô¥)@ZxðL@ †i_²hŸšk!šk*°Uj ´ð’„l_oС Çú]HÁØb4q`E€•àúô dâ!, KÈúW€ x[X«à¶°¤2GPÂ%‰Â”ÐäÒ1þÿøL›&DÜrdÈ›ÿSqãÄÈÞ)€ÇGqÿáÀQ@ R@øˆ/ÿÿðPT°ƒ`KÀ ð0 àþËHÒ‹@Ã<0 0 0Ã(0SH”ÓM HM4€!”0@åYe–@ÿƒ–Y@` yÀ’ˆ@îîãñàQ!À8áö8ãÿŽ}ö}† –ðl x$/üÿÀù` À:QhØ`÷ÿøÁ÷ÿø}ÿþPÿÿÿÿÿÿÿÿÿÿÿÿÿÿàƒç߸…þÿÿïãþÿÿÿçá¸_ÿÿÿÿÿÿÿÿÿÿßÿÐ/óÿÿÿüÿþÿø  À@ÿÿ x@ð  !ø@ €þ ‰ù|€œù ‚ä.þ_!?Éÿ@“"2b2rˆs' ¨Š€Š†’†‘©)ÿÀÿà?@ü!’8ˆâ†€™(äN¦‡&‘‹ÿÀÿüÿUuUTUP Œ q‡t‘táÔ) ½ý€?ÿÀ@ ÿð– 2ZIÂA2B&䈤 ê+Êx—âøx þÀ Œƒ%Rù¸‚F&É`ádẢbЇ(QAO   (2€>ûÿÿÀtÀ?àpßÿÿÿÿÿÿÿÿÿÿÿÿGÿ•ÿþôàà?øþÿÿüÿð?ÿÀÿÿúÿð?üÿàÿÿþÿø7777 dballe-7.21/extra/bufr/generic-new-repmemo.bufr0000644000175000017500000000024213022043102016376 00000000000000BUFR¢ÈÿÿÔ  .€ÂÀÀÀÁ  +Renrico @P[˜\™]ÈRÞ`3b’6`…À @ 6Ý7777dballe-7.21/extra/bufr/gen-synop.bufr0000644000175000017500000010150013022043102014447 00000000000000BUFR¨b Ç  –A1 A1!n !o¬Œ¤w£Â?÷ê êm™õÿªõšØ¯ñ^¿ôÀÀx}Á2˜JúÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2eÿû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n (o¬Œ¤uRA¥šîu)òÿÿU·Ù'ñô?÷ÀÀxÒQ„F6ÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ‡o¬Œ¤@µBXˆúÊyyòÿÿ#%³WÏñô?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!núo¬Œ¤¸ÈÚ7Ǫu™ìÿÿdý²X'òX?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n%o¬Œ¤JëÚgc úléùÿÿ²ÙOòî?ó ×}B"ð_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n o¬Œ¤…OÂEv*oÿÿÿ–Wgñô?÷À¨xBR˜_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ﬌¤…0‚J™FZ'ÿÿÿŒW·ó„?ó À¥}´"JúÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n o¬Œ¤‚B‚NÄúfD¯ÿÿÿUU¡Wòî?ð™"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿü@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ﬌¤r¢‚<© ögyòÿÿ–M¬×òî?ö@¸¥‘rA…xJ6ÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ﬌¤pPÂ<êªVI?ÿÿÿœXõÜ?ù`± y²ÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿü@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n &o¬Œ¤x ÂBë úkéôÿ‘Õ´Wïñô?ó °¥’"ˆH6ÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ,o¬Œ¤u‚D²ÚÚu©ó?ÿ2Õ¼Yóè?ð¡"yDÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n -o¬Œ¤t–‚Fz–Nxôÿ¯U½W/ñô?ó ‘"yrÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n /o¬Œ¤vèBHvfÞx©òÿ²XÏóè?ð©"yCÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n 1﬌¤wâBJ:Š{9óÿÿ³X'ó„?ð¹"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n 4﬌¤v ‚JôjJ|¹ôÿ Uº×Ÿòî?ð¡"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n 6o¬Œ¤yõ‚NvÚr{)ñÿ}-¹ÖÇñô?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n 7o¬Œ¤wâBOG0b|Iòÿ›-­YOóè?ð¡"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n 9o¬Œ¤ha‚=+ÆþTŸÿÿÿY§òî?ö@Àx¿ÁB JúÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿü@?²eÿû/ì€2eÿû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ;﬌¤knÂ@”* ’Yðÿÿ¬XOòX?ö@© yrÁ@ÈÀ_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n o¬Œ¤iC¡j~2Ÿÿÿÿd­œWWòX?ð©"yCÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n Co¬Œ¤fNBEø`(ëŸÿÿÿFÍuU7÷Ð?ó °0}BÁ"ˆ_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n Io¬Œ¤i–f{Yðÿ¬Xçóè?ö@Á y”ÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n o¬Œ¤GÉÂUýðZ@oÿÿÿZÕ¡VGòî?ð¡"yDÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿü@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ‚﬌¤E—BUG¦&xò?ÿ-UºY'òî?ð¡"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ƒï¬Œ¤?Ú‚SÎ 6/ÿÿÿ<uV·ôL?ó ¸UDA!‚x_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ﬌¤=i‚Pôà¢v©ïÿK}¼Xñô?ó ¸¥‰r!…ðJ6ÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n œo¬Œ¤Ðn{Iò?ÿmºXðú¿ôÀ¸¥’2ðJÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ëo¬Œ¤ ‚IÕö >k)æÿÿ-©ZGñô?ó ÀU¿Á"¨Hr C2ÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿû/ì€2eÿû ¿€døL¿ÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ðo¬Œ¤ cSêúwÉî?ÿ(µZ/ðÈ¿ó ¸UT"¨J!6ÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n!o¬Œ¤2BBø&joùì¿ÿZ­¡X·ðÈ¿ö@À7‰_Á!ÁˆF0  D#ÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2eÿû ¿€døL¿ÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n!o¬Œ¤'í‚B[æqÙêÿ#E¦YWñô?ôÀÀU}¿Á2¨J!6ÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2eÿû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n!*﬌¤câQ„®uÙìÿÿ(•±ÙÇñô?ôÀ¸UÂÁ1‚HF @bÂÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿû/ì€2dËû ¿€døL¿ÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n÷﬌¤ê VVy)æ¿ÿsý²Y_òî?ôÀ¸ACÁèF0¾ ÀbÂÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ¿€døL¿ÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤ßûz8±ðB{)ì¿ÿZM„WÇð´ÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤à ê=làR{)ï?ÿ<…ׯð–¿ð¡"yCÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n o¬Œ¤ê[º?†ªyùðÿÿ<MŒØðá¿ð©"yCP°_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n,o¬Œ¤¼âf*[ÿùÍÿxmŠX?ô°ÿÿàøxÿÿÁ/ðIø  Âÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÿ€ÿü&@?²ÿÿÿÿÿÀÿÿû/ì¿€þû/ì¿ÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤çü*BNà®zYóÿ(­’Ø'ðú¿ñ€°×s…ðLøÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤äRªBuðîxÙñÿÿ(ý˜Øðúð©"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤ã¤úB[æšz™ò?ÿ<Mž×çñô?ð±"yBÁ``_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤áÐ:Bhêr{)ñ¿ÿ<MžØñ?ð©"yBÁPà_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤åóZCïŠR| ó?ÿ2M„×ïð‡ÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤ãê‚D²ÚVz¹òÿÿ<õ‚××ñÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤â}òDJ°¾zYòÿÿAý ×‡ñô?ð©"yBÁP°_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤äRªGÖN|yôÿF•ØWðæ¿ð©"yDÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n-﬌¤æ'jNOÊêzùøÿÿPýwWwð ÿàÏÿÿÿÁŸÁ@_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì¿ÿÿÿû/à?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n.﬌¤âIÒNvÚâ{™øÿÿFUW·ð#ÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n8﬌¤ÚZš;"ðnzIíÿÿPýŸØñ?ð™"yBÁ0_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n-﬌¤¢:FmÉÊÿÿ}MŒX7õÜÿàøUÿÿÁÂ0GøO ¿"ÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿÿÀÿÿû/ì¿€þøì¿ÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n>o¬Œ¤Ü/R>#*ºy9î?ÿ<ŒX'ÿÿÿÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n?o¬Œ¤ØQÂ<¶–bz¹î¿ÿ<ý¤Øoñ?ð™"yBÁ0€_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n@﬌¤Øª?‚º^{ ïÿFý¢ØWðúð©"yBÁP°_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nAo¬Œ¤Þ Z@ÕFN{ÉðÿFýžX_ñ,ÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nA﬌¤Ü/R?ÝàVzùïÿ2M—X7ð×ñ€™"ysÒ F¬ÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?²dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nE﬌¤×µ‚AJvN{ïÿÿAý¡XwðúÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nGo¬Œ¤ÝÐBú¦ziñÿFý X/ñÂ?ð©"yCÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nIo¬Œ¤Ú±RCzZv{ ðÿFM¡X/ðÃÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nI﬌¤ÙV2CÕ€‚{ðÿÿP¢ØñÂ?ñ€±"yrÁÍpLÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nNo¬Œ¤Û“Eø`z{‰óÿFMXðúÿð‰"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿøì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nP﬌¤ÝÐG~{ùõ?ÿ2õŒ×ïñ,¿ð©"yCÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nQo¬Œ¤ÙŠBH:.wÉóÿ7ý Xwò¼?ð™"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nTo¬Œ¤ØîG0à*y õ¿ÿA­œXñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nUo¬Œ¤à êJ1R|Yõ?ÿA­–Øñ,ð±"yC``_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nVo¬Œ¤ÜËšJÍZâxÙõ?ÿ<­X7ñ?ð©"yCP_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nZo¬Œ¤ááªLæ^}Y÷ÿ<­“×ÿñ^ÿö@ÿÿÿÿÁOÂxIøaÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿøÿÿÿÿÿû/à?€þÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n\o¬Œ¤ß‚N5ÀJ}‰÷ÿÿ#­‡Xwð}?ð™"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n2o¬Œ¤üT‚Ofrr9Í?ÿx•‡××òîÿÿàøxÿÿÁÃÈKøúÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?¡eÿÿÿÿÀÿÿû/à?€þÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!ndo¬Œ¤ÕàÂ;WV{ í¿ÿF­¡X·ÿÿÿÿÿà©"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?ÿÿÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nk﬌¤Ó×ê>=6nzIï?ÿ7U¢X7ñÂ?ð™"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!npo¬Œ¤ÒYâ@,N{iï?ÿPýXOñ?ð‘"yBÁ °_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nu﬌¤Ñ›CSJvvYðÿFM§×ßñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nwo¬Œ¤Ï^C¡jZvyðÿÿ-ý¥Øñ?ð‘"yBÁ °_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n{o¬Œ¤ЖšDdºnu©ð¿ÿFU­×ÿñÂ?ð‰"yBÁ°_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n|﬌¤Ö}EëZöy)ò¿ÿF›X/ò¼?ð™"yCÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n~﬌¤Ñ2ÚGJê†{¹ô?ÿK­¡Ø7ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n‚﬌¤Ðb‚Iª–{óÿ<ý¡XoòX¿ð‰"yBÁ`_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n„o¬Œ¤Õ›:I»ê†vÉõ?ÿKM¡XGñÂ?ð‘"yCÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n…﬌¤ÐʪK5†âz©÷ÿKýžØ/ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n†o¬Œ¤×éšKøÖZyIúÿÿi­˜XÿÿÿÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n‡o¬Œ¤Ðb‚LnÚzi÷?ÿF­žØñô¿ð‘"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n7﬌¤ïqÒëàvu9×ÿÿsõˆ×ó ÿÿàø¥ÿÿÁoÅH_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÀÿÿû/à?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nŠï¬Œ¤ÓoÂMJ:xùö¿ÿÿÿýœ×_ñÂÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿÿÿö@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nŒï¬Œ¤ØîMô¦^wøÿK­¢X/ñÂÿó ˜x}C"P_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤Õ›:OÖjz ùÿPý•ØgñÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n‘﬌¤Ò*P €yÙ÷ÿÿ-­›Xòîÿñ€x}BÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n˜o¬Œ¤Î%š;¥&Žx)ì¿ÿ7­¯Øñô?ñ€‰"yrÁɰ_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n˜ï¬Œ¤Ë´š;˜ šyYí?ÿF­¯X?òX?ð™"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n™o¬Œ¤É‚;Ù:âw™ìÿÿKý´X_òî?ñ€‰"yrÊ _ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤Ç²<Рw)ì?ÿKý®Øòî?ð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nžï¬Œ¤ÈsB=â¾tIí¿ÿ(ý®×ÿñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ï¬Œ¤̧Š>ÌpÞx‰îÿÿF­§Øwñ?ð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n¢ï¬Œ¤Æž‚@ð^qyîÿÿP­­ØgñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n§o¬Œ¤ÊäBBÊ&wñ?ÿ7­¨Øoñ?ð‘"yBÁ °_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n§ï¬Œ¤Èþ A ZZuùîÿÿZý°ØoòX?ñ€ˆ×rÁ†à_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n©o¬Œ¤Ë:úBë "wéñÿFý«Xñô?ð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n®o¬Œ¤É‚E5†vòÿ2ý§Xñô?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n²o¬Œ¤Ç‘zGqúÊp©ò¿ÿAMØ'ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n³ï¬Œ¤Ë´šH@þy òÿFM¦Wóè?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n´ï¬Œ¤Ç²H·€~v)ñÿÿF­¦Wïñô?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n¶ï¬Œ¤ÊòJr6Î{ ö¿ÿ2ý¦X§ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n¸o¬Œ¤ÆÒ’K\– .néóÿAM¤Wÿô~?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n¼o¬Œ¤Æ$âNƒà"y‰ö¿ÿ<ý¤WßñÂÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n½ï¬Œ¤ÊòM1V†v õÿÿ2M¨Wgôâ?ð‰"yBÁÐ_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n¾ï¬Œ¤Ë:úMç xYö¿ÿ7M¨×—ó„?ñ€ˆx}BÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n¿o¬Œ¤ÌPÚMô¦Öz©õ¿ÿFý¥W—ô~?ð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÀo¬Œ¤Ë:úNBÆ yùö¿ÿAý£Wïôâ?ñ€ˆx™Bÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÀ﬌¤ÊòNæþyÙöÿ-ý£WÏó„?ð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÂ﬌¤Ë´šNBÆÖw™÷ÿÿÿý§×¿ÿÿÿÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿÿÿö@?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÄ﬌¤È Pe¦Êv ÷ÿ­£XòX?ð‘"yC _ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÆo¬Œ¤ÌÂQ¸0r|™÷?ÿ(ý×ÿòîÿð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÈo¬Œ¤¼Ú‚9÷vöxií¿ÿP¶WÇõÜ?ð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÊo¬Œ¤ÂXÂ8}Ú¦x ìÿÿdýµØ7óè?ñ€˜×BÁ†àFRÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÍo¬Œ¤¾:“¶¦pií¿ÿdý³×¯ôâ?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÑo¬Œ¤¼>B<© N_)í?ÿx­»YOõÜ?ñ€‰"y²ɰ_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÔo¬Œ¤ÀÚ=yæŠu9î?ÿU­¸Xó¶ÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÕ﬌¤»mê?4š^>ÿÿÿ_ŸÖ/ôL?ñ€‰ yrÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n×o¬Œ¤ÂÀê@F ¶oéíÿÿKU¶Wóè?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÙ﬌¤¿K‚AWz Æj©ïÿÿU­¦Xñ^ÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÛo¬Œ¤¼Ú‚B'Ð Þk ïÿÿUý©Ø'ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÛ﬌¤º’A¥šòn™ïÿÿ<­§XÇñ?ñ€‰"yrÁÌ€_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nÞo¬Œ¤¿K‚C®pÞo™ñ?ÿxU£ØÏðúÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nà﬌¤¾DÌæ ÒbYñ¿ÿ#ý¤Øñ^ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nâo¬Œ¤ÂGREª@¾P9ïÿÿZý£×¯ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nâ﬌¤ÂõE·F*ÿÿÿ‡ý™ÖWò¼?ñ€x}BÁ BÚÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!não¬Œ¤óâF,v êk9ñÿÿM­XOñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nåo¬Œ¤Á BGJê ’^éñ¿ÿZý¨W‡ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!næo¬Œ¤½ÞòGÍ Òp™óÿÿU›XOñ^ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!néo¬Œ¤¿šIÈðÂuÙóÿÿ7U¥WÿñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nê﬌¤¾GJ¦Jzréóÿÿ-ý¤Øó ?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!në﬌¤½1:K5†Šrùõ?ÿ(­¥X/ñô?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nío¬Œ¤Ä KëÐæu¹öÿAý£XñôÿÿàÿÿÿÿÁOâ_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿû/à?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nBo¬Œ¤èRâ5ÐoÿùÚ?ÿ‡m‹VÿóRÿÿàù"ÿÿÁÉ_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÿ€ÿü&@?²ÿÿÿÿÿÀÿÿû/à?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nîo¬Œ¤ÂŒÚMŒz~u©ô¿ÿ2MªW×òî?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nðo¬Œ¤¼Ú‚MK`šqÙô¿ÿ#­¡Øñ?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nôo¬Œ¤ºÑ²OG0 Úk¹ó?ÿ­ªØó„?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nõo¬Œ¤Á BNÄúÆv õ?ÿ(ý¨×¿ñÂÿÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nøo¬Œ¤ÂÀêQæVx9õÿ2ý¨WŸóè?ð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nù﬌¤»\zRð° ökYó¿ÿU¢×ÿò&?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nú﬌¤¶‹ê7î  jkùëÿsýµ×÷ôâ?ñ€ˆ¥}rÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nûo¬Œ¤·(*9©VqyíÿKý¹X'õÜ?ñ€¥}r`_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤·R;/ö®tYî¿ÿUM³×ŸõÜ?ôÀ™ y‚ÈÀFTÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤±uÒ;¥& mùïÿ7­ºXôâ?ñ€˜¥rÁ„ˆFTÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€2dËû ?€dÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤²r™ðÿ‡U¬×ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤¬§J Þ*jfiœ¿ÿ_µ^Uwñ,¿ü€À7“ÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤¶R;J¾oùïÿiM¯×¯ñÂÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤µZ= öÎSYìÿÿPý§Vç÷Ð?ñ€‰"yrÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n o¬Œ¤´=Š?Ýà *mðÿÿdU¤WÇò&?ôÀ˜×r1†à_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ﬌¤¶ôA0j ¶bYîÿÿ‡U®×wñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!nDo¬Œ¤ðSšTFªs9Õ?ÿsí‹W‡óè?ÿàø×ÿÿÁ/Åð_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿÿÀÿÿû/à?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤·RBø& ’hYñÿÿ–U XgóR?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤³‚C®p¦:/ÿÿÿ¥­§Õ÷ôâ?ð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤³æÚEú J[ïÿÿ<­¦×¿ó ?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤´ëBF,væ9ÿÿÿiý™Õ×ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüH²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤¸üêFȶ .d¹ñÿÿ­šXgñ,¿ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤¸üêGÚ& bgùîÿÿU£Ø/ÿÿÿÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤³‚GJêv?Oÿÿÿd­¡VWõÜ?ð‰"yBÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüH²eÿû/ì€dËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤±©òGqú N‰ï¿ÿd­ ×¯ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤³æÚI`ÆX ñ?ÿ›­ªW‡ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤º5jI»ê Ziéð?ÿ(­¢ØñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ!ÿü@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤·ç JX* eið¿ÿ7­§XgòX?ÿà"ÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿÿÿì€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤²âjJX* J_éðÿU­±×ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!no¬Œ¤²hÒKÑÆJ;ïÿÿÿi­VgÿÿÿÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n﬌¤´OLæ ^_Yð¿ÿ¯U®×_ñôÿÿàÿÿÿÿÁÿÿø_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n ﬌¤¶ÀL• Ê]Éñ?ÿU©Wòî?ñ€ˆ¥}B _ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙ2ÿü&@?²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777BUFR¨b Ç  –A1 A1!n!o¬Œ¤²hÒLÖ06&ÿÿÿÿxý’Ö·ôâ?ñ€‰"}C¨_ÿÿÿÿâÿÿÿÿÿðøÿÿÿÿÿÿÿÿÿÙÿüL¿²eÿû/ì€dËû ?ÿÿÿÿÿÿÿÿÿÿÿð7777dballe-7.21/extra/bufr/obs1-13.36.bufr0000644000175000017500000000030613022043102014046 00000000000000BUFRÆb€   4 }Ky€E ÈsG¸63112 Æy“Xy’ F€È  Å–A" A"!X63112 ê[ÌØ25§ÿó‹>.Ò ®oãèÿÿÿÁÿÿ÷¾ýz‚€ Ñ£F4hÖ­F6|hÒ¥F4hÑ£F—>|hÑ€7777dballe-7.21/extra/bufr/bufr2.crex0000644000175000017500000000026513022043102013561 00000000000000CREX++ T000103 A001 D08003++ 44743 010 000 0 2004 11 30 12 00 4302 -01245 10084 10084 0016 07 /// //// /// /// /// //// /// // // /// // // //// // // // 2882++ 7777 dballe-7.21/extra/bufr/synop3new.bufr0000644000175000017500000003354613022043102014513 00000000000000BUFRÜb€ 4}¨<H4`gS,16080 Ü<,F€Ç  –A1 A1!n (/µ€u2ÂA£ÞoÉÝ`â‡E¨ÿÿñôLk@˜7•B1Á°H@Hÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4iñ£R«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<H`Rfï16084 Ü<,F€Ç  –A1 A1!n */µ€nùCjm)Üಥõ´ZßòîL'€×r!†H ÿÿÿÿÿüÿÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Ièæg~$16110 Ü<,<€Ç  –A1 A1!n 7/µ€wâBOG0’w)Ýžˆ¥ÏZ·óè‚€ xoB J ëÿÿÿÿÿüÿð hÑ£F4hÏ<›>4hÓcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÂb€ 4}¨<H¿ fbð16134 Â<,F€Ç  –A" A"!T C/µ€f/Eø`(5èHMæ 2jÀ+·øE¦'ðÿýï€ÿÿ€ @1£F4hÑ£K•>TÙñ£P›}XÑ£F\ùñ£7777BUFRÜb€ 4}¨<GÇúf216153 Ü<,F€Ç  –A1 A1!n L¯µ€c!Â>?Ð ¶gIÝ’}E´Ú7óèŒ UB!‚Ð_ÿÿÿÿÿÿÿü_ÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<HŸÌeý`16158 Ü<,F€Ç  –A1 A1!n O/µ€_ÖDþ`ZxIã ’}EÄ['òî‚@¸x™B20H0±ÿÿÿÿÿü?ÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Hã.eG¼16206 Ü<,2€Ç  –A1 A1!n g/µ€T{ÂGp^x‰ä FE¾Z§òX‚ —ÿyB ÇX_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcO«4¸Òã2e.4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<JØe <16230 Ü<,F€Ç  –A1 A1!n s/µ€P“ÂP¦Ànwiàß@_U¿Ûñô‚™ yÂ0ÇX_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÂb€ 4}¨<J@ÊdaD16252 Â<,F€Ç  –A" A"!T ~/µ€FBRPÞA¹€”O±¥€òç«ûù,Aÿýï€ÿÿ€ @1£F4hÑ£K•>TÙñ£P›}XѪÆ•J‘£7777BUFRÜb€ 4}¨<KÌd T16270 Ü<,<€Ç  –A1 A1!n ‡/µ€@µBX†`u‰åŸ`_¥æYoñô‚ ‘†y’! _ÿÿÿÿÿÿÿüÿð hÑ£F4hÏ<›>4hÓcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<IšÆcâP16280 Ü<,F€Ç  –A1 A1!n Œ/µ€>%LÖ0 &lYæ‘n5Ò\ÇñôŒ˜xB20_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<J~Pc2ˆ16310 Ü<.F€Ç  –A1 A1!n ›/µ€3(‚Sò€ &l©çÓ‚õâY÷ñô‚ ƒHyBÁÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Kƒc­”16320 Ü<.F€Ç  –A1 A1!n  /µ€:ÙB\pjyIèQFEÓ[Ïñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Kc‚œ16325 Ü<.F€Ç  –A1 A1!n ¢¯µ€8)ÂXÔ€ry ç_r‘õÛ\ßóè‚@ ¥BA…_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Kªc x16360 Ü<.F€Ç  –A1 A1!n ´/µ€0·‚]Pðrè_Q-UÛZ×ñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<J˜®aÏ16420 Ü<.F€Ç  –A1 A1!n Ò/µ€ñTÅpuÉæŸiUá[ÿñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<InÔa˜`16429 Ü<.<€Ç  –A1 A1!n Ö¯µ€†Kv zy¹é`a_¥Þ\ÿòX‚`™ yrÁ0É8_ÿÿÿÿÿÿÿüÿð hÑ£F4hÏ<›>4hÓcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Joª`¦016480 Ü<.F€Ç  –A1 A1!n ð/µ€ cS}Pv)ç`Ù\ßñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<GÇúcô16522 Ü<.F€Ç  –A1 A1!n!/µ€9ßB>?Ð rkÉê_°»[Oóè‚@ˆU}B_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<H_Xc ô16550 Ü<.F€Ç  –A1 A1!n!/µ€2BBúÀšn©å ’UÔYgóè‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÂb€ 4}¨<I(„gý16021 Â<6A€Ç  –A" A"!T ¯µ€Ñ‚ID %™ó(MèO¸žòÄ+÷øˆ&'ðÿýï€iÿÿ€ @1£F4hÑ£K•>TÙñ£P› ¨Ñ£F\ùñ£7777BUFRÂb€ 4}¨<HßFgßÌ16022 Â<8A€Ç  –A" A"!T /µ€}üÂFú0'…êˆMæ”*â¿+óøB&'ðÿýÿÿ€ @1£F4hÑ£K•>TÙñ£P› ¨Ñ£F\ùñ£7777BUFRÂb€ 4}¨<IS|hQ16033 Â<8F€Ç  –A" A"!T ¯µ€…BJ›àj$Mèo›Ñ¬Óøú¦6@`TÙòåP›•XѪƫR­Z±£7777BUFRÂb€ 4}¨<Gšg´Ô16052 Â<8A€Ç  –A" A"!T /µ€{MB<Р<Á¦Ö¦¯±Œ€ò¥©ãøˆç'ðÿýï€#ÿÿ€ @1£F4hÑ£K•>TÙñ£P› ¨Ñ£F\ùñ£7777BUFRÂb€ 4}¨<Hìòdÿx16168 Â<8F€Ç  –A" A"!T T/µ€O÷‚GgK‰€/ùAØ-où¤ ÀHι@ÿÿ€ @1£F4hÑ£K•>TÙñ£P›•XѪƫR­Z±£7777BUFRÜb€ 4}¨<I/ZeÔ\16172 Ü<8F€Ç  –A1 A1!n V/µ€]EÂIzÐ &g äŸÃ¯ZÏðÈ‚`°U™B"¸J0{ÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÂb€ 4}¨<I…JeÞ 16179 Â<8F€Ç  –A" A"!T Y¯µ€]âL*P:OÉ€ÏáË¢Ú-£ùô é6@`*Ïï€dÿÿ€ @1£F4hÑ£K•>TÙñ£P›•XѪƫR­Z±£7777BUFRÜb€ 4}¨<IS|dÄà16224 Ü<8F€Ç  –A1 A1!n p/µ€LNJ›à jfYå !}õÃ[wñ^R@¸UBRÐDH`ÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Jbødµ@16232 Ü<8F€Ç  –A1 A1!n t/µ€KTSÀòuIáßEâ[§óè‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Iiòdpä16245 Ü<8F€Ç  –A1 A1!n z¯µ€GBKO–w¹å³´UÏ\oòîf@ U…B"@BH` ÆŸÿÿüÿÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÂb€ 4}¨<J¿¾dz¨16258 Â<8F€Ç  –A" A"!T /µ€Gª‚Uýðr>逓ÿÿ²Êé,/ùôAÿýï€ÿÿ€ @1£F4hÑ£K•>ThÑ£P›}XѪÆ•J‘£7777BUFRÂb€ 4}¨<Jë°b«Ä16344 Â<8<€Ç  –A" A"!T ¬/µ€*¼BW]€!" èMðï¨Ã€*ß,øúA H*¾¡@ÿÿ€ @1£F4hÑ£4hÓcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<HKÐcÞh16531 Ü<8<€Ç  –A1 A1!n! ¯µ€=æ‚B^€vyÉéŸásåºÚ§òî‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÏ<›>4hÓcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Hb¯¬16546 Ü<8<€Ç  –A1 A1!n!/µ€*úÂ@°Ð²xéê  ¥¹[GòX‚@ˆU‘BÂ@_ÿÿÿÿÿÿÿüÿð hÑ£F4hÏ<›>4hÓcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<HKÐb~Ø16564 Ü<8F€Ç  –A1 A1!n!/µ€'í‚B^€pÙåŸáŒ…Ë[¿óèR˜xB2C¨_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<G•2g*(16059 Ü<@F€Ç  –A1 A1!n ¯µ€r¢‚<© ¾b9ÝŸó¥žÙ‡ðúÌl€˜x‘¿1èL(Àÿÿÿÿÿÿÿÿÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<GþªgxH16066 Ü<@F€Ç  –A1 A1!n !/µ€w„‚?õP Žg¹Ý_²U¢YïñôLl€Àx›ßR¨P0¢ÿÿÿÿÿüÿÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<HϦgIh16090 Ü<@F€Ç  –A1 A1!n -/µ€t–‚F}0Rr¹Þ #5À[ïòîŒ+@ xrA„ H'ÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<I^:g`Ø16105 Ü<@F€Ç  –A1 A1!n 4¯µ€v ‚JñÐZwéá õ»[—òîl€°¥oa…ˆP!ÿÿÿÿÿü_ÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<IzŒfA¼16149 Ü<@F€Ç  –A1 A1!n J¯µ€dÂKÔ`vwYáòU¥Æ\/ñôÒl€°xÏC0H@„ÿÿÿÿÿü¿ÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<JœcÔ¤16289 Ü<@F€Ç  –A1 A1!n ¯µ€=JBPôàbt©ç 0FUÔÚŸòX‚@¸×}Br_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<JÝ bWÈ16362 Ü<@F€Ç  –A1 A1!n µ/µ€%|‚VèP~xIå^ø#õÖZ/ñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<I©laË(16405 Ü<@<€Ç  –A1 A1!n ʯµ€²‚MK`–y‰é_a ¥Ý\Oñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÏ<›>4hÓcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<JgÚa@|16460 Ü<@F€Ç  –A1 A1!n æ/µ€ÂS>Іxùèß`‚õÑ\Oñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<GÒ¸c©¬16520 Ü<@<€Ç  –A1 A1!n!/µ€:šÂ>•Àây)ìŸÃnU²Úïòî‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÏ<›>4hÓcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<HÞbœ$16560 Ü<@F€Ç  –A1 A1!n!/µ€)ÂB@þðVz)ê_Ò›E»Zóè‚ U…B¸BHfÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<H]dg‚ 16076 Ü<FF€Ç  –A1 A1!n &/µ€x ÂBë öfIß`ƒx•§ÚgñôLl€Àx›ßB0N0„ÿÿÿÿÿü?ÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Iv¤dŠH16239 Ü<FF€Ç  –A1 A1!n w¯µ€H¤‚Kµ æqÙåŸònEÌ\ñ^Ò€ÀUŸß2BèJ0uÿÿÿÿÿÿÿÿÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<KrcÅ16312 Ü<FF€Ç  –A1 A1!n œ/µ€4jcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<IO”g~$16099 Ü<FF€Ç  –A1 A1!n 1¯µ€wâBJ| žvéâ_c#E¼[/ñô’g€© yrPÉ8_ÿÿÿÿÿÿÿü_ÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÂb€ 4}¨<Gg 16061 Â<ÀF€Ç  –A" A"!T ¯µ€pPÂ<èZD €ŒpÀzǬGúî¦&@`TÙñ£P›•XѪƫR­Z±£7777BUFRÜb€ 4}¨<L–rb!16643 Ü< F€Ç  –A1 A1!n!A¯µ€"‚d³RyÉè_DÎ[÷ñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<M7”bæ\16648 Ü< F€Ç  –A1 A1!n!D/µ€.eÂi¼ ju)éߣÛZ_ñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<NÀbet16684 Ü< <€Ç  –A1 A1!n!V/µ€&WBp²wiä_r•ä\?ñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÏ<›>4hÓcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<MmJc”016622 Ü<F€Ç  –A1 A1!n!7/µ€9CkjPRyÉèßÜZWñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<LCpbäh16641 Ü<F€Ç  –A1 A1!n!@¯µ€.F‚b€Ryyæß‘Í[¯ñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<LÈ@a˜`16682 Ü<F€Ç  –A1 A1!n!U/µ€†fBzyiéßÄZ÷ñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<M·‚a”x16716 Ü<F€Ç  –A1 A1!n!f/µ€G‚m¼~xäŸ8å[wñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>\ªcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<Mݘ_»Ð16746 Ü<F€Ç  –A1 A1!n!u/µ€û½nìÀžmùã_ƒ‡¥Ö\/ñô‚ÿÿûßÿÿø_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcO«5XÑ£R©R4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<IΈgŸX16108 Ü<Ž<€Ç  –A1 A1!n 6/µ€yõ‚Nt@rw¹ãŸÃ(¥Á[_ñô‚@˜x²2 Nëÿÿÿÿÿü_ÿð hÑ£F4hÏ<›>4hÓcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<I[LffØ16148 Ü< @F€Ç  –A1 A1!n J/µ€fm‚JÚ`jvÙÞ__•Ã\óè‚™†y²Á0Ê(_ÿÿÿÿÿÿÿüÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÂb€ 4}¨<H®rhTü16008 Â<"¶F€Ç  –A" A"!T /µ€…OÂEsxMãRª€¢È«çø2†6@`*Ëï€ ÿÿ€ @1£F4hÑ£K•>TÙñ£P›•XѪƫR­Z±£7777BUFRÜb€ 4}¨<IGÄg„16098 Ü<-Ú<€Ç  –A1 A1!n 1/µ€x@J> úu9áD#¥¿['òîŒ&@¡ yr@É8_ÿÿÿÿÿÿÿüÿð hÑ£F4hÏ<›>4hÓcR«5XÕjU«V4hÑ£F4hÑ£F4`7777BUFRÜb€ 4}¨<JØcš 16294 Ü4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777dballe-7.21/extra/bufr/gts-acars-us1.bufr0000644000175000017500000000021013022043102015116 00000000000000BUFRˆ8€  ÿÿ¬Ä ;ÁAÁBË !!C † ë:KRXCOOBAFJCYR4RA!ÒšÂì“ FÎiRÆÁü†\66Õÿÿÿûÿƒø?ƒø?€7777dballe-7.21/extra/bufr/temp-bad2.bufr0000644000175000017500000000144613022043102014313 00000000000000BUFR&b€e 4e}±XMÌþj¬˜33393 &X5ÈF.€É–A A!—A A—ÿ¦BÄŽíŠÀª²`›™üÓþ ˆ?üŽq&ïÿÿÿÿÿÍ›Rµ "©2©®™ê€Qð/ÿÿÿÿýd¢ÿÿÿÿÿ¢D&ˆé´wFô €H !*Šh£ÿÿïPÑÑmÿÿýÈ@_ÿÿÿÿúÈ#6°ˆã@3ŸEf¦‚mgÖnÿþÊÐ@x¬üÍOÿÿ×ÿÿÿÿÿ‡b¾dÓg,ÿÿN!Yv^eþ ‰tÿÿÿÿÿ¾„a _ÿÿÿÿ÷¨–@€8› þú£uÿÿÿÿßB¼c/ÿÿÿÿûüW‹¸@#‡ÿ} aÅ?ÿð·ÿï¡,' Ÿ~ÿýôœÿÿÂïÿÿÿü‹`_ÿÿÿÿ÷ÐU €Zyÿ aÿÿÿÿà.â¢DFÿü …F ÿÿ‰Ÿÿÿÿø‡¿ÿðïÿðàF¡øú þ&Á^ #xCßÿÌ@ðDóhÿúPº ÿÿÿÿÿJ€cÂÿâoÿÿÿþÃÀ8p0gp‡8 Bç\ @b¿4hÑ£F4hÑ£F.4hÑ£F5(Ò£F\hѥƔiQ£F.4hÑ¥Æ4¸Ñ£R*4hÑ¥Æ4¸Ñ£F—4iq£FJ4¨Ñ£F—4iq£F¥ThÑ¥Æ\hÑ©F4iñ£FJ4hÑ£K\hÑ©F4iq£F¥4hÑ¥Æ>4hÑ©F4jQ£F”hÑ£F—4iq£„ÿÿþýûÿÿß¿ýû÷ÿß¿ÿýÿÿïÿ¿ÿýÿ÷ÿÿ¿~ÿÿÀ‚€ÀM ,À&H0’ ¡wƒlÁâa20²Ðq$Fò'Ù™ ‡Æänây7777dballe-7.21/extra/bufr/temp-bad5.bufr0000644000175000017500000000177613022043102014324 00000000000000BUFRþÿÿÿe ۀɖA A!À (ûí Wôiföÿüy?ýJv¨ÿú´ª N €sZœ2©¼‚ÿëJ²ÿÿÿ7@OÿýiV_ÿÿæ> ÿÿ® ¤ÿÿü[ÿÿÿÿ ѨjPïÜÿÿÔ-?ÿýô?ÿÿÿÿòø=ô ÿÿÿÿþ_7¥‚ÿéîÿþðPOÿý;ÌÿÿÝØ ÿÿ§zÿÿû®?ÿôÛC¿ÿÿp¨'ÿþ”çÿÿíòÿÿÒ|}ÿÿýµ„€ÑªKø¶ˆÿÿIs/ÿÿö¸ÿèþvÿÿþÖ°/ÿÿÿÿùh Ùª ÿÿ¢ZÿÿûÁ?ÿô?ÿÿ]Àÿÿÿÿüæ+Ÿÿÿÿÿÿ›‚-s@Ÿÿùéžÿÿ®ÿÿ=s}ÿÿõu‚ÿç>iÿþ¬0OÿüèÈïÿÿÕ^ÿÿÿÿÿ/…¢–?ÿóo.?ÿÿN!Zâe䤴 ÿÿË|Iÿÿý _ÿÿÿÿòП øÿÿ)ðçÿÿô‚ÿå&'ÿÿþ}åì–ÆIhRO– ÿÿ’ØÓÿÿùáA?ÿò7 ?ÿÿ7 'ÿþ=aÿÿæTÿÿÿÿÿ™´½`Ÿÿø¥€_ÿÿ—p€H3piB· ÿâMúL‚@P /ÿÿÿÿù|9ÉÄ@(•‰w»2éA?ÿñ6ñ¿ÿÿ!˜ÿÿÿÿý D ÿÿÿÿÿ›€Ì€_ÿÿÿÿóH €\5îª_ñ½ÿâ•Öÿÿþ6°/ÿÿÿÿú€EÜ@51ˆ—I‡øª¿ÿÿÿÿïP3Øÿÿÿÿýêb]ÿÿÿÿÿÈ€ÌA _ÿÿÿÿøH‡Ð˜~) .W0äÿÿÿÿé@fh/ÿÿÿÿüLBüÿÿÿÿÿp˜Y@¿ÿÿÿÿïð3 ñ†Ü¥ê!X‚ÿÿÿÿÿ¼ 'Ð_ÿÿÿÿø „šÿÿn/ÿÿð’ÿÿÿÿÚàØ/ÿÿÿÿû„‚'ÿÿÿÿÿŽƒB@¿ÿÿÿÿó`{ÿÿÿÿþ€ ú 'ÖÂk‹Ð\`_ÿÿÿÿù؃„ ÿÿÿÿÿgÿá¥Êÿþ h/ÿÿÿÿýAÿÿÿÿÿ¢˜-?ÿð¢ãÿÿ±oÆ܆& t„ÿÿÃ{—ÿÿü „ZØ[rXè@ÿÿ .7ÿÿð%/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü7777dballe-7.21/extra/bufr/wmo-ship-1.bufr0000644000175000017500000000040013022043102014426 00000000000000BUFRN€ Ù ÿÿ¬’  €„È „A…¶ÕŒVÈ<µà?¾û>^dzÀ÷^‘ÿÿÿÿÿÿÿÿ@÷¾žŸÿÿÿÿí­ÿÿÿÿÚíÿÿÿÿÿÿùôÿÿÿÿÿÿÿÿÿ¯à{ø2ù=O(ÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿìCÿÿÿÿÿÿÿÿÿü|hÑ€7777dballe-7.21/extra/bufr/test-airep1.bufr0000644000175000017500000000024213022043102014667 00000000000000BUFR¢b€  4}Ky€Mx¯n EU4824 ¢yŠ”yˆj €Ë–AÉA!8EU4824 ©o0àP¢kÅw@þáð0ÿÿÿÿÿà hÑ£F͘Óã<ÿÿÿà7777dballe-7.21/extra/bufr/synop-oddgust.bufr0000644000175000017500000001105413022043102015353 00000000000000BUFR,N  €ÇP¤2¶3·¶0·2/³¬ß÷B=g|ÈøMÿ8KÕÿÿÿÿøCm«i¿ÿñôÿÿÿÿÿ`wqûà$8C ÆÀÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿõ)ÿÀôÿÿÿÿÿÿÿÿÿÿÿHÿÿHÿÿÿÿ?²€ ~þʘ|D°Nÿÿ¿Gÿïÿÿÿÿÿü$Œ$ƒÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿþ(List auf Sylt gX ÔX$}úˆ!H¨›ÒqG–?ÿÿÿÿ𠆿6¼¼?ÿáÿÿÿÿÿÿ'þ ¿ÿðcð\?üù?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿé×ÿ„ü?Gÿÿÿÿÿÿÿÿÿÿÿ÷ô€ÿ÷ô€ÿÿÿøû Ÿïì‚GÄAÿûôþÿÿÿÿÿÿÀu€uÿߣÿÿÿÿÿÿÿÿÿÿûÿÿÿâ‚566†ÆW7v–röp5€ÜˆšHN¯)Á ¼g,z#ÿÿÿÿÿÈkékºÃÿþÏÿÿÿÿÿòàÒ_|Ç€ÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ?óÿÀôÿÿÿÿÿÿÿÿÿÿÿHÿÿHÿÿÿÿ?²0>þÉ`8|D`ÿÿ¿Gÿïÿÿÿÿÿüÿýú?ÿÿÿÿÿÿÿÿÿÿ¿ÿÿþ(7Fehmarn _gX ÈŽ¤Ž&8|õœÚt™¿ÿÿÿÿð †Æ¼?ÿâXÿÿÿÿÿÿ ð £÷À`a?üù?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿã×ÿ0Ÿü?Gÿÿÿÿÿÿÿÿÿÿÿ÷ô€ÿ÷ô€ÿÿÿøû#ÿï삇Ä<gÿûôþÿÿÿÿÿÿÀëë?ÿߣÿÿÿÿÿÿÿÿÿÿûÿÿÿâ‰4†Ö'W&rÔgV†Ç6'VWGFVÅöp5€Û+lHy¶ÁiÈ'2zãÿÿÿÿÿÈl‰kà³ÿþ2ÿÿÿÿÿòâ:?|ÆÀÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿþó ÿÀôÿÿÿÿÿÿÿÿÿÿÿHÿÿHÿÿÿÿ?²0 ¾þÉ`E|D°)ÿÿ¿Gÿïÿÿÿÿÿü4ÿýú?ÿÿÿÿÿÿÿÿÿÿ¿ÿÿþ(¢Schwerin _gX ²ðD$°#ÜE›Út—²?ÿÿÿÿð †Áµ[ÿâ¼ÿÿÿÿÿÿ ðã÷À``þ?üù?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÇÿ0Ÿü?Gÿÿÿÿÿÿÿÿÿÿÿ÷ô€ÿ÷ô€ÿÿÿøû#{ïìŒÄKÿûôþÿÿÿÿÿÿÿÿÿÿÿÿߣÿÿÿÿÿÿÿÿÿÿûÿÿÿâ‹„w&V–g7vÆBöp5€Ûà4IÇsö€ýù×§fy£ÿÿÿÿÿÈlk$«ÿþ0Ÿÿÿÿÿÿëãïÿÿÿ`ÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿýÿÀ³ôÿÿÿÿÿÿÿÿÿÿÿHÿÿHÿÿÿÿ?²0 þþÉ`Y|D°,ÿÿ¿GÿïÿÿÿÿÿüSÐ@—ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿþ(ÈEmden _gX ¬·Äv¾@œp®?ÿÿÿÿð †âÖÕÚÿÿåÜÿÿÿÿÿþXìfP  D€ÚŒ/€ÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿü*ÿâÿ×èÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿÿÿÿe$ýý’ÀÎø‰`nÿÿ~ÿßÿÿÿÿÿøŸ(fßÿûôÿÿÿÿÿÿÿÿÿÿÿÿüQÀ„äÊÚÊÜ@@@@@@@@@@@@@@¾Î°H° ® ? ©8ìäotÿÿÿÿà ¬­’µÿÿÉaÿÿÿÿÿýÌ)F·€`ˆáH#Pâ`ÿäÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ùŒÿàú?ÿÿÿÿÿÿÿÿÿÿÿ¿¤ÿ¿¤ÿÿÿÀŸÙ@e">"X¿ÿߣÿ÷ÿÿÿÿÿþ ’ eÿþýÿÿÿÿÿÿÿÿÿÿßÿÿÿ‡'2º¹:¸84·³¬ÐsLg¸±NM:ëÓÿÿÿÿøCc[[-?ÿñûÿÿÿÿÿÿ“ÿ_ÿø1ø’þGüŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿïþ£ÿÿÿÿÿÿÿÿÿÿÿûú@ÿûú@ÿÿÿü ý@O÷ö<#â ?ÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿñJ’C ss{³+‘û8Àl±Z$-´A`”Ýs™½ñÿÿÿÿÿ€d6ä¶Éÿÿ>‡ÿÿÿÿÿöA#~‚# a¸†Uÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÿêSÿ€èÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿÿÿÿePýý–€‚øŠ Iÿÿ~ÿßÿÿÿÿÿøh0hÿûôÿÿÿÿÿÿÿÿÿÿÿÿÿüRÒšÂÎÈÊÄêäÎ@@@@@@@@@@@¾Î°£I"­@J`%å7\êolÿÿÿÿà ¢­{´?ÿÊñÿÿÿÿÿýÌ_F߀`˜Âø$ ªâàÿäÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþú”ÿàú?ÿÿÿÿÿÿÿÿÿÿÿ¿¤ÿ¿¤ÿÿÿÀŸÙ@?eP>"X?ÿߣÿ÷ÿÿÿÿÿþzwÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿĦ4·22·12¹3/³¬ÇõRPh|t ×Më;«×ÿÿÿÿøCa{YíOÿñÿÿÿÿþür‘¨X$0Ü f€ÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿõ)ÿÁãôÿÿÿÿÿÿÿÿÿÿÿHÿÿHÿÿÿÿ?²0þþÉ`3|Eÿ¿Gÿïÿÿÿÿÿü† %Cÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿþ)Duesseldorf _gX y¥dsòà"6›¢q—¶?ÿÿÿÿð †ïö×¹¿ÿï ÿÿÿÿÿþÀæ¦\°0D€ìŒ7P°ÿò?äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ýJð4ýÿÿÿÿÿÿÿÿÿÿÿßÒ?ÿßÒ?ÿÿÿàOìªß¿²¨ßhŸÿïÑÿûÿÿÿÿÿÿ·  ÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠm’Ø\ÜÙ[ÙÀÖ^iÑ!h S)¦1òÿÿÿÿü!´}°Ú¯ÿùÅÿÿÿÿÿÉÿ…ÿÿüü/…‡ÿäÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=¿üÿàú?ÿÿÿÿÿÿÿÿÿÿÿ¿¤ÿ¿¤ÿÿÿÀŸÙ@e¾"€ ÿÿߣÿ÷ÿÿÿÿÿÿÿÿÿÿÿþýÿÿÿÿÿÿÿÿÿÿßÿÿÿê¦2´¸=4³–©±´5²º²4º=/³¬¾ƒÒJ¬˜¾ uÍy; áÿÿÿÿøCh ^mÿôâÿÿÿÿÿ,u6`"@  FÀÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿõ)ÿÀôÿÿÿÿÿÿÿÿÿÿÿHÿÿHÿÿÿÿ?²¨ þþÊA|EP%ÿÿ¿Gÿïÿÿÿÿÿÿÿÿÿÿÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿþ)èDresden-Klotzsche _gX u‰„ž—è0ü´™bw7¾?ÿÿÿÿð †É6«Hÿÿåÿÿÿÿÿý‘‚`À DDëÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÿêSÿƒÇèÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿÿÿÿd°)ýý’Àêø‰`{ÿÿ~ÿßÿÿÿÿÿùWÿûôÿÿÿÿÿÿÿÿÿÿÿÿÿüSôœêÊäÄêäÎZ„ÂäîÊÒØÊä@@¾Î°Å‘Èé!°ŠHE9'„å”ÿÿÿÿà «m?ÿ×qÿÿÿÿÿýÜ Aï€ ¹ùòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊþƒ?ø~ÿÿÿÿÿÿÿÿÿÿÿïéÿïéÿÿÿð'öioß٠ψæßÿ÷èÿýÿÿÿÿÿÿÿÿÿÿÿÿ¿Gÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÅD‰¬­-Í-Ìì­Ä ìàk¬öt‘? M)Ò£NÎöÇÿÿÿÿþ×–Ö£sÿüWŸÿÿÿÿÿØÂ4¾ø Ž€ÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿüfÿå+ÿ€èÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿÿÿÿePýý•@‚øŠ Lÿÿ~ÿßÿÿÿÿÿøed‡ÿûôÿÿÿÿÿÿÿÿÿÿÿÿüTúŒäÂÜÖÌêäè^šÂÒÜ@@@@@@¾Î°¶4þ: P(6LêOtÿÿÿÿà ´-¿ÿÎÿÿÿÿÿýÜ<Çï€@¨Áä'_ÿ#þOÿÿÿÿÿÿÿÿÿÿÿÿÿÿøUÿÌ'ÿÑÿÿÿÿÿÿÿÿÿÿÿýý ÿýý ÿÿÿþþËà ûû/€ÉñÀgÿþýÿ¿ÿÿÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿþÿÿÿøªµ!½˜€€€€€€€€€€€€€€€€}œ `5†x’L‚a-˜—"LéÝŸÿÿÿÿÿÀ2ãÚ¶,ÿŒƒÿÿÿÿÿöCˆ:™rÀÐF¬þGüŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿ©Oþ£ÿÿÿÿÿÿÿÿÿÿÿûú@ÿûú@ÿÿÿü ý’À]÷öK£â%Sÿýú?ÿÿÿÿÿÿãs!Ì_ÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿñW›£«££; “¡j+C£+“#Ks:û8Àiϼ$„Aáà÷d²s±=Ñÿÿÿÿÿ€d7 µ¿½ÿÿË'ÿÿÿÿÿö!5‚C  ”3 €Üÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÿêSÿƒWèÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿÿÿÿeð ýý—ÀVø‹à+ÿÿ~ÿßÿÿÿÿÿÿÿÿÿÿÿûôÿÿÿÿÿÿÿÿÿÿÿÿÿüUöœêÊäÜÄÊäÎ@@@@@@@@@@@¾Î°›½ <Ðo8/´îÏ|ÿÿÿÿà ’misÿÿÏ¡ÿÿÿÿÿü±Ð}F¡`@ Ãè%Öÿ#þOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÔ§ÿÑÿÿÿÿÿÿÿÿÿÿÿýý ÿýý ÿÿÿþþÈÀ*ûû#çÿÀÿÿþýÿ¿ÿÿÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿÿÿÿÿø¬QMÑÉ…Õ‰¥¹œ€€€€€€€€€€€}œ `4õ{]-àê¨v]Éä¸ÿÿÿÿÿÀ2ÃZÃrÿ„çÿÿÿÿÿó?ø.ÿÿÀA/Ápÿò?äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›ŸýJðýÿÿÿÿÿÿÿÿÿÿÿßÒ?ÿßÒ?ÿÿÿàOìn/¿± ŸÈÿïÑÿûÿÿÿÿÿÿ [ [ÿÿ~ÿÿÿÿÿÿÿÿÿÿïÿÿÿŠÕ]YÜØ\™ÈÙÀÖLâÉ#[&Ó‡åGýîÿÿÿÿü!±…¬wÿúq?ÿÿÿÿÿd@ ‡—0 €:ÀÿäÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþú”ÿàñú?ÿÿÿÿÿÿÿÿÿÿÿ¿¤ÿ¿¤ÿÿÿÀŸÙTe¾"€ÿߣÿ÷ÿÿÿÿÿþX0%ÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙ%²¶¸:2·³¬‘4ÂDÜP+,•Ès;Ó×ÿÿÿÿøCbS ÿóŠÿÿÿÿÿþûÿ;ÿø)ùÛ DàÿÈÿ“ÿÿÿÿÿÿÿÿÿÿþ ÿÿüÿõ)ÿÁãôÿÿÿÿÿÿÿÿÿÿÿHÿÿHÿÿÿÿ?²¾þÈ |EPÿÿ¿Gÿïÿÿÿÿÿü¦p5oÿýú?ÿÿÿÿÿÿÿÿÿÿÿÿÿþ7777dballe-7.21/extra/bufr/ed4-empty.bufr0000644000175000017500000000121713022043102014344 00000000000000BUFRY Ù  ÀÇPdNH€_Z;%–p”š[YHÛØÙ[ÝšXÙH˜ZKT^ž[™HX™\™XÈšXž\Û]ˆœ››ËU\˜[žHÜݘ]˜KS[Üۛ݀}0ÀÔTªHɶv—#™Þx§Ü JĘ @(Ri09HôµaíxN1 …9En8Ãëcƒ'&ÎUYD¬0²ÖÀ ŠÇ)B&yfyñ~…’»Ò"$¬ 8Jˆÿð$"ø$àa‹^µ¦l”crYJ‘( 0ä¨ÐB4`ð¢,æðEñª(@P\º €ê”Æ‹€`S'ÿàÿ€dÿåÿþ˜¿ø8 ÿà@¬ Bp2UýøÊ ÿôÿø7ÿãÿà€"€¥!Á@ýÿÁÁY@„àdª,3þ/ÿ€FÿÿáÿÀ@,þàð<Àÿ€@ð þàÿÿüÀÿÿÿøÿüÿðCüöÖ@ Ÿô –Wb,ªÄüþôÿÀ`1Bøÿ€ÿàb×­@ ÿðÐÿü2Ž\È9¦È€û$nU U@ SÅQ‘@|öþÿ€é€Àÿð?ÿÀ~€<üÿÿÀÿð?ÿÿþÿøÿà?@þÿÿüÿð?ÿÀÿÿÿÀÿð?7777dballe-7.21/extra/bufr/obs0-1.22.bufr0000644000175000017500000000033413022043102013756 00000000000000BUFRÜb€  4}Ky€BŽ^ƒP60150 Üy„yƒ F€Ç  –A1 A1!nxK/©o0è5p°L¹Ñž((E¦YOñŒ,€ÀAŸß"@J@f ‰Ÿÿÿüoÿð hÑ£F4hÒåJ›>4jcR«5XÕjU«V4hÑ£F4hÑ£F4`7777dballe-7.21/extra/bufr/temp-huge.bufr0000644000175000017500000023663413022043102014444 00000000000000BUFR=œcdÿÜ 8€É4QRC_`a=…<=` ‚€( ‡“î2‹'†Æ¡R5ÿÿÿÿ€û›+t(œÐŽ*kˆ•=»ŽËt Pˆ‘*k•=#Žssà  ˆÑ*k•=#Žssà ‚*j¨•<ËŽ3sؤ|!Ñ*i¨•(•(óƒq˜È6ŒŠ‘*=ˆ•(³q˜Ä7†Q*=•(€»q`ÀP8€*;È•';€[q ÀP9z’‘*9è•&‹ûpø¼:t•Q*8ˆ•&;›pð¸Ð;m˜‘*7è•%ÛCq¸Ð<f›‘*7•%#~ëq´=`žQ*5(•$K~›q°P>Z Ñ*3(•#«~Sq°?T£‘*1È•#K~ pø°@N¦Q*0¨•"ë}Ëpè¬PAH©*.è•"“}‹pجÐBA¬Q*-•"K}#pذC9¯‘*,•!û|»p¸°D2²Ñ*+ˆ•!k|Spx°ÐE+µÑ**È• »{ópP´PF$¹*)(• C{“p@´G¼*(• {3p@´ÐH¿Q*'È•£zËp¸ÐI ÁÑ*'h•ózkoиÐIÂ*'h•ózcoȸÐJ ÄÑ*&(•[z o°¸ÐKÇ‘*$¨•#y³oдÐLýÊÑ*#¨•ûyko¸´MöÍÑ*#•kyKoP´NðБ*!è•£xëo8°POëÓ* •3x‹oX°PåÕ‘*¨• xKo8°ÐQߨ‘*è•Ëwão@°ÐRÚÛ*(•#w{o0°SÕÜÑ*ˆ•swSnÀ°PTÑÞÑ*¨• wÓlè°PUÍàÑ*¨•ËxcjȰVÈâÑ*È•SxKj´WÃå*ˆ•«x3ix´ÐX¾çQ*(•;x#i@¸ÐY¹éÑ*(•ãwëi¸ÐZ´ìQ*(•Sw³i¼[¯î‘*è•»w‹iP¼\ªñ*¨•KwCiHÀ]¤ó‘*È•Óvûi ÄP]€¡õ*È•3vÓi(ÄP^ŸõÑ*È•3v»i0ÄP_šø* h•›v‹ipÈ`•ú‘* h•+vSi°ÌaüÑ* h•³vCjÌÐb‹ÿ* è•vj(Ðc…‚Ñ*h•“uãj0ÔdÑ*ˆ•óu£jÔPey‘*•;uSiÐØfs‚ Q*•›tói°ÜÐgn Ñ*è•t›i Ühi*è•stSi€àPidQ*È•“ti@äj^‚Ñ*h• ÛsãiäkY‚Q*h• ks«ièÐlUQ)ÿh• ÛskhøèmQQ)þH• shÐìnL‘)üÈ• CrÛh¸ðPoG)û¨• ³r“h€ðPpB‚!)û(• rchPôPq?"Ñ)úh• #r;h øPr;$‘)ù(•3rhüPs7‚&Q)ø(•{qÛgðüt4‚'Ñ)÷h•ëqÃgÑu1)Q)öè•Cq‹g©v-‚+)ö(•‹qSgÐw*,‘)ôè•Ãq+g‰x&‚.)óè•qgñy#‚/Ñ)óH•[pÛhQ Pz 1Q)òè•«pƒh1 P{‚3)òH•ûpKgÙ |4Ñ)ñH•Cp#h}6‘)ðh•ƒoûhÙÐ~8)ïÈ”ÿÃoãiaЂ9‘)ï(”ÿo³i¡€ ‚;‘)þkoƒj P=Q)íè”ý»oSj‚‚>Ñ)í”ý o#jÁ Ѓ@‘)ì(”üCo k „üBQ)먔û£nëk P…ø‚D)ë”ûnÓjñ †ô‚EÑ)êh”ú{n«j¹ Їð‚GÑ)éÈ”ùËnƒjaPˆì‚IÑ)é”ù#ncj)‰è‚KÑ)訔ø£nciñЊåMQ)çè”ø3n#i¹P‹áOQ)ç”÷›mÃi©ŒÜ‚QQ)æH”öûm“i©ÐׂSÑ)åÈ”öSm{iqŽÒV‘)åH”õ»mKiPÌ‚Y)äÈ”õkmShIPÇ‚[‘)äH”õ;m[gÁ ‘Â]Q)ãH”ôÃm+gÐ’À_)â(”ô lëgQГ¼‚`Ñ)ᨔóKlãg!”¹b‘)ሔò«lËf‘P•µd‘)áh”ò;l£fI P–±fQ)á”ñÓl{f)(—­‚h)àh”ñClKf ,И©jQ)ßÈ”ð£leñ4P™£‚m)߈”ðkãeÙ<š‚o‘)ßh”ï‹kÛeQD š šq‘)ߨ”îëkãdÑL P›˜‚r)ߨ”îëkëd™L Pœ“‚tÑ)à”îckãd!T ÐŽwQ)à(”î#kûd\ Pžˆ‚yÑ)ßH”íãkÓd)d Пƒ‚|‘)Þh”íSkƒdl P }‚Q)Þ¨”ìƒkScñx ¡x‚)à”ëãk{dQ€ ¢s„Q)àè”ëÃkƒd¹ˆ P£o†Q)àˆ”ëÓk[e” ¤l‡Ñ)ßÈ”ëÃk;eœ Ð¥h‚‰‘)ßÈ”ëskdé¨ ¦d‹‘)àˆ”êójãd±´ P§`‚‘)áH”ê[j³d™À P¨]Q)áÈ”éëj“d¹Ì ©Y‘)ᨔé£jcdÉÜ ªU“)áh”ésjCdñìЫQ•)ᨔé+j+eЬM‚–Ñ)âh”èÓj eЭJ˜Q)ã”èƒje2(ЮF‚š)㨔èCj eš<ЯCœ)äH”è#ióeúPа?ž)åH”è#iãf2d ±;ŸÑ)æH”èj f¢t ²6¢Q)ç(”çãj«gjˆ P³0‚¥)è”çÃk[gò” P´+‚§‘)é”çók“gº¤ µ&‚ªQ)ê(”èksgJ° ¶!‚¬Ñ)ë”çók+fê¸ ·‚¯)먔çÃjëfºÀ ¸‚±‘)ìh”çÓj«fšÈ ¹³Ñ)íÈ”çëjkfjÌ º¶Q)îè”çÓjCf:Ð » ‚¸‘)ïH”çÃj#f2Ô ¼º‘)ïÈ”çóiëf:Ø P½‚¼)ðè”è;iÛfBÜ P¾ÿ½Ñ)òH”èCiÃf"Ü P¿ü¿Q)ó(”èi«eúà ÀùÁ)óH”çûiƒfà Áõ‚‘)ó¨”çûi[fä ÂòÄQ)ôˆ”èi#eêä ÃïÅÑ)õ¨”è;ie²ä ÄìÇQ)öˆ”èKhûe’ä ÅéÈÑ)÷(”è3hÃezä Æå‚Ê‘)÷ˆ”è#h‹ejä PÇâÌQ)øh”è3h[eRä PÈßÎ)ùˆ”è[heä PÉÜÏQ)ú¨”èƒgódòä ÊÙÑ)ûh”èsgÓdâà ËÕ‚Ò‘)ü(”è[g«dÊà ÌÒ‚ÔQ)üè”è[g›dºÜ ÐÍÏÖ)ýÈ”ècg“dšÜ ÎË‚×Ñ)þ¨”èsgsdzÜ ÏÈ‚ÙQ)ÿˆ”ècgdšØ PÐÅ‚ÚÑ*h”èSfÓdšØ PÑ‚ܑ*H”è[fËdJÔ Ò¿‚Þ*”ècfÓcÊÔ ÐÓ¼‚ß‘*”èkfãcrÐ Ô¹áQ*”èsg cÐ Õµ‚âÑ*h”èkg#bšÐ PÖ²‚ä‘*¨”ècgbZÌ ×¯‚æ*h”ècfóbRÌ Ø¬‚ç‘*H”è{fÃb2Ì ÐÙ©éQ* H”èƒf“bÈ Ú¦ë* H”èkf[b2È Û¢‚ì‘* ˆ”èSf+bÈ PÜ î* ”èKf;a²Ä PÜŸ‚îQ* ”èKfCa¢Ä PÝœð*(”èKfSaRÄ Þ™ñ‘*(”è[fKa"Ä ß–ó*è”èSfa2À Ðà“‚ô‘*(”èCeÓaZÀ Ðá‚õÑ*¨”è;e»ajÀ ÐâŽ÷Q*”èCeËabÀ ã‹øÑ*”è;e“`òÀ äˆúQ*è”è+es`jÄ Ðå…ûÑ*”è e[`"È Ðæ‚ýQ*H”çãeS_¢Ì çþÑ*È”ç³e[^ÚÐ Pè|Q*”çËeS]êÔ éy*(”çëe+\ÚÜ Ðêu*H”èe3[²ä ëqƒÑ*H”è eëVÂð Pìn‘*(”ègKKø ík Q* (”èi :{ Ðîh Ñ*!”èjƒ [ ïe Q*!È”è[k3C Pðb*"h”è£k{( Pñ_‘*#”èÃkƒ Ë4 ò[ƒQ*#È”èãkc Û< óX*$ˆ”ékK{H ôUƒ‘*%h”éKksëP PõRƒ*&h”é{kšüÃT PöOƒ‘*'(”é«kj÷{\ P÷LQ*'È”éÛk"õû` øIÑ*(”êköCh ùF‘*(¨”ê[kõ“l ÐúBƒQ*)È”ê£júò³p Ðû?ƒ **¨”êójªñSt ü<!Ñ*+ˆ”ëCj²ðót ý9#Q*,H”ë“jºñx þ6%*,È”ëËj¢óÛ| Pÿ3&‘*-h”ìj‚÷ƒ| Q/ƒ(Q*.(”ìKjzøã€ Q,ƒ**/”ì«j‚ù+„ ‘)+‘*/è”ìûj:ù„ ‘&-Q*0h”í3jøËˆ ‘#/*1”í{jj÷[ˆ Ñ 0‘*1è”íÃjªñ[Œ у2Q*2È”îjÚçsŒ 4*3È”îkjâß«Œ 5Ñ*4H”î«jÂÜ£Œ Q 7Q*4¨”îój²Û“ ‘ 9*5H”ïKjÂÚÛ ‘  :‘*6(”ï«jÂÚ Ñ  ƒ*7¨”ðkjšÚ+Œ ƒ?Ñ*8h”ðËjŠÛcŒ QA‘*9(”ñ#jŠÜóŒ QýC*:”ñƒj‚ÞƒŒ ‘ùƒDÑ*;(”ñãjjàKˆ ‘öƒF‘*<(”òKjR⣈ ‘óƒH*=”ò£j*äÛ„ ‘ðƒIÑ*=¨”òûjåÄ ‘íƒK‘*>(”ó[iò囄 ‘êMQ*?(”ó»iÚå€ ‘çNÑ*@(”ô iÂä;€ QäP‘*AH”ôkiªãó| QàƒRQ*B(”ôËizä| ÝTQ*C”õiJäC| ÚV*CÈ”õci"ä3x Ñ×W‘*D¨”õ«hòäx ÑÓƒYQ*E¨”õûhÂäx ‘Ѓ[*Fˆ”öKh’ããt ‘̓\Ñ*Gh”ö›hZã»t Q ʃ^Q*H(”öãh2ã£t Q!ǃ_Ñ*Hè”÷+h ã»p "ăa‘*I¨”÷cgêãëp #Áƒc*Jh”÷“gºäp $¾ƒdÑ*K(”÷Ûg’ä›p %»ƒfQ*L”ø;gbäûl &¸ƒh*LÈ”ø“g2å#l Q'µiÑ*M¨”øÓgå‹l Q(±ƒk‘*Nh”ù fâæ{l ‘)®ƒm‘*Oh”ùKfÊçãh ‘*«oQ*Ph”ù“fªèëh Ñ+¨q*QH”ùãfŠé[h Ñ,¥r‘*R(”ú3fjéÃh -¡ƒtQ*S”ú{fRêËh .žƒv*T(”ú»f"êãl /›ƒwÑ*UH”ûeúé«l Q0˜ƒyQ*V(”û[eÒè{l Q1•ƒ{*W”û»eªç‹p Q2’ƒ|‘*WÈ”üezæóp Q3ƒ~Q*X¨”üKeZæ“t Q4ŒƒÑ*YÈ”ü‹eBæ3t Q5ŠQ*Z¨”üëe*åÃx Q6†ƒƒ*[ˆ”ýSe åCx 7ƒƒ„Ñ*\H”ý»dòäã| 8€ƒ†‘*](”þ dêäƒ| Ñ9}ƒˆ*^”þKdêã[| Ñ:zƒ‰Ñ*_”þ›dêá{€ ‘;wƒ‹‘*_è”þódâàû€ Q<tƒ*`¨”ÿSdÊàÓ€ =qƒŽÑ*ah”ÿ»d²à{„ Ñ>nƒQ*b•d¢à[„ ‘?l‘Ñ*b¨•3dšàs„ Q@hƒ“‘*c(•kdšàSˆ Aeƒ•Q*cÈ•³d¢ßÛˆ ÑBbƒ—*dh•d²àƒˆ ‘C_˜Ñ*dè•CdÊå3ˆ ‘D\ƒš‘*e¨•sdÊïŒ ‘EYœ*fh•³d²ûcŒ QFVž*g(•dƒŒ QGSŸ‘*gÈ•[dK‹ˆ QHP¡*hH•£dˆ QIM¢Ñ*h¨•ëcë#ˆ QJJ¤‘*i(•3c»k„ QKG¦Q*j•sc“K€ ‘LD§Ñ*jè•»c‹| ‘MA©‘*k¨•cc£x ‘N>«Q*l•Sc;‹t ‘O;¬Ñ*l¨•£c+»t ‘P8ƒ®Q*mH•Óccp ‘Q5ƒ°*nH•óc l ‘R2±Ñ*oh•bû{h ‘S/ƒ³Q*ph•cbã;d ‘T,ƒ´Ñ*q•³bÃkd ‘U)ƒ¶‘*qˆ•ûb³ ` ‘V&ƒ¸Q*r(•#b£ ` QW$¹Ñ*rè•Kb{c` QX!»‘*sÈ•ƒbKk` QY½*t¨•Ëb#k` QZƒ¾‘*uh•aû[` Q[À*v•Kaãó` Q\Á‘*vè•sa³K` ‘]ÃQ*w¨•£a{»` ‘^Å*xH•ÛaCó` ‘_ ÆÑ*xè• aÃ` Ñ` ƒÈ‘*yˆ•;`ó` ÑaÊQ*zH•s`Ë` bËÑ*{H•³`«d cÍ‘*|H•ó`‹ »d d þÏ*|è• ;`{ kd Qe ûƒÐ‘*}¨• ƒ`Sƒd Qf ùÒ*~ˆ• Ã`;ëh ‘g öÓÑ*h• `+ëh ‘h óÕQ*€h• S`«l ‘i ð×*(• £_ëël ‘j íØÑ*è• Û_³ûp ‘k êÚ‘*‚ˆ• _‹#t Ñl çƒÜ*ƒ(• C_kt Ñm äƒÝ‘*„(• ‹_Cûx Ñn áƒßQ*…(• Û_û| Ño Þƒá*†• #^〠Ñp Üâ‘*†È• s^Ã#„ Ñq ÙäQ*‡H• ³^›Œ r ÖåÑ*‡è• ó^sS s ÓƒçQ*ˆ¨• ;^CC” t ЃèÑ*‰ˆ• £^Ó˜ u ̓êÑ*ŠH• ]û{œ v ʃìQ*Šè•{]Óœ w Èî*‹ˆ•ë]³  x Åï‘*Œ•K]‹㤠y ÂñQ*ŒÈ•³]ƒ ¤ z ¿òÑ*H•]k£¤ Ñ{ ¼ô‘*È•c]S+¤ Ñ| ¹ƒöQ*Žh•³]#ä Ñ} ·÷Ñ*•\û$³¤ ‘~ ´ùQ*¨•s\Û'k¤ ‘ ±û*h•Ë\£+à Q€ ®ƒü‘*è• \ƒ3Ë  Q ¬þ*‘h•S\{7à  ¬þ*‘h•S\s7Û  ‚ ©ƒÿ‘*’•£\k7#œ ƒ §*’È•ë\C6Cœ „ ¤‘*“h•C\#4 œ … ¡Q*“è•“\ 0£œ † ž„Ñ*”h•ë[ë/#œ ‡ œQ*••C[Ã.#œ ш ™„Ñ*•¨•ƒ[«,+œ щ — *–h•Ë[›*[œ ÑŠ ”„ ‘*—•[ƒ++  Ñ‹ ’ *—¨•[[c-;  ÑŒ „Q*˜H•«[C-#¤ Ñ Ñ*˜è•[#,»¤ ÑŽ Š„Q*™h•[Zû,ˤ Ñ ‡„*š•»Zã-+¨ Ñ …‘*š¨•ZË.˨ ‘‘ ‚„*›H•KZ«.‹¨ ‘’ €‘*›¨•“Z“-“¬ ‘“ }„*œ(•óZk-ƒ¬ Q” z„‘*œ¨•KZS*c¬ • x*(•›ZK$3¬ – u„‘*¨•ÛZcû¬ Ñ— r„Q*ž•Zc ¬ ‘˜ p„ ‘*ž¨•kZKK° Q™ n"*Ÿ(•«Z3";° Qš k#‘*Ÿˆ•ëZ3û° › h„%* (•+Z#Ó°Ñœ f&Ñ* ¨•kZS´‘ c(Q*¡•£Yãc´Qž `„**¡ˆ•ÛYÓË´QŸ ]„+‘*¡è•YÓ û¸  [-Q*¢h•cYËK¸Ñ¡ X.Ñ*¢¨•³YÃ+¼‘¢ U„0Q*¢è•ûYÂùÛ¼‘£ S1Ñ*£(•3YªöûÀQ¤ P„3Q*£(•kYŠ÷CÀQ¥ M„5*£h•‹Yjý3À¦ K„6Q*¤•ÃYKÛÀ§ I7Ñ*¤¨•Y3¼¨ F9‘*¤è•CY“¼Ñ© C„;*¥•{Xóƒ¸Ѫ A<‘*¤è•«Xã;¸Ñ« >„=Ñ*¥H•ÓX³³´Ѭ <?Q*¥è•X“›°Ñ­ 9„A*¦h•KXƒë¬Ñ® 6„B‘*¦È•“X[¨ѯ 4DQ*§•ËX;K¨Ѱ 1EÑ*§(•ÛX#»¤ѱ .„G‘*§h•ûX C¤Ѳ +„I*¨•#WÛ “ ѳ )JÑ*¨ˆ•SW³3 ´ &LQ*¨è•“W³[ µ #„N*©(•ÓWƒ;œ¶ !O‘*©h• W{Kœ· Q*©è• CW[ Q¸ R‘*ªh• kW;Ë Q¹ „T*ª¨• “Wû ‘º „U‘*ªè• ÃVóC ‘» WQ*«H• ûVóC¤Ѽ Y*«è•!;Vó¤ѽ „Z‘*¬H•!sV볨¾ „\‘*¬¨•!³V㓨¿ „^*­(•!ûVóƒ¬QÀ _Ñ*­ˆ•";WˬQÁ aQ*®•"{W›°‘ „c*®ˆ•"ÃVóC°‘à ý„d‘*¯•# VÛ³°‘Ä ûfQ*¯h•#SVà °‘Å øgÑ*¯¨•#“V£3´‘Æ õ„i‘*¯è•#ËV{[´‘Ç ók*°h•$VK‹´‘È ð„l‘*±•$SV3«´‘É í„nQ*±¨•$£V#£´ÑÊ ëp*²(•$ëUûë°ÑË èq‘*²(•%3UãC°ÑÌ å„sQ*²h•%kUÓë´ÑÍ â„u*²è•%›U³3´ÑÎ àv‘*³¨•%ËU‹û´ÑÏ Ý„xQ*´(•&Usk¸ÑÐ Ú„yÑ*´¨•&cUSs¸ÑÑ Ø{Q*µ•&«U#3¼ÑÒ Õ„}*µh•&ûUûÀÑÓ Ò„~Ñ*µè•'CTãÄÑÔ Ð€Q*¶H•'ƒTÃÈÑÕ Í‚*¶È•'ÛT£‹ÌÑÖ Ê„ƒÑ*·H•(+T“+Ð‘× Ç„…‘*·H•({T{£Ø‘Ø Å‡*·H•(»Tk Ü‘٠„ˆ‘*·h•(ûT[³à‘Ú ÀŠ*·è•);TKÛä‘Û ½„‹Ñ*¸h•)ƒT;;èQÜ »Q*¸È•)ãTûìQÝ ¸*¸È•*;SóëðQÞ µ„‘*¸È•*ƒSÛëðQß ³’*¹•*ËSÃÃôQà °„“‘*¹H•+ S£{øQá ®•Q*¹ˆ•+cS‹ûøQâ «–Ñ*¹¨•+»S“;øQã ¨„˜Q*¹È•+óS«£üQä ¦š*¹è•,+S›‹üQå £„›‘*ºH•,ƒS{“üQæ ¡Q*ºh•,ãS[{üQç žŸ*º¨•-CS3|‘è ›„ ‘*º¨•-›S l‘é ™¢*º¨•-ËRëL‘ê –„£‘*ºè•-ûRÓl‘ë ”„¥*»h•.KR³œ‘ì ‘„¦‘*»¨•.“R‹¤Ñí ¨Q*»è•.ÛRcœÑî Œ„©Ñ*»è•/3R#”Ñï ‰„«‘*»È•/“Që¤ ð ‡­Q*¼•0QÛü ñ „„®Ñ*¼H•0SQ›“ü ò „°‘*¼h•0“QsÃø ó ²Q*¼¨•0ÛQKø Qô |„³Ñ*¼è•13Q+kô Qõ zµQ*½(•1“Q {ð Qö w·*½ˆ•1óPëCð ‘÷ t„¸‘*½è•2CPËûì ‘ø rºQ*¾H•2ƒP«Óè ‘ù o„»Ñ*¾ˆ•2ËPƒ“è Ñú m½Q*¾È•3#Pk+ä Ñû j„¿*¿H•3‹PC»ä Ñü hÀ‘*¿È•3óP sä ý e„Â*À•4COëà þ cÃÑ*À•4‹OÓ«à ÿ `Å‘*ÀH•4ÓO«#à  ]„Ç*ÀÈ•5;Ok[à  [ÈÑ*ÁH•5£O;cÜ R X„ÊQ*Áˆ•6O+ƒÜ R VËÑ*ÁÈ•6[O“Ü R SÍ‘*Áè•6³NÛ³Ü R P„ÏQ*ÂH•6ûN³»Ø R NÑ*ÂÈ•7CN‹«Ø  KÒ‘*ÃH•7“Nc³Ø  H„ÔQ*ÃÈ•7óNC»Ø  FÖ*Ä•8CN#³Ø  C„ב*Äh•8“N ³Ø  AÙ*ÄÈ•8ëMãËØ Ò >ÚÑ*ÅH•9KM»ëØ Ò ;„Ü‘*Ũ•9£M‹ÓØ Ò 9Þ*Åè•:Mk»Ô Ò 7ß‘*Æ(•:SMK“Ô ’ 4„á*ƨ•:ƒMcÔ Ò 2â‘*Ç(•:«Lû3Ô Ò /äQ*Lj•:óLã3Ð Ò -åÑ*Ǩ•;cL»KÐ  *„çQ*ÇÈ•;ËL“[Ì R (èÑ*È(•< L‹ãÌ ’ %„êQ*ÈÈ•<;Lk+È Ò #ìQ*É(•<‹LSsÈ R î*Ɉ•<ûL;ãÄ ’ „ïÑ*Ê(•=[LËÄ  „ñ‘*ÊÈ•=³LKËÄ R ó*ˈ•>Lc Ä ’ „ôÑ*ÌH•>‹L£Ä Ò öQ*Í(•?KÃËÄ Ò ÷‘*Íè•?»KË‹À  „ù*Îh•@;Kë{À  úÑ*ÎÈ•@›Kë³À ! ü*Ï(•@óKëÛÀ " „ý‘*ÏÈ•ASKã‹À Ò# ÿ*Ј•A«KÛÀ Ò$ ‘*Ðè•B KÓÓ¼ ’% …Q*Ñ(•BcK«³¼ ’& þ…‘*ÑÈ•B³Ks{¼ ’' ü*Ò¨•CKS£¼ R( ú‘*Óˆ•C›Kc³¸ R) ÷…*ÔH•D K;£¸ R* õ ‘*Ôˆ•DcK«¸ R+ ò… *Ôè•D›K ƒ´ ’, ð… ‘*Õˆ•DóJË‹´ ’- î… Ñ*Ö(•E{J“«´ ’. ì…*Öˆ•FJ£Û´ Ò/ ê…Q*וFKJ‹«´ Ò0 è…Ñ*×È•FƒJS´ 1 æ…*ب•FÛJ[“´ 2 ä‘*Ùh•GcJK£° R3 â*Ú•GûJC° R4 ß…‘*Ú¨•HkIû³° ’5 Ý…*Û(•HÃIË£° ’6 Û‘*Û¨•IIÛ+´ ’7 Ø…*ÜH•IkI»£´ Ò8 Ö…Q*Ý(•IãIK‹´ Ò9 Ô…Ñ*Þ•J{IS´ Ò: Ò Q*Þè•JëI3³¸ ’; Ï…!Ñ*ߨ•K;I û¸ ’< Í#‘*àH•K‹Hë ³¸ ’= Ë$Ñ*ਕLHã û¼ ’> È…&Q*á(•LƒH« C¼ R? Æ…'Ñ*ᨕLëH[ kÀ R@ Ä)‘*∕MKH# ëÀ RA Á…+*ã•M£Gû £Ä RB ¿…,‘*㈕NGû [Ä RC ½.*ä•NƒGÛCÄ RD º…/‘*䈕OG‹{È RE ¸…1*å(•OƒG‹ »È ’E ¸1Q*å(•OƒGƒ sÈ ’F ¶…2Q*åÈ•OëGc sÌ ’G ´3Ñ*æH•PKG3 CÌ ’H ±…5Q*樕P«G ãÌ ÒI ¯…6Ñ*ç(•Q#FÛÛÌ ÒJ ­8‘*çè•Q›F»ËÐK «9Ñ*舕RF‹ËÐL ¨…;Q*é•R‹FcÓÔM ¦…<Ñ*éh•RóF;cÔN ¤>Q*éè•SkF+ÔRO ¡…@*êh•TEë3ØRP ŸA‘*ë•T‹EÓØRQ C*먕UE³KÜR š…DÑ*ìH•UsE«ÓÜS ˜FQ*ìÈ•UÛE›CàT •…H*íH•VSE{ƒäU “I‘*íÈ•VËEKKä ÒV …KQ*î(•W[E3ä ÒW Ž…LÑ*WÛDóÓè ’X ŒNQ*îÈ•XCDÃ[è ’Y ‰…P*ï•X«D£[è ’Z ‡Q‘*ïh•YD{Ãè R[ „…S*凞YƒDK;è R\ ‚TÑ*ð(•Z D+Ãè R] …V‘*ð¨•Z“D#è R^ }XQ*ñ•[ CÛ[è R_ {YÑ*ñH•[kC£{ä R` y[*ñÈ•[ãCƒ›ä Ra w\Q*ò(•\[Cc ä Rb t…]Ñ*òˆ•\»C;Ãä ’c r…_Q*òè•]#C ;à ’d p`Ñ*óh•]£Bë«à ’e nbQ*ô•^BËcà Òf k…cÑ*ô¨•^‹B«;à Òg ie‘*õ•^ûBƒóà Òh gg*õˆ•_kB[Ëài d…h‘*ö•_ëB3»àj b…iÑ*öh•`{B‹àk `…kQ*öÈ•aAã[àl ^lÑ*÷h•asA»ûàRm \nQ*÷è•aãA“ÃàRn Y…p*øh•bSA[ãàRo WqÑ*ù•bÃA+óàRp T…sQ*ù¨•cKAóàRq R…tÑ*ú•cÓ@ãÃàRr PvQ*úh•d[@»‹àRs NwÑ*û•dÛ@‹[àRt K…yQ*û¨•eS@[3àRu I…zÑ*üH•eÓ@3#ÜRv G|‘*ü¨•f[@ Üw D…~*üÈ•fã?ÓóÜx B…‘*ý(•gC?«ËÜy @*ýÈ•g›?{›Üz >‚‘*þH•h?S£Ü{ <„*þÈ•h‹?#ûØ| :…‘*ÿh•hó?CØ} 7…†Ñ+H•ik>Û3Ø~ 5…ˆQ+¨•ië>«3ÔR 3‰Ñ+(•j{>{;ÔR€ 1‹Q+¨•jû>KÐR /ŒÑ+•k{>óÐ’‚ -Ž+(•kë=ëãÌ’ƒ *…‘+¨•lK=ÃóÌÒ„ (…‘+¨•l»=££ÈÒ… &…’‘+È•m;=k#ÈÒ† $”Q+h•m«=3Ûȇ !…•Ñ+è•n=  Ȉ …—Q+H•n“<ëSÄR‰ …˜Ñ+•o#<ËCÄRŠ šQ+è•oË<››ÄR‹ ›Ñ+¨•pc<{›ÄRŒ + H•pÃÑ+c¨•·+2:Ö›ÄRñ 0@Q+dˆ•·ó2Ö3ÄRò .AÑ+e¨•¸«1òÕûÄRó ,CQ+fÈ•¹[1ºÖÄRô *E+g蕺#1‚ÖCÀRõ '†F‘+i•ºó1RÖ³Àö %†HQ+j•»³1*ÖËÀ÷ #J+j蕼S1Ö»Àø !K‘+k蕼ó0ÒÖ£Àù MQ+l蕽³0¢Ö“Àú †NÑ+n•¾‹0jÖ{Àû †PQ+nè•¿[0:Öc¼Òü R+oè•À0 Ö[¼Òý SÑ+q•À»/ÚÖK¼Òþ †UQ+rH•Ác/²Ö¼Òÿ †W+sH•Â/zÕã¼Ó †X‘+tH•ÂÛ/BÕüÓ ZQ+uH•Ó/Õ«¼“ [Ñ+vH•Ä;.òÕ{¼“ ]‘+wh•Äã.ÂÕ{¼“ †_+xˆ•Å‹.’Õƒ¼“ †`‘+y¨•ÆC.bÕc¼“ †bQ+zè•Æû.*Õ+¼“ d+|(•dz-òÕ¼“ ý†eÑ+|è•È[-²ÔûÀ“ û†g‘+}¨•É-‚Ô³À“ ùi+~ˆ•ÉÃ-JÔƒÀ“ ÷jÑ+¨•Ê‹-"ÔƒÀÓ ô†l‘+€È•ËC-Ô£ÄÓ ò†nQ+È•Ëó,ÒÔ›ÄÓ ðp+‚¨•Ì›,ŠÔ‹Ä í†qÑ+ƒh•ÍS,jÔ“Ä ë†sQ+„h•Î,2ÔsÈS é†u+…È•ÎÛ+êÔ+ÈS çv‘+‡(•Ï£+ºÓëÌS åxQ+‡è•Ðk+ªÓËÌ“ ãyÑ+ˆh•Ñ3+šÓ£Ð“ à†{Q+‰H•Ò+ZÓ£ÐÓ Þ†}+Šh•Ò»+*ÓÃÔÓ Ý~Q+‹ˆ•Ós+ Ó«Ô Ú†€+Œh•Ô;*ÒÓCØS ؆‘+•Õ*²ÒƒÜS Ö†ƒ+è•Õû*ºÑƒà“ Ô†„‘+ŽÈ•ÖÛ*zгàÓ Ò†Q+ȕכ*rÏûä Ј+È•ØK*zÎ+äS Ή‘+‘h•Ù+*‚Ìè“ ˆ‹Q+‘È•Ú#*JÊKè Ɇ+’¨•Û*zÈ£ìS! Ç†Ž‘+“¨•Ü *ÊÆ3ì“" Å+”ˆ•Üã*ŠÄCìÓ"  Ä‘+•H•ÝÓ*zóðS# ÑÑ+•H•ÝÓ*rÃ;ðS$ Á“‘+•È•Þã*r“ð“% ¾†•+–H•ßë*BÁóðÓ& ¼†–Ñ+—(•àã*"Á[ð' º†˜Q+˜(•áÛ*ZÀóðS( ¸š+˜È•âã*¢Ácð“) ¶›Ñ+™ˆ•ãÛ*ÂÂËðÓ* ´Q+šH•äË*šÃÃðÓ+ ²žÑ+›(•åË*JÄð, ° Q+›è•æÛ*JÄð- ®¡Ñ+œÈ•çã*bÃÓðS. ¬£Q+È•èÛ**Ã;ðS/ ª¤Ñ+žˆ•éÛ*ÂëðS0 ¨¦‘+ŸH•êã)êÂÛð“1 ¦¨+ (•ëó)ÒÂÛð“2 ¤©‘+ è•í )ªÂ«ì“3 ¢«+¡È•î)ŠÂƒì“4  ¬Ñ+¢ˆ•ï)rÂSìÓ5 †®‘+£h•ð)BÂ;ìÓ6 ›†°Q+¤(•ñ#)ÂìÓ7 ™±Ñ+¥(•ò3(âÁëèÓ8 —³‘+¦•ó;(ÊÁÛèÓ9 •µQ+¦è•ô#(¢Á«èÓ: ’†¶Ñ+§È•õ#(zÁcäÓ; †¸‘+¨È•ö#(bÁäÓ< ކº+©¨•÷3(ZÀ£à= Œ†»Ñ+ª¨•øC(BÀ à> І½Q+«È•ùS(*¿sà? ˆ†¾Ñ+¬È•ú['ú¿Ü@ ††À‘+®•ûS'ê¾ÃÜA „ÂQ+¯(•üK'â¾kÜÓB ‚ÃÑ+°H•ýK'²¾ØÓC †Å‘+±(•þ['’½³ØÓD }†ÇQ+²H•ÿ['‚½KØÓE {†É+³ˆ–S'j¼ÃÔÓF yÊÑ+´¨–S'B¼SÔÓG wÌQ+µè–C'¼#ÔÓH uÍÑ+·–#&ò¼ÔÓI s†ÏQ+¸(–&Ê»óÔÓJ qÐÑ+¹H–&¢»óÔ“K oÒ‘+ºˆ–#&z¼Ð“L mÔ+»¨–3&R¼3ГM kÕÑ+¼È–C&"¼CГN i×Q+½È– +%ê¼;ÐÓO gØÑ+¾¨– ó%º¼ÐÓP eÚQ+¿è– Ë%¢¼ ÐÓQ cÛÑ+ÁH– ã%м#ÐÓR aÝ‘+ˆ– %Z¼+ÐÓS _ß+è–%:¼;ÐÓT ]†à‘+ÄÈ–%¼;ÐÓU [†â+Åè–ó$ú¼ÌÓV YãÑ+Ç(–Ó$Ê»ûÌÓW WåQ+Ȩ–Ë$¢¼ ÌX Uç+Éè–Û$м3ÌY SèÑ+Êè–Û$R¼;ÌZ QêQ+Ëè–Ã$¼#Ì[ OëÑ+ÌÈ–³$¼ Ì\ MíQ+ÎH–«#Ê»ãÌ] KîÑ+ÏÈ–³#š»ËÌ^ Ið‘+ÑH–«#Š»³ÌS_ Gò+Òh–³#Z»“ÌS` Eó‘+Óh–³#"»“ÌSa CõQ+Ô¨–«#»‹ÌSb AöÑ+Ö–£"Ò»CÌSc ?ø‘+×h–›"¢»ÌSd =úQ+ب–›"zºûÌSe :†ûÑ+ÙÈ–£"B»ÌSf 8†ý‘+Û– £"»3Ìg 6†ÿ+Ü(–!›!ê»KÌh 4‡Ñ+Ýh–"‹!º»KÌi 2‡Q+Þ¨–#{!Š»#Ìj 1Ñ+ߨ–$s!b»Ìk .‡Q+àˆ–%s!*» Ìl ,‡+áè–&s ú» Ìm *‡‘+ãH–'s âºûÌn (‡ Q+äÈ–({ ²ºãÌo &‡ Ñ+åè–)s ŠºËÌp % Q+ç–*S bº³Ìq #Ñ+èh–+; Bº‹ÌSr !Q+鈖,C *º{ÌSs ‡Ñ+ꈖ-S º»ÌSt ‡Q+눖.KʺëÌSu ‡Ñ+ìÈ–/3²ºëÌ“v +î(–0;šºËÌ“w ‘+1;jºÃÌÓx Q+ðÈ–2+JºûÈÓy Ñ+ñÈ–3+:»#ÈÓz ‡+ó–4#2»È{ ‡‘+ô¨–5 ºóÈ| ‡+öH–6#âºÓÈ} ‡ Ñ+÷ˆ–7+ªº»ÄS~ "Q+øh–8+zº«ÄS ‡$+ùˆ–93Jº›ÄS€ ‡%‘+û–:3 º‹Ä '+ü¨–;3⺓Ä‚ (Q+þH–<+꺫Àƒ *+ÿÈ–=+òº«ÀÓ„ÿ‡+‘,(–>;Òº[ÀÓ…ý‡-,H–?Cª¹ÓÀ“†û‡.Ñ,ˆ–@3й¼S‡ù‡0Q,–A Z¸{¼Sˆ÷‡2,È–Aû*·Ë¼‰õ‡3‘,H–Bë ·S¸ÓŠó‡5, ˆ–CÓò¶ë¸“‹ñ‡6‘, è–D«âµÛ¸“Œð8Q, h–E“ò´c¸Sî9‘, È–Fƒò³ƒ´SŽì‡;,(–Gsú³s´ê‡<‘,ˆ–H[´«´Óè‡>,–I+"·;´Ó‘ç?‘,¨–J *¸Ã´“’åA,(–Jó*¹´““ãB‘,h–KÛ¹k´S”á‡D,È–L«ºk´S•߇E‘,–M‹ê»¸S–݇G,H–NcÊ»;¸—Û‡H‘,ˆ–OC²»S¸˜ÚJ,–P#‚»s¸™ØK‘,H–PûR»Ë¸šÖM,H–QÛ"¼c¸S›Ô‡NÑ, ˆ–R»ú½#¸SœÒ‡PQ,!è–S›Ò¾#¸SЇQÑ,#H–Tƒª¿¸SžÏSQ,$È–Uc’¿ƒ¸“ŸÍTÑ,&h–VC‚¿“¸“ ˇVQ,'ˆ–W#b¿ƒ¸Ó¡ɇW‘,(È–XJ¿{¸Ó¢LJY,*(–XÛ*¿S¸Ó£ŇZÑ,+ˆ–YË¿3¸¤Ç\‘,-–Z«Ú¿k¼¥Â^,.h–[›²¿{¼¦À_‘,/È–\ƒ‚¿{¼§¾aQ,1H–]kb¿»¼S¨¼bÑ,2¨–^S2ÀC¼S©º‡dQ,3è–_K ÀÛ¼Sª¸‡f,5(–`;ÚÁ;ÀS«¶‡g‘,6h–a#ªÁSÀS¬´‡iQ,7È–b ‚Á#ÀS­²‡jÑ,9–cZÀ³ÀS®±lQ,:H–d2ÀkÀS¯¯m‘,;ˆ–dó ÀcÀS°­‡o,<è–e»òÀs¼S±«‡p‘,>H–f“ÒÀƒ¼S²ªqÑ,?¨–g‹²À{¼S³¨s‘,A–hƒ’À#¼S´¦‡tÑ,Bh–isj¿Ë¼Sµ¤‡v‘,D–jSB¿s¼S¶¢‡xQ,Eˆ–k;¿ ¼S· ‡yÑ,F¨–l3ê¾ë¼S¸Ÿ{Q,GÈ–m+º¿¼S¹|‘,I–n’¿+¼Sº›‡~,Jˆ–or¿;¼S»™‡Ñ,L(–oÓb¾³¸S¼—‡Q,M¨–p³:½«¸S½•‡ƒ,Nè–q£¼³¸S¾“‡„Ñ,P–r›Ò»«¸S¿‘‡†‘,QH–s‹ª»C¸SÀ‡ˆQ,RÈ–tcz»c¸“Á‡‰Ñ,TH–u;Z»+¸“ÂŒ‹Q,UÈ–vBºë¸“Ê,W(–w ºû¸“ÄˆŽ‘,Xˆ–xò»£¸ÓņQ,Yè–y ¼øÓÆ„‘Ñ,[H–yó¢½³¸ÓÇ‚“‘,\¨–zËŠ½Û¸È€‡•,^–{«b½»¸É~‡–‘,_h–|£2½›¸Ê|‡˜Q,`è–}£ ½“¸SË{™Ñ,bh–~›ò½«´SÌy›Q,cè–ƒÒ½»´“ÍwœÑ,eh–€s¢½Ã´“Îu‡žQ,fˆ–Sb¾´“Ïs‡ŸÑ,gè–‚C2¾£°ÓÐr¡Q,iˆ–ƒ+¿°ÓÑp¢Ñ,kˆ–„â¾ë°Òn‡¤Q,mH–„ó¾ðSÓl‡¥Ñ,nÈ–…Óª¾«°SÔj‡§‘,p(–†Ó¢¾3°“Õh‡©,qˆ–‡ër½«¬“ÖgªÑ,sH–ˆóR½‹¬Ó×e¬Q,u–‰Ûz½ ¬ÓØc­Ñ,vÈ–Š³b»³¬ÓÙa‡¯Q,xH–‹£º¬ Ú_‡±,yÈ–Œ£º¸«¬ Û]‡²Ñ,{h–›z·»¬ Ü[‡´‘,}(–Ž“R¶ë¬ ÝY‡¶,~è–ƒ¶«¬ ÞX·Ñ,€¨–‹"·s¬ÓßV¹Q,‚H–‘“*¸Ã¬ÓàT»,ƒè–’‹Ò¹£¬“áR¼‘,…¨–“{ª¹Ã¬“âP¾Q,‡H–”[ª¹«¬SãN‡¿Ñ,ˆè–•Cr¹«¬äL‡ÁQ,Šˆ––Kb¹ë¬åKÂÑ,Œ(–—;"º¨ÓæIÄ‘,h–˜òºS¨“çGÆ,Žè–˜ûººC¨“èEÇÑ,ˆ–™Ó¢º ¨SéC‡É‘,’(–š³b¹Ë¨SêA‡Ë,“è–››J¹Ë¤Së?‡Ì‘,•ˆ–œƒ"¹Ã¤ì>Î,—(–[ò¹³¤í<ÏÑ,˜È–ž+Ò¹{¤î:‡ÑQ,šh–Ÿ¢¹# ï8‡ÒÑ,œ(– ‚¸Ë ð7ÔQ,È– ãb¸“ ñ5ÕÑ,ŸH–¡»*¸‹ ò3ב,¡–¢‹ò¸“œó1‡Ù,¢È–£cÚ¸£œô/‡Ú‘,¤ˆ–¤S²¸»œõ.Ü,¦–¥#r¸ëœö,‡Ý‘,§¨–¥ëJ¹+œS÷*‡ß,©ˆ–¦Ã*¹{œSø)à‘,«H–§³º˜Sù'â,¬è–¨› 꺣˜Sú%‡ã‘,®¨–©s Ê»˜Sû#‡å,°ˆ–ªC ª»K˜Sü!‡æÑ,²h–« z»C˜Sý è‘,´–«Û J»#˜Sþê,µ¨–¬³ »˜“ÿëÑ,·ˆ–­ƒ ò»˜”íQ,¹ˆ–®[ »#˜”‡ï,»H–¯; Š»3˜”‡ð‘,½–° Z»;˜”‡òQ,¾È–°ë *»+˜”óÑ,À¨–±Ã » ˜”õ‘,¨–²£ ÒºÛ˜”÷,ÄH–³ƒ ¢º›œT ‡øÑ,ÅÈ–´[ zºkœT ‡úQ,Çh–µ; Rº;œT  ûÑ,Èè–¶ 2ºœT ý‘,ʨ–¶û º œT ‡ÿ,̈–·Û úºœT ˆ‘,ÎH–¸³ Òº#œT ,Ж¹“ ¢ºKœT‘,ш–ºƒ rº[œTÿˆQ,Ó(–»c JºsœTýˆÑ,Ôè–¼C º{œTûˆ‘,ÖÈ–½ òºƒœTùˆ Q,؈–½ë Òº{œø Ñ,Ú(–¾Ã ¢ºkœö Q,ÛÈ–¿“ jºS˜ô,Ýh–Àc Bº3˜òÑ,ß(–Á; ¹ã˜ðˆ‘,á(–Âò¹ƒ˜îˆQ,ã(–Âëʹ3˜íÑ,å–û¢¹˜ëQ,樖ēr¸Ó˜éˆÑ,è(–ÅsJ¸Ã˜çˆ‘,éè–ÆC"¸ã˜åˆQ,먖Çò¹3˜ÔãˆÑ,íh–Ç󹋘ÔâÑ,ïH–ÈÓ’¹Ã˜Ô à!Q,ðè–É«b¹Û˜Ô!Þ#,ò¨–Ê{2¹ã˜Ô"Ü$Ñ,ôH–ËK¹ã˜Ô#Úˆ&Q,õè–Ì#ҹØÔ$؈(,÷ˆ–Ì󪹣˜Ô%Öˆ)Ñ,ùH–ÍË‚¹“˜Ô&Ôˆ+Q,û–ΣZ¹“˜'Ó-,üÈ–Ï{2¹‹˜(Ñ.Ñ,þ¨–ÐK¹›”( Ð/Ñ-H–Ñ#â¹£”)Ï0‘-H–Ñ#ʹ«”*͈2Q-è–Ñóš¹£”+ˈ3‘-È–ÒÃr¹“”,Ê5Q-È–Ó“B¹ƒ”-È6Ñ-¨–Ôs¹{”.Æ8Ñ- H–ÕKÚ¹k”/Ä:‘- è–Ö#¢¹c”0ˆ<- ¨–Öóz¹S1Àˆ=Ñ-ˆ–×ËR¹+2¾ˆ?Q-h–Ø›"¸ó3½A-H–Ùkò¸Ë4»BÑ-–Ú;ʸÓ5¹D‘-¨–Û ¢¹Ô6·ˆF-H–ÛÛz¹ Ô7µˆGÑ-(–Ü£J¸ÛÔ8³ˆI‘-–Ýs¸sÔ9²KQ-È–ÞCâ·»Ô:°M-h–ߺ·+Ô;®NÑ- H–ßã’·Ô<¬PQ-"(–à«j·#”=ªRQ-$–á{2¶ó”>¨T-%È–âC¶{”?¦ˆU‘-'ˆ–ãÒ¶3”@¥W-)H–ãóš¶ ”A£XÑ-+(–äËjµã”B¡Z‘-,è–å‹Jµ³”CŸˆ\-.h–æCµk”Dˆ]Ñ-0H–æëÚµ#”Eœ_‘-2H–绪´Ã””Fša-4H–蛚´c””G˜ˆbÑ-5è–ékŠ´k””H–ˆdQ-7h–ê;J´›””I”ˆf-8è–ë´»””J“gÑ-:ˆ–ëòÿÚ´Ó˜”K‘iQ-<ˆ–ìÊÿ²µ˜”Lˆk->h–íŠÿšµk˜”Mˆl‘-?è–îJÿjµ“˜”N‹ˆnQ-Ah–ï"ÿ*µ£˜”OŠpQ-C–ð ÿ µS˜”PˆqÑ-DÈ–ðúþÒ´³˜TQ†ˆsQ-Fˆ–ñÚþÚ´cœTR„ˆu-HH–òªþ¢´œTSƒvÑ-Iè–ózþz´CœTTxQ-Kˆ–ôJþB´{œTUˆyÑ-M(–õþ³óœTV}ˆ{‘-N¨–õêýò³SœW|}Q-Ph–öºýʳcœXz~Ñ-R(–÷zý’³ÃœYxˆ€‘-Sè–ø:ýj³óœZvˆ‚Q-U¨–ùý:´œ[tˆ„-WH–úý³ûœ\s…‘-XÈ–úÚüâ³óœ]qˆ‡-Z(–û¢ü²³»œ^oˆˆ‘-[È–ü‚üz³cœ_nŠQ-]h–ýrüB³œÔ`lŒ-_–þJü"³œÔajÑ-`È–ÿ ûú³+œÔbhˆ‘-bˆ–ÿÂûº³#˜Ôcfˆ‘Q-dH—Šûš³#˜Ôddˆ“-eÈ—bûb³3˜Ôec”Ñ-gH—Bû³S˜Ôfa–‘-hè—úÚ³c”Ôg_˜Q-jˆ—Êúª³k”Ôh]šQ-lh—Šúz³C”Ôi[ˆ›Ñ-nH—búj³3”ÔjYˆ‘-p—Búj³3””kWˆŸQ-q¨— ú³””lV Ñ-s(—Âùâ²ó”mTˆ¢‘-tÈ—zùÒ²»”nRˆ¤-v¨— :ùв[ToQ¥Ñ-xh— ù‚²K”TpO§‘-z(— êùJ²#”TqMˆ©Q-{¨— ¢øú±Û”TrKˆªÑ-}(— Røò±ƒ”sIˆ¬‘-~È— úø²±”tH®Q-€H— Âør°Ó”uF°-‚—Šø:°‹”vDˆ±‘-ƒ¨—Zø°c”TwC³Q-…ˆ—2÷â°S”TxAµ-‡H—÷ª° ”Ty?¶‘-ˆè—Ò÷j¯Ã”Tz=ˆ¸Q-Šˆ—¢÷*¯³”T{<º-Œ—‚ö꯫”T|:»‘-¨—Jöº¯‹”}8ˆ½Q-h—öʯ“”~6ˆ¿-‘H—Òöâ¯{”4ˆÀÑ-’è—‚ö‚¯C€3ÂQ-”H—Jö2¯+Ô1Ä-•È— ö*¯Ô‚/ˆÅÑ-—ˆ—ÂõҮ댔ƒ.ÇQ-™h—‚õ¢®ûŒ”„,É-›(—Jõº¯ˆT…*ÊÑ-œè—õb¯ˆT†(ˆÌ‘-žh—ºõ*¯#ˆ‡&ˆÎQ- (—zôú¯+„ˆ%ÏÑ-¢—*ôª¯„‰#ˆÑ‘-¤—Âô‚®Ã„ÔŠ!ˆÓ-¥È—JôJ®s€Ô‹ ÔÑ-§ˆ—òô®£€ÔŒˆÖQ-©(—¢ô®ó€Ô×Ñ-ªè— Zóò¯€”ŽÙ‘-¬ˆ—! ó¢¯;€”ÛQ-®H—!²óНS€ÔˆÝ-°—"jó:¯#„Ô‘ÞQ-±ˆ—#2ó¯ „Ô’ˆßÑ-³(—#ÒòÚ¯#„Ô“á‘-´È—$jò²¯c„”ãQ-¶h—%òj¯‹„T•ˆå-¸—%²ò¯ÓˆT– ˆæ‘-¹È—&Šò °#ˆ”— ˆè‘-»ˆ—'Rò°ˆÔ˜ ê-½H—( ñê¯{ˆÔ™ˆëÑ-¿(—(ºñê®{ˆšˆí‘-Á—)zñò­+ˆT›ïQ-×*JñʬKŒTœˆðÑ-ÄÈ—+ñz¬ŒTˆò‘-Æh—+Òñ«ÓŒ”žôQ-È—,’ðÚ««Œ”ŸþõÑ-ÉÈ—-Jð²«;” üˆ÷‘-ˈ—. ðZªÓ”¡úˆùQ-Í(—.Ò𪫔¢ùúÑ-Îè—/ªï⪛Ô£÷ˆü‘-Ј—0ŠïÚª³Ô¤õˆþ-Ò(—1ZïÒª«”Ô¥ôÿÑ-Óè—2"ïjªc”Ô¦ò ‘-Õˆ—2êï*ª”Ô§ð‰Q-×h—3ªï©³”Ô¨î‰-Ù(—4jï©+”Ô©í ‘-Û—5"îò¨ƒ””ªë‰Q-ܨ—5òîÚ¨;””«ê Ñ-ÞH—6Ò“”¬è‰ ‘-ßÈ—7²î‚©”­æ‰ -áh—8jîZ©”®å Ñ-ãH—9"î:¨»”¯ã ‘-äè—9Úî ¨#”°á‰Q-æH—:’íÚ§£”±à Ñ-çè—;bí¢§+”²Þ ‘-ê—<*ír¦³Ô³܉-ì(—<òíZ¦[Ô´Û Ñ-î(—=ºír¦kÔµÙ‰‘->ríR¦£Ô¶׉-ðè—?*í ¦Ë·Ö ‘-òˆ—?êì¦ë¸Ô‰Q-ôh—@Âì’§3”T¹Ò‰!-öˆ—A’ìj§S”TºÑ "‘-øˆ—Brìb§c””»ω$-ùè—CBìB§K””¼Î %Ñ-ûH—D ì ¦û””½̉'Q-üè—Dâëʦc”Ô¾Ë )-þÈ—EÂ뚥“˜Ô¿É *‘.È—F¢ë‚¤Ó˜ÔÀlj,.¨—Grëz¤Ë˜ÔÁÆ -Ñ.¨—H:ë‚¥˜Âĉ/‘.H—I ë:¥˜Ã‰1.¨—Iúë¤ë˜ÔÄÁ 2‘. H—Jêꤓ˜ÔÅÀ 4. (—KÚꢤ;˜Ôƾ‰5‘. —LÂꪣۘÔǽ 7.¨—Mzꂣ˘ÔÈ»‰8‘.(—N*êB£ãœÔɺ :Q.È—Nòéú£«œÊ¸ ;Ñ.ˆ—OÚéÚ£;œË¶‰=Q.H—PÒéÚ¢‹œT̵ ?.È—Q¢é²¢+œTͳ‰@Ñ.(—RZé‚¢3œ”β BQ.(—S2éz¢œ”ϰ‰CÑ.(—T*éJ¡K ÔЯ EQ.è—Ué ‹ Ñ­‰FÑ.¨—Uâèê ³ TÒ«‰H‘.!h—VºèÊ¡S TÓª J.#—WºèÚ¡[ ”Ô¨‰KÑ.$È—XÊè² ƒ ”Õ§ MQ.&è—YÒ肟ˤÔÖ¥‰O.(¨—ZºèRŸë¤Ô×£‰P‘.*(—[‚è K¤ÔØ¢ RQ.+¨—\ZçÒ ƒ¤ÔÙ ‰SÑ.-(—]b窠“¤ÔÚŸ‰UQ..è—^jçr ³¤ÔÛ‰VÑ.0è—_Zç Ó¤ÔÜœ X‘.2¨—`:檠㤔ݚ‰ZQ.4(—aæj¡¤”Þ™ [Ñ.5¨—bæZ¡3¤”ß— ]‘.7(—cæJ ó¤”à•‰_.9—d æ ƒ ”á” `‘.:È—dúåâ c Tâ’‰b.h—fªåª [ Tä‰eQ.@h—gj媠 TåŽ fÑ.B—h:åzŸ³ T按hQ.C¨—i*å"Ÿs Tç‹ iÑ.Eˆ—j2埓 T艉k‘.GH—k2åŸÓœT鈉m.I—l äÚ Kœê‡ nQ.Jè—lÚ䢠ãœë…‰p.Lˆ—mÒ䢡œì„ q‘.Nh—nÚäâ »œí‚‰s.P—oºäú ‹œî t‘.Q¨—pz䪡s˜ï‰v.SH—q2äB£s˜Tð~ w‘.U(—qúãò¥ ˜Tñ|‰y.Vè—rêãÚ¥£˜Tò{ zÑ.X¨—sêä ¥ã˜”óy‰|‘.ZH—tÚä"¦˜”ôx ~.\(—u¢ãÊ¥Û”Ôõv‰‘.^(—vrã’¥[”Ôöu .`H—wbãò¤«” ÷s‰‚Ñ.bH—xbäJ£+” ør „Q.d—yJä: ›” Tùp‰…Ñ.eè—z"ä*žë” Túo ‡Q.gè—zúãú “” Tûm‰‰.j—{Òãº¤ó” ”ül ŠÑ.l(—|²ãŠªÓ” ”ýj‰ŒQ.n—}šã‚­K” ”þi Ñ.oè—~’ã’­S” ”ÿg‰Q.q¨—‚㲬+” •f Ñ.s¨—€jãš©›” •d‰’‘.uˆ—Jãj¦³” •c ”.wˆ—‚ã*¥{” •a‰•‘.yˆ—ƒâÂ¥£” •` —.{¨—ƒÚâZ¦«” •^‰˜‘.}ˆ—„ºâ §Ã” •] šQ.H—…¢áÚ¨;˜ •[‰œ.€è—†’Ẩƒ˜ •Z ‘.‚È—‡Šá¨»˜ • X‰ŸQ.„È—ˆ‚á⩜ • W  Ñ.†è—‰rá⩳œ Õ U‰¢Q.ˆ¨—ŠRኪC  Õ T £Ñ.Š—‹2á"« ! S ¥Q.‹ˆ—Œàâ¬c !UQ‰¦Ñ.H—àâ­¤!•P ¨Q.(—Žàꬫ¤!ÕN‰ª.‘(—àÊ«³¤"L‰«Ñ.“—àŠª£¤"•K ­Q.”è—‘à*©£¤"ÕI‰¯.–ˆ—’à¨[¤#H‰°‘.˜h—“Bàb¦S¤#•G ².šˆ—”jàú£3¤#ÕE ³Ñ.œˆ—•zár £¤$D µQ.žH—–záR S¤$UB‰¶Ñ. (——Šá «¤$UA ¸.¢(—˜¢á*¡¤$•?‰¹Ñ.¤ˆ—™ºá*¡ $•>‰».¦È—šºá ë $Õ= ¼Ñ.¨ˆ—›Âàê¡ $Õ;‰¾Q.ªh—œÒມC %: ¿Ñ.¬h—âàŠ¡Kœ%9 ÁQ.®¨—žúàj¡+œ% 7‰ÂÑ.°È—ŸòàR¡œ%!6 Ä.²È— òàR¡˜%U"4‰Å‘.´¨—¢ à:¡˜%U#3 ÇQ.¶È—£*ßú Ã˜%U$2 ÈÑ.¹(—¤:ßÊ ƒ”%•%0 Ê‘.»¨—¥Bß² K”%•&.‰Ì.½è—¦Bߪ C”%•'-‰Í‘.À—§Jߊ 3”%Õ(, ÏQ.Â(—¨ZßZ %Õ)*‰ÐÑ.Ĉ—©bßB %Õ*) Ò‘.Ç—ªJß2 ‹%Õ+' ÔQ.Éh—«JßJ¡£&,& ÕÑ.˨—¬bßZ£k&-$‰×Q.ÍÈ—­rß"¥k&.# Ù.ÏÈ—®Šß"¦›&/!‰Ú‘.Òh—¯zÞê¦c&0 ÜQ.Õ—°jÞ²¤ã&1‰Þ.×h—±jÞ¢¢Ó&U2 ßÑ.Ùˆ—²‚Þz¢&U3‰áQ.Ûˆ—³¢Þr¢{&U4 âÑ.Ýè—´²Þ£+&U5‰ä‘.àH—µ²Ýʤ &U6 æ.⨗¶ªÝš¤s”&•7‰çÑ.å—·ÂÝb¤£”&•8 éQ.ç(—¸âÝ*¤ã”&•9‰ë.éH—¹òÝ¥c”&•: ì‘.눗»ÜÒ¥ë”&Õ;‰îQ.íÈ—¼Ü¢¦K”&Õ< ïÑ.ð—½*Ür¦˜&Õ= ‰ñ‘.ò(—¾BÜ:¥{˜&Õ> ó.ôh—¿Rܤû˜&Õ? ‰ôÑ.ö¨—ÀZÛò¤‹˜'@ ö‘.ù—ÁzÛÊ£û˜'A‰ø.ûH—¢ۢ£#˜'B ùÑ.ýH—ÃÊÛr¢;˜'C ûQ.ÿˆ—ÄâÛJ¡Ó˜'D‰üÑ/È—ÅúۡØ'E þQ/(—ÇÚê¡ó˜'F ÿÑ/ˆ—È:Ú²¢˜'GþŠQ/È—ÉRÚ‚¢;˜'Hý / (—ÊZÚJ¢[˜'IûŠÑ/ ˆ—ËJÚ¢[˜'Jú Q/È—ÌRÙâ¢K˜'KøŠ/(—ÍjÙ²¢˜&ÕL÷ Ñ/h—Î’Ùr¡ã˜&ÕMõŠ ‘/¨—ϲÙJ¢ ”&ÕNô /è—ÐÊÙ*¢3”&ÕOòŠÑ/H—ÑÒØò¢C”&ÕPñ Q/¨—ÒÚØº¢3”&ÕQïŠÑ/è—ÓêØŠ¢#”&ÕRî ‘/!è—ÕØR¢”&•SìŠ/$—ÖØ"¡ë”&•Të Ñ/&H—×*×ê¡Û”&•U銑/(È—Ø:סӔ&•Vè Q/+(—ÙBך¡Ó”&•WæŠÑ/-ˆ—ÚJ×Z¡Ã”&•X劑//¨—Ûj×"¡Ë”&•Yä /1È—ÜzÖú¡ã”&•Z⊠Ñ/3è—݂֢#”&•[á "‘/6H—Þ’Öš¢{&Õ\ߊ$/8¨—ß’ÖR¢Û&Õ]Þ %Ñ/:è—àšÖ£Ë'^ÜŠ'‘/=(—á¢Õò¥C'^ Ü (/=(—á¢Õ⥻'_Û )/?¨—âºÕʦ“'U`ÙŠ*Ñ/B—ãÚÕ‚§'•aØ ,Q/Dh—äòÕB§3'•b× ./FÈ—åúÕ2§['ÕcÕŠ/‘/I(—ç Ôâ§K(dÔ 1Q/Kˆ—è:ÔŠ§SŒ(UeÒŠ2Ñ/N—ébÔj§CŒ(UfÑ 4Q/P¨—êzÔj¦[Œ(•gÏŠ6/S(—ëzÔb¤£Œ(ÕhΊ7‘/Uˆ—ì‚ÔB¢{Œ(ÕiÍ 9Q/WÈ—í¢Ô  ÓŒ)jËŠ:Ñ/Zh—îÒÓâŸÓˆ)kÊ *Æ¢˜Ûx-U´c µ‘0&h˜?JÆÂ˜#x-UµaŠ·Q0)ˆ˜@ZÆz—t-•¶` ¹0,ˆ˜AjÆ"–[t-•·^Šº‘00˜BŠÅò–t-Õ¸]мQ03H˜C¢Å•ût-Õ¹\ ¾06H˜D²Å¢–t-ÕºZŠ¿Ñ09h˜EÒÅz•ót-Õ»Y ÁQ0 âÑ0yh˜\úÁÚ—Ëx-•Ð<Šä‘0|ˆ˜^Á¢—Ëx-•Ñ; æQ0¨˜_BÁj—Óx-•Ò9Šè0‚Ș`bÁ:—Ãx-•Ó8 éÑ0…è˜ajÁ —Ãx-UÔ7 ë‘0‰(˜b‚Àâ—»x-UÕ5Ší0Œ(˜c¢Àº—Ãx-UÖ4 îÑ0Žè˜dÊÀr—Ëx-U×2Šð‘0‘ȘeúÀ2—Ëx-UØ1ŠòQ0”Șg À*˜ x-UÙ0 ôQ0˜˜h¿ú˜#|-Ú.Šö0›H˜i¿²˜+|-Û- ÷‘0ž(˜j2¿’˜c|-Ü+ŠùQ0 è˜kb¿B˜[|-Ý* ûQ0£ˆ˜lŠ¾Ú˜S€-Þ(Šý0¦¨˜m²¾º˜›€-ß' þÑ0©è˜n¾¢˜ë€-à%‹Ñ0¬è˜oâ¾J˜Û€-á$‹Q0¯¨˜q½ò˜£„-â# 0²H˜rZ½ò˜“„-ã!‹Ñ0µ˜s’¾˜k„-ä ‹Q0¸˜tª½â˜„-å 0»(˜uÚ¾"˜+„-æ‹ Ñ0½è˜w"¾ —ã„-ç‹ ‘0À¨˜xR½¢—s€-è 0Ãh˜yr½z—C€-é‹Ñ0ƈ˜zš½z—#€-ê‹‘0Éh˜{º½j–Ó€-ë 0Ëè˜|ò½B–s|-ì‹Ñ0Ψ˜~"½–K|-í‹‘0ш˜*¼º–C|-î Q0ÔȘ€2¼J–#x-ï‹0×ȘJ»ú–x-Uð‹‘0Û˜‚z¼–;x-Uñ ‘0ÞH˜ƒ¢¼R–;t-Uò ‹Q0ᘄ¼b•ót-•ó !0ã蘅ڼJ•›t-•ô ‹"Ñ0æè˜†ò»ò•Kt-Õõ $Ñ0ê(˜‡ò»z•+p.ö‹&‘0íH˜ˆò»•+p.÷‹(Q0ð(˜Šºú•Cp.Uø *0óH˜‹Jºâ•3p.•ù‹+Ñ0öh˜Œrº¢”Ûl.Õú -‘0ùȘ‚ºb”“l.Õû /Q0ýH˜Ž’ºB”‹l/üÿ‹0Ñ1ˆ˜¢º”“l/Uýþ 2‘1Șª¹Ê”›h/Õþý 4Q1˜‘²¹Š”³h0ÿû‹5Ñ1 ¨˜’ʹš•h0Vú‹7Ñ1H˜“Ú¹ª•h0–ù 9Q1¨˜”â¹r”Ëh0Ö÷‹;1蘕ê¹”ch1Vö‹<Ñ1H˜–ú¸Ú“óh1–õ >‘1蘘:¸ê“£h1Öó‹@1¨˜™b¸ò“3h2Vò‹AÑ1#¨˜šj¸º’{h2–ñ C‘1'H˜›š¸’‘ãh2Öï‹EQ1*¨˜œâ¸¢‘£l3 î‹G1-蘞¸r‘l3V í HÑ11h˜ŸB¸:ƒl3– ì JQ15H˜ j¸bSp3Ö ê‹KÑ19(˜¡ª¸Ò+p3Ö é M‘1<Ș¢ò¸Êƒp4è OQ1@(˜¤2¸šŽãp4ç PÑ1Cˆ˜¥r¸JŽst4Vå‹R‘1G˜¦º·âŽ+t4Vä TQ1J¨˜§ú·ŠŽt4Vã V1Nh˜©2·ZŽ#t4V â W1Q蘪r·JŽ3x4Vá‹WÑ1Q蘪r·:ŽCx4Và Y‘1U(˜«º·:Ž[x4VÞ‹[Q1XH˜­·:ŽCx4VÝ‹]1[ˆ˜®J·JŽx4VÜ ^Ñ1_H˜¯’·"‹|4VÛ `Q1bȘ°ê¶Ò |4VÙ‹b1f(˜²B¶ŠŒ»|4VØ d1iˆ˜³ª¶rŒÃ|4V× eÑ1m˜´ò¶ZŒë|4VÕ‹gQ1pH˜¶B¶"Œû|4VÔ‹i1s¨˜·’µÚŒë|4Ó jÑ1wH˜¸ò¶ |4Ñ‹l‘1zȘºJ¶2;|3Ö ЋnQ1~(˜»’µòŒë|3Ö!Ï oÑ1h˜¼ÚµšŒc|3–"Í‹q‘1„Ș¾"µr‹ë|3–#Ì‹sQ1ˆ˜¿bµZ‹s|3–$Ë u1‹h˜À¢µJŠã|3V%Ê v‘1ŽÈ˜ÁÚµ"ŠC|3V&É xQ1‘è˜Ã"´ú‰Ã€3V'Ç‹yÑ1•(˜Äjµ‰³€3–(Æ {‘1˜h˜Åº´ê‰[€3–)Å }Q1›¨˜Ç ´Š‰€3–*Ä ~Ñ1Ÿ(˜Èb´ ‰+€3Ö+‹€‘1¢h˜É²³Â‰›€3Ö,Á‹‚Q1¥È˜Ë³ªŠK|3Ö-À ƒÑ1©H˜ÌR³ªŠã|4.¾‹…‘1¬È˜Í¢³š‹c|4/½‹‡1°H˜Îò³r‹£|40¼‹ˆÑ1³È˜ÐB³J‹{|41» ŠQ1·(˜Ñ¢³J‹#|42º ‹Ñ1º¨˜Ó ³‚ŠÃ|43¹ Q1½è˜ÔR³¢Šx3Ö4·‹1Á˜Õ’³²‰kx3Ö5¶‹‘1ÄH˜ÖÚ³ŠˆËx3Ö6µ ’Q1Çè˜Ø"³"ˆt3–7´ ”1ˈ˜ÙZ²â‡‹t3–8²‹•Ñ1Ï(˜Ú¢³‡Cp3V9±‹—Q1Òˆ˜ÛÒ³J†»p3V:°‹™1Õè˜Üú³*…Ãl3;¯ š‘1Ùˆ˜Þ*²ú„ól3<­‹œ‘1ÝH˜ßj³2„£h3=¬‹ž1àˆ˜à¢³"„ h2Ö>« ŸÑ1ä˜áº²ºƒsh2Ö?ª ¡‘1稘âÒ²¢ƒKd2Ö@¨‹£1ëȘãê²¢ƒSd2ÖA§‹¤Ñ1ïh˜äâ²jƒd2ÖB¦ ¦‘1ó˜åú²Z‚û`2ÖC¥ ¨1ö¨˜ç"²B‚Û`2ÖD¤ ©Ñ1úH˜è2²"‚£`2ÖE¢‹«‘1ýè˜éJ²*‚£`3F¡‹­Q2ˆ˜êR±â‚k`3VG  ®Ñ2H˜ëZ±¢‚K`3VHŸ °Ñ2è˜ìr±j‚C`3–I‹²‘2 ¨˜í’±B‚3`3ÖJœ ´Q2h˜îª±*‚#`4K› µÑ2H˜ï±"‚#`4VLš ·‘2(˜ðò± ‚`4–M˜‹¹Q2˜ò"°Úë`4ÖN—‹ºÑ2è˜óR°ºë`5O– ¼‘2#Șôr°²‚ `5P• ¾Q2'Șõаª‚+`5VQ“‹À2+¨˜öš°j‚#`5–R’‹ÁÑ2/ˆ˜÷°J‚3`5ÖS‘ ÃQ23(˜øò°J‚S`6T Å27(˜ú"°*‚S`6VUŽ‹ÆÑ2;(˜ûB° ‚k`6–V‹È‘2?H˜üZ¯ò‚£`6ÖWŒ‹Ê2Ch˜ý‚¯âƒ`7X‹ ËÑ2Gh˜þº¯ºƒ›`7YŠ Í‘2Kh™¯’„3`7VZˆ‹Ï2Oh™:¯z„ã`7–[‡‹ÐÑ2Sˆ™Z¯Z…ƒ`7Ö\†‹ÒQ2Wˆ™‚¯:†`7Ö]… Ô2[¨™¢¯*†s`8^„ ÕÑ2_è™Ò¯†»`8_‚‹×‘2d™ ®ú†Ã`8V`‹ÙQ2h™:®ê†›`8Va€ ÚÑ2l™ j®ª†3`8–b Ü‘2oè™ ²®r…³d8–c}‹Þ‘2t(™ ®B…d8–d|‹à2xh™ R®2„«d8–e{ áÑ2|ˆ™ª®z„›d8–fz ã‘2€h™Ú®z„Sh8Ögx‹åQ2„¨™ ®Bƒóh8Öhw‹ç2ˆ¨™B­òƒ›h8Öiv‹èÑ2Œè™š­¢ƒSh8Öju ê‘2‘™ò­jƒ#l8Ökt ìQ2”è™Z­J‚ûl8Ölr‹î2˜ˆ™š­R‚ãl8Ömq‹ïÑ2œh™Ú­Z‚Ãp8Önp ñ‘2 H™:­ ‚Kp9oo óQ2¤™ЬªËt9pm‹õ2§è™ê¬zƒt9Vql‹öÑ2«¨™R¬Šsx9–rk‹øQ2¯h™¢¬B€ûx:sj ú2³H™! ¬ €›x:Vti ûÑ2·H™"š¬€S|:Öug‹ý‘2»(™$*«òÃ|;vf‹ÿQ2¿™%²«Ú|;–we 2ÂÈ™':¬ ~‹€<xd Ñ2Æh™(ª¬ }Û€<–ybŒ‘2ÊH™*:¬*}ƒ€<ÖzaŒQ2ÎH™+⬂}³€=V{` 2ÒH™-‚¬ê~3€=Ö|_ 2ÖH™/2­J~û€>}]Œ Ñ2Ú(™0Ú­B»€>V~\Œ ‘2ÞH™2r­*€›€>Ö[ Q2âh™4­K€?€Z 2戙5š¬êã€?VY Ñ2êH™7R­‚{€?–‚WŒQ2îH™8ò¬Ú‚£€?ÖƒVŒ2òˆ™:z¬z‚£€?Ö„UŒÑ2öè™<¬r‚Ó€@…T ‘2ûh™=Ò¬r‚ó€@†S Q2ÿh™?ЬZ‚Ë„@V‡QŒ3h™A2¬Z‚“„@VˆPŒÑ3H™BÒ¬j‚[„@V‰O ‘3 h™Dr¬Z‚„@VŠN "Q3ˆ™F¬*£„@V‹M $3¨™GÚ«º+„@VŒKŒ%Ñ3¨™I’«R€Ó„@VJŒ'Q3ˆ™K:«*€³„@VŽIŒ)3ˆ™Lò«J€Ë„@H *Ñ3#ˆ™Nš«J€Ó„@G ,‘3'È™P:«€“„@‘F .Q3+È™Q⪺€c„@’DŒ03/ˆ™S’ªš€s„@“CŒ1Ñ33¨™U:ªb€c„?Ö”B 3‘37È™VÚª€C„?Ö•A 5Q3;è™XŠª€[„@–@ 6Ñ3?è™Z:ªJ€‹„@—? 8Q3C¨™[ʪB€c„@˜> 9Ñ3Gˆ™]Rª:€„@™<Œ;Ñ3Kh™_ªbë„@Vš;Œ=‘3Oˆ™`ªb“„@V›:Œ?Q3SÈ™bzªJK„@Vœ9 A3X™d2©ê~Û„@–8 BÑ3\H™eÚ©¢~c„@–ž6ŒD‘3`H™gz©’~k„@ÖŸ5ŒF3dH™i*©Z~{„@Ö 4ŒGÑ3hˆ™jÚ© ~{„A¡3 I‘3lÈ™l’¨Ú~£„A¢2 K‘3q(™n:¨º~ÄAV£1 MQ3uH™oÒ¨š~Ó„AV¤/ŒO3yh™qz¨š~ó„A–¥.ŒPÑ3}h™sB¨r~ë„A–¦-ŒR‘3ˆ™u¨B~Ó„AÖ§, TQ3†™vº¨ ~³„AÖ¨+ V3ŠH™xj§ê~»€B©* WÑ3Žˆ™z"¨"€Bª(ŒY‘3’¨™{Ò¨ +€BV«'Œ[3–è™}Ч’~Û€BV¬&Œ\Ñ3›(™:§J~Ë€BV­% ^Ñ3Ÿˆ™€ú§2~Û€B–®$ `‘3£è™‚ª¦ú~«€B–¯"ŒbQ3¨H™„Z¦Â~s€B–°!ŒdQ3¬ˆ™† ¦Ò~{€B–± Œf3°È™‡Â§ ~ƒ€B–² gÑ3µ(™‰r¦Ò~#|BÖ³ i‘3¹h™‹¦š}Ë|BÖ´ŒkQ3½È™Œº¦’}«|BÖµŒm3Âh™ŽR¦j}S|BÖ¶ŒnÑ3Ç™â¦J}|BÖ·Œp‘3Ëh™‘š¦J}|C¸ rQ3Й“Z¦"|Ë|C¹ t3Ôh™•¦*|ã|Cº u‘3ب™–Ú¦r}[|C»Œw‘3Ü虘‚¦:}k|BÖ¼ŒyQ3á(™š*¥Â}S|BÖ½Œ{3å(™›â¥z}S€BÖ¾ |Ñ3鈙ª¥j}k€B–¿ ~‘3z¥Š}“€B–À €Q3òˆ™¡"¥š}ƒ|BVÁ ‚3öÈ™¢²¥z};|B Œƒ‘3û™¤R¥:|Ë|Bà Œ…Q3ÿh™¦ ¤ê{ó|AÖÄ Œ‡4È™§Ê¤Ú{|AÖÅ ŒˆÑ4™©j¥zS|A–Æ Š‘4 (™ªê¥"y#|A–Ç ŒQ4h™¬r¤ÊwC|A–È Ž4¨™®¤‚u;|A–É ‘4™¯¢¤šs{xA–Ê ‘Q4h™±b¤úrxA–ËŒ“4!È™²ê¥BpãxA–ÌŒ”Ñ4&ˆ™´r¥*o‹xA–ÍŒ–‘4+H™¶¤ún[xA–ÎÿŒ˜4/h™·’¤ÒmÛxA–Ïþ š43h™¹B¤ênKxA–Ðý ›Ñ47¨™ºú¤ÒnËxA–Ñü Q4<(™¼¢¤¢o#xAVÒû Ÿ4@¨™¾B¤ÊoÓxAVÓùŒ¡4D虿ڤ’oãxAVÔøŒ¢Ñ4I™Á‚¤zoËxAÕ÷Œ¤‘4MH™Ã2¤boƒxAÖö ¦Q4Qˆ™ÄÒ¤nëx@Ö×õ ¨4U¨™Æj¤JnÃx@ÖØô ©Ñ4Yè™Çú¤jn{x@–Ùó «‘4^H™É‚¤:mûx@–Úò ­4bˆ™Ë¤Jmët@–Ûñ ®Ñ4fè™Ìª¤¢nCt@VÜð °‘4kˆ™Î:¤Šn+t@VÝQ4p™Ïʤ*mÓt@VÞ팳Ñ4tH™ÑR£òm«p@ß쌵‘4x¨™Òê¤JmÃp@à댷Q4}™Ôj¤jmƒp@áꌹ4ˆ™Õʤ l³p?Öâ錺Ñ4†™×:£Úll?Öã茼Q4Šˆ™Øº¤"kël?Öã è ¼Ñ4Šˆ™Øº¤kÓl?Öäç ¾4™Ú:¤kkl?–åæ ¿Ñ4“ˆ™Ûº£¢j³l?–æå Á‘4—è™Ý*£ºjƒl?–çä ÃQ4œ(™Þš¤"j“l?Vèã Å4 ¨™ßú¤Rj[l?Véâ Æ‘4¥™áb¤*i»l?VêàŒÈQ4©¨™âÚ¤il?ëߌÊ4­è™äB£òh3l?ìތˑ4²(™åŠ£êgcl?íÝŒÍ4¶¨™æú¤Zg l?îÜŒÎÑ4»™èŠ¥bgcp?ïیБ4¿h™ê¥Òg3p?ðÚŒÒ4Ãș몥Šfkp?Vñٌӑ4Çè™í*¥šfp?VòØŒÕQ4̙²eût?Vó׌×4Ðh™ð ¥Reƒt?–ô֌ؑ4ÔÈ™ñŠ¥"e[t?–õՌڑ4Ù(™ó*¥eSt?ÖöÔŒÜ4ݨ™ôʤòe+t?Ö÷ÓŒÝÑ4áÈ™öB¤Âdãt@øÒ ß‘4åè™÷Ò¤šd›t@ùÑ áQ4êH™ùr¤jd+t@VúÐ âÑ4û ¤Zc£t@VûÏ ä‘4òè™üª¤úc£t@–üÎ æQ4÷h™þJ¥jc[t@–ýÍ è4û¨™ÿâ¥:bkt@–þÌ éÑ5šj¥jaãt@–ÿË ë‘5ˆšâ¥âaÃt@WÉŒí‘5 Hšj¦*aƒp@WÈŒïQ5 Èšú¦2a#p@ÇŒñ5š‚¦`óp?ׯŒòÑ5hš ¦`óp?—ÅŒôÑ5Èš š¦Ba;p?WÄ ö‘5𠦂a{p?à øQ5#ˆš Цracl>— ú5(šò¦`ël>WÁ ûÑ5,HšJ¥Â`[l> À ý‘50hš²¥²` l=— ¿ ÿQ54ˆš*¥ò`l=W ¾ 59š’¦ _Ûl= ¼Ñ5=hšú¥²_sl<× »Ñ5A¨šJ¥J^ûl<—º‘5EÈš²¥R^ûlW"¦ )Q5›ˆš3¢¤Ò]+h>—#¥ +5Ÿ¨š5¤Š] h>×$¤ ,Ñ5¤Hš6‚¤r]+h?%¢.‘5¨èš7ú¤Z]ch?W&¡0Q5­ˆš9r¤’]Ëh?—' 25²(š:ê¥J^‹l?×(Ÿ3Ñ5¶¨šQ5ÑèšE¥r^St@W/˜@5ÖšF²¥Ò^Kt@W0—AÑ5ÚšHb¦2^;t@W1–CQ5ÞšJ¦j]Ût@—2•E5âhšK¢¦š]³x@—3”G5æèšM*¦Â]{x@—4“H‘5ë(šNʦê]Sx@—5’JQ5ï(šPr§]Kx@×6‘LQ5óˆšR"§š]‹x@×7N5øšSº¨]Û|@×8OÑ5ühšUB¨]£|A9ŽQQ6èšV§¢] |A:SQ6HšXJ§’\³|A;ŒTÑ6 ˆšYò§ê\“€A<‹V‘6 ¨š[ª§Ò\€A=ŠXQ6š]J§²[“„@×>‰ZQ6hš_¨ [K„@×?ˆ\6hš`ʨš[ „@—@‡]Ñ6ˆšbЍâZ«ˆ@WA†_‘6"HšdJ©JZ‹ˆ@WB…a6&hšeò©šZ{Œ@C… b‘6*hšgªªZÓŒ?×D„ dQ6.(šiRª[?—Eƒ f62šk ª2[K?WF‚ gÑ65¨šlÒªb[›”?G i‘69(šnŠª[S˜>×H€ k‘6<èšp2©Â[ ˜>—I mQ6@hšqú©¢Zûœ>WJ~ o6CÈšs©zZÜ>K} pÑ6GHšu’©JZS =—L| rQ6Jèšwb©YÛ =WM{ t6NšyR©ZY‹ <×Nz uÑ6QHš{*©zY¤<—Oy w‘6Tˆš|ê©‚XS¤<Px y6Xš~ªªX¤;—Qwz‘6[š€j«X;¤;WRv|Q6]èš‚*«¢X¤:×Su~6`蚃ò«ÚW£¤:WTtÑ6dš…²«êWk¤:UsQ6gHš‡b¬Wc¤9—Vrƒ6jˆšˆú¬bW‹¤9WWq„Ñ6mhšŠ¢¬âWÛ¤9Xp†‘6phšŒb­rX3 8×Yp ˆQ6s¨šŽ­’X 8—Zo ‰Ñ6vÈšš­‚Wã 8W[n ‹Ñ6yÈš‘2­òWûœ8W\m ‘6}š’Ê­úWÛœ8]l Q6€Hš”Z­ÚW³œ8^k ‘Q6ƒˆš•ú­âW³˜8_j “6†èš—’­êW«˜7×`i ”Ñ6Šš™*­úW‹˜7×ah –‘6hššº­âWS˜7—bg ˜6¨šœ:­²VÛ˜7Wcf ™Ñ6”(šº­’Vc”7de›‘6—hšŸ2­ºV3”6×ed6š¨š Â­ÂUÓ”6—fcžÑ6Èš¢R­ºUƒ”6Wgb ‘6¡š£ê­ÂUC”6ha¢6¤š¥r®U#”5×ia ¤6§š¦Ú®ºUC”5×j` ¥‘6ªHš¨:¯U#”5—k_ §Q6­ˆš©š¯‚U;”5—l^ ©6°¨š«¯úU3”5Wm] ªÑ6³Èš¬Š°JUK”5Wn\ ¬‘6¶Èš®"°ŠUs”5Wo[®Q6¹èš¯š°²Us”5—pZ°6¼èš± ±ZU³”5—qY±Ñ6À(š²r±zU£”5—rX³‘6Ã(š³ê±RU[”5×sWµQ6ÆHšµŠ±RU;”5×tV¶Ñ6Ɉš·*±ÒUS”5×uV ¸‘6Ì蚸º²*Uƒ”5×vU ºQ6ÐHšºB²zUë”5×wT ¼6ÓH𻲲ªUÓ”5—xS ½‘6ÖHš½*²ÚU›”5—yR ¿‘6Ùˆš¾ª²ÒUS˜5WzQ ÁQ6ÜÈšÀ*²ÂU˜5{PÂÑ6àšÁ²òU˜4×|OÄÑ6ã(šÃR³jU{˜4—}NÆ‘6æ(šÄ²³ÒV˜4W~MÈQ6é(𠨬:V«˜3×LÊ6ìšÇ‚´rVÓ˜3—€KËÑ6É´rV›œ3WJÍ‘6ñhšÊ‚´zV;œ3W‚J ÏQ6ôˆšÌ´’UÛœ3ƒI Ñ6÷hšÍj´ªUcœ3„H ÒÑ6ú(šÎÚ´ÊTëœ2×…G Ô‘6ü¨šÐJ´êTËœ2׆FÖQ6ÿHšÑʵTËœ3‡EØ7HšÓBµ*Uœ3ˆDÙÑ7HšÔšµbUsœ3W‰CÛQ7HšÕêµÂV˜3—ŠBÝ7 Hš×j¶ W˜3׋B ß7(šØúµâW³˜4ŒA àÑ7HšÚjµªWó˜4W@ â‘7HšÛâµjW»˜4—Ž? äQ7HšÝJµ"WK˜4×> åÑ7hšÞÊ´êVÛ˜5=ç‘7¨šàR´ºVË”5W‘<éQ7 ¨šáâ´ªVÛ”5—’;ë7#ˆšãŠ´ÂVã”5—“:ìÑ7&èšå ´¢VÔ5×”: î‘7*Hšær´ŠV£5ו9 ðQ7-Hšçú´ºV[5×–8 ñÑ70ˆšéz´¢UÛ5×—7ó‘73Èšêê´âUã5ט6õQ77hšìJµ*VŒ5—™5÷7:èší¢µjVKŒ5—š4øÑ7>HšïµÂVkŒ5W›4 úQ7Ahšðzµ²V+Œ5œ3 ü7DhšñúµâVŒ4×2 ý‘7G¨šób¶JVsŒ4—ž1ÿQ7KHšôº¶rVË4WŸ0Ž7NÈšö ¶jVë4 /Ž7QÈš÷z¶’W3ס.Ž‘7TÈšøú¶bVã3W¢.Q7Wèšúj¶"V‹”3£-7ZèšûÒ¶RV£”2—¤, Ñ7]èšýB¶šVó”2W¥+Ž Q7`¨šþ¢¶rVË”2¦*Ž Q7cˆ› ¶BV{”1—§)ŽQ7f(›z¶bVs˜1W¨(ŽÑ7hțڶªV‹˜1©'Ž‘7kˆ›*¶ªVs˜0—ª'Q7nˆ›z¶bV˜0W«&Ñ7qh›º¶*U«˜/׬%‘7tH›¶bU˘/—­$ŽQ7wh› z¶ÊV3˜/®#Ž7z(› Ò·V«˜.ׯ"ŽÑ7|È› *·*VÛ˜.W°"‘7H› Š·:V³˜-×±! Q7è›Ò·*V#˜-—² "7„H›·BU«˜-³$7†¨›j·²Us˜,—´%Ñ7‰(›ª·òUs˜,WµŽ'Q7‹È›â·òUƒ”,¶Ž)7Žh›·ÒU«”+×·Ž+7‘›·ÂUÛ”+—¸,Ñ7“H›B¸V +W¹.‘7•h›Џ"VC+Wº0Q7—è›Ê·êVKŒ+W»Ž27šè›â·âUûŒ+W¼Ž3Ñ7ž›ò¸U“ˆ+—½Ž5‘7 È›¸‚UÈ+—¾Ž7Q7¢è›:¸ÚV3ˆ+׿97¥H›j¸¢Vƒ„,À:Ñ7¨H› ‚¸RV£„,WÁ<‘7«È›!¢¸*VÓ€,—Â>‘7®È›"â¸ZW€-ÃŽ@Q7±ˆ›$¸rW;€-WÄŽB7´H›%¸ZW[|-×ÅŽCÑ7·(›&:¸W3|.ÆE‘7º¨›'b·ÂVë|.—ÇG7¾H›(‚·zV³|.×È HÑ7Áh›)ª·2V“|/WÉ ŽJÑ7ÄH›*Ò· V;|/—Ê ŽL‘7Çh›+ú¶êUÓ|0Ë ŽNQ7ʨ›-*¶ÒU“|0WÌ OÑ7Íè›.j·U“|0×Í Q‘7Ñ›/º·ŠU³|1ÎS‘7Ô(›1·BUk|1WÏŽU7×H›2*·:U3x1—ÐŽVÑ7Úˆ›3b·šU‹x1—ÑŽX‘7Þ(›4¢·‚Uãx1×ÒZQ7ᨛ5ò·JVx1×Ó\7äè›7R·’Vsx1×ÔŽ]Ñ7è›8š·²V£x1×ÕŽ_Q7ëh›9Ê·jV‹x1—ÖŽa7îÈ›:â·:V[x1—×c7òH›<·:V;x1WØd‘7õ¨›=Z·*V;t1ÙÿfQ7øÈ›>¢·RV[t0×ÚþŽhQ7ü›?Ú·:Vst0WÛýŽj7ÿ(›@ê·V{t0ÜüŽkÑ8ˆ›Aò· Vƒt/×ÝümQ8è›C¶ÊVSp/—Þûo8 (›DR¶²Vsp/WßúŽpÑ8 ˆ›E‚¶ŠV»p/àùŽrÑ8È›FжjVÛp.×áøŽtÑ8è›G’¶ZV«l.—â÷Žv‘8è›H’¶Vsl.—ã÷x8è›IºµâV[l.—äöyÑ8(›Jʵ²VKh.—åõŽ{‘8H›KµªV h.׿ôŽ}Q8"h›L²µšUÓh/çóŽ8%ˆ›M²µrU›d/WèòŽ8(è›NºµZU[d/—éò‚Ñ8,h›OÒµjUSd0êñ„Ñ80(›PòµŠUKd0Wëð†‘83è›RµªUc`0×ìQ87¨›SµÒU³`1Wí8;(›T2¶2V#`1—í î‹Q8>È›U*¶2V;`2îî‹Ñ8>È›U*¶2VC`2ïí‘8BH›V2µÒV#`2WðìQ8Eè›WbµšV `2—ñëŽÑ8IÈ›X‚µjV`2×òꎒÑ8Mh›Y¢µJUÓ\3ó鎔‘8Q›Z²µ*U‹\3ôé–Q8TÈ›[ʵU\3Wõè—Ñ8X¨›\â´òTË\3Wö玙‘8\¨›]ú´úT«\3W÷掛Q8`ˆ›_ µTÛ\3Wøæ8dh›`µZUX3ùåžÑ8h›a2µšUSX3úä Ñ8kÈ›b:µŠU“X2×û㎢‘8o¨›cBµjUËX2×ü⎤‘8s¨›dBµBUëX2—ýᎦ8wH›eJµU»T2—þá§Ñ8{›fZ´âUST2Wÿà©‘8~¨›gZ´ÒUT2Xߎ«Q8‚ˆ›hB´ºTóT2ÞŽ­8†h›i:´šUT2ÝŽ®Ñ8Š(›jB´ÂUT2ݰ‘8È›k:´¢T³T2ܲ‘8‘H›l*´bTT2ÛŽ´Q8•›m"´ÒTKT2XÚŽ¶8™(›n"µTËT2XÙŽ·Ñ8H›o´ÚTóT2˜Ù¹‘8¡(›p´²TóT2Ø Ø»Q8¤¨›q"´ºTãT3 ׎½8¨h›r*´’TóT3X ÖŽ¾Ñ8¬(›s´jTóT3˜ ÕŽÀ‘8¯è›t´JT»T3Ø ÕÂQ8´›u:´*T»T4XÔÄ8·è›vR´2T³T4˜ÓŽÅÑ8»ˆ›w‚´jT{T4ØÒŽÇ‘8¿h›xª´SãT5XÒÉQ8ÃH›y²³êSƒT5˜ÑÊÑ8Lj›z´S›T5ØÐŽÌ‘8Ì›{Ú´*T T6XÏŽÎQ8Ð(›|ê´ZTƒT6˜ÏÐ8Ô›~ ´ºTËT6ØÎÑÑ8ØH›*´ŠT«T7ÍŽÓ‘8܈›€:´RT£T7XÌŽÕQ8àÈ›J´jTÓT7˜ËŽ×Q8å(›‚J´2T£T7ØËÙ8é(›ƒR³ÚT[T8ÊÚ‘8íh›„гšTT8XÉŽÜ8ñ¨›…ʳZSûT8˜ÈŽÝÑ8õ蛇³BTX9Èß‘8ùÈ›ˆJ³T X9XÇáQ8þ(›‰Z²êT3X9˜ ÆŽãQ9ˆ›Šz²ºT+X9Ø!ÅŽäÑ9È›‹ª²ªSû\9Ø"Åæ‘9 蛌겲S£\:#Äè‘9h›Ž*²zS£\:X$ÃŽêQ9è›b²BS»\:X%ÂŽëÑ9h›’²*S‹`:˜&Âí‘9È›‘â²BS“`:˜'ÁïQ9!H›“2²"Ss`:˜(ÀŽñQ9%H›”z±ÚRë`:X)¿Žó9)h›•±zRcd:X*¾ŽôÑ9-¨›— ±bQãd:+¾ö‘91È›˜b±ZQ{d9Ø,½øQ96›™Ú±ŠQkd9Ø-¼Žú9:››J² QÛd9˜.»Žü9=È›œª²ŠRSd9X/»ýÑ9A¨›ê²¢R{d90ºÿ‘9E¨›Ÿ ²BR[d8Ø1¹Q9I¨› "²RRS`8˜2¸9M蛡Z²¢R[`8X3¸‘9R(›¢‚²ÊRC`84·Q9V(›£º³:R‹`7Ø5¶9ZH›¥³âS‹\7˜6µ Ñ9^ˆ›¦B´JTs\7X7µ ‘9b¨›§j´2Tó\7X8´ ‘9fˆ›¨Š´TÃ\79³9j¨›©¢³ÒT3\6Ø:²Ñ9nˆ›ªº³šSÓ\6Ø;²‘9r¨›«â³ªSƒX6˜<±Q9v¨›­"´ S›X6˜=°9zˆ›®J´ZTX6˜>°‘9~È›¯Z´zTcX6X?¯Q9‚¨›°b´ZT[X6˜@®9†h›±j´TX6˜A­Ñ9Šˆ›²r³²S³X6˜B­‘9Žè›³Š³zS‹X6ØC¬ Q9’è›´²³ÚSËX6ØD«!Ñ9–È›µÊ´ SëX7Eª#‘9šè›¶Ú³âTX7XFª%Q9Ÿ›·ú³²SÛX7˜G©'9£H›¹*³ZS#X7ØH¨(Ñ9§¨›ºb³ZR›\8I¨*Q9«è›»š³šR£\8XJ§,9¯È›¼Ê³âS\8˜K¦-Ñ9³è›½ú³úS‹\8ØL¥/‘9¸›¿:´T;\9XM¥1Q9¼H›Àr´2T‹\9˜N¤39Àˆ›Áª´RT[\9ØO£59ÄÈ›ÂÚ´ŠT \:XP¢6Ñ9Èè›Ä´‚SÃ\:˜Q¢8‘9Í(›ÅZ´:S[\;R¡:9Ѩ›Æª´"S#\;XS ;Ñ9Õè›Çú´ŠSc\;ØT =Ñ9Ú(›É:´²S«`<UŸ?‘9Þ¨›Êz´jSÓ`]™M‘:è›Õ"´’T+`>X^˜OQ:h›Öz´‚TK`>˜_—QQ: È›×Ê´RTƒ`>˜`—S:(›Ù2´"Tkd>Øa–TÑ:țڒ³ÚT+d?b•VÑ:ˆ›Ûú³²Td?c”X‘:(›Ýb³‚Sëd?Xd”ZQ:"¨›ÞÒ³bSãh?˜e“\:'(›à:³BSóh?Øf’^:+h›áª³*SÓh?Øg’_Ñ:/è›ã³S‹l@h‘a‘:4h›äš³S+l@Xic‘:9›æ²úRãl@Xje:=ˆ›ç¢³"RÓp@˜kg:B›é"³RRãp@ØlŽhÑ:Fˆ›ê’²òR³p@Ømj‘:Jè›ì²ÚR{tAnl:O›íÒ³ R£tAXoŒmÑ:SH›ïš³BS{tA˜p‹o‘:WÈ›ñ2³:SÃxAØqŠqQ:\H›òª³2SSxBrŠsQ:`ˆ›ôB³rS#xBs‰uQ:dè›õê³RRûxBXtˆw:ih›÷’³2SxB˜u‡xÑ:mÈ›ùB³:SkxBØv‡zÑ:rH›úú³SËxCw†|Q:vÈ›ü’²ÒTxCXx…~Q:{(›þ2²šTxC˜y…€:ˆ›ÿÚ²rSËxCØz„Ñ:„œ’²’SÃ|D{ƒƒÑ:ˆÈœ2²ZS£|DX|‚…Q:Hœ²S[|DX}‚‡:‘ˆœ‚±ÒRû€D˜~ˆÑ:–œR±‚Rƒ€DØ€ŠÑ:šèœ ±2R €DØ€€Œ‘:ŸÈœ ʱjQ»„DØŽ‘:¤œ ¢² QÓ„DØ‚~Q:¨Hœb²:QÈD؃}’:¬ˆœ"²"Q‹ˆDØ„}“‘:°Èœ ²QkŒDØ…|•‘:µœú²ZQ“ŒD˜†{—:¹(œê²’QÛD˜‡{™:½HœÚ²ºRKDXˆzšÑ:Á(œ²³ Rë”D‰yœ‘:Åœ‚³RSK”CØŠyž‘:Éœr³’SK˜CX‹x Q:Ìèœ r³êS˜CŒw¡Ñ:Јœ"j´rSœB˜w£‘:ÔHœ$b´òS3œBŽv¥‘:×èœ&Jµ:S«œA˜u§Q:Ûˆœ(µZSë At©:ß(œ)âµ²TK @˜‘t«:âèœ+ºµúT³ @’s­:æHœ-‚µêTˤ?˜“r®Ñ:éhœ/RµÚU¤?”q°Ñ:쨜1BµêU¤>˜•q²‘:ðHœ3*µâTë¤>–p´Q:óÈœ4úµÂTƒ¨=˜—oµÑ:÷(œ6µrSÓ¨<ؘo·Ñ:ú(œ8’µŠS«¨¶JU3¬:˜œl¿;Hœ?¶ U¬:kÁ; (œAjµ²Tk¬9˜žjÃ; ÈœC"µ¢T¬9ŸjÄÑ;hœDÚµ¢S£¬8X iÇ;HœFеrS{¬7Ø¡hÈÑ;hœH2µZS“¬7X¢hÊ‘;hœIµ’Sì6Ø£gÌQ;(œKr¶T[¬6X¤fÎQ;(œM*¶2TÛ¬5Ø¥eÐ;ÈœNµÊTÓ¬5X¦eÒ;"HœPRµŠTs¬4اdÓ‘;$èœQÚµŠTS¬4X¨cÕQ;'hœSRµŠTS¬3Ø©c×Q;*HœTʵbTc¬3XªbÙ;-œVjµrT³¬2˜«aÛ;0œWòµŠTã¬2¬aÜ‘;3(œYRµrTã¬1˜­`Þ‘;5ÈœZµbTó¬0Ø®_à‘;7èœ\Jµ2Tã¬0X¯_â‘;9èœ]Ê´êT{¬/˜°^ä‘;<(œ_J´ÒT#¬.ر]æQ;>ˆœ`º´âT ¬.X²\è;A(œb´òSÓ¬-˜³\éÑ;CˆœcZµS£¬,Ø´[ë‘;Eˆœd²´úS[¬,µZí‘;GÈœeò´ÚS#¬+X¶ZïQ;Jœg:´ÊS+¬*˜·Yñ;L(œhŠ´êSk¨)ظXó;Nhœiµ"S˨)¹Xõ;P¨œjúµrSû¨(˜ºWöÑ;Rèœl"µšSã¤'Ø»Vø‘;T¨œmBµšS›¤'X¼Vú‘;VˆœnZµÚS« &ؽUü‘;X¨œo‚¶T &X¾TþQ;Zèœpª¶ T³œ%Ø¿TQ;](œqºµúUK˜%ÀS;_HœrºµšUK˜$˜ÁRQ;aˆœsʵ"Tû”$ÂQQ;cˆœtʵTÓ#˜ÃQ;eˆœu²µ"TËŒ#ÄP Ñ;gÈœvšµTSŒ"˜ÅO ‘;jœw‚´ÂS{ˆ"ÆO Q;lœxz´úS„!˜ÇN;mèœyR´êRÀ!ÈM;p(œz µSC| ØÉMÑ;rˆœzʵrTx ˜ÊL‘;t¨œ{¢µzT“x XËLQ;v¨œ|Rµ*Tct ÌKQ;x¨œ} µ2T#tØÍJQ;zˆœ}º´òS£pØÎIÑ;}œ~R´²SSpØÏI‘;Èœ~ò´’SSpØÐH‘;蜲´rS«p ÑH!Q;ƒÈœ€Z´ZT p XÒG#;…蜀ú´:Sët ˜ÓF$Ñ;ˆhœÊ´S+t ˜ÔF&‘;Ѝœ‚š´zR³x ØÕE(Q;Œ¨œƒr´òRÃx!ÖD*Q;ŽÈœ„jµS|!X×D,;蜅Zµ:S›€!˜ØC.;“(œ†*µrT€!ØÙB0;•hœ†úµZT[„"ÚB1Ñ;—蜇ú´òT;„"ÛA3‘;šHœˆê´ÒSóˆ"XÜ@5;œHœ‰Úµ Sãˆ"XÝ@6Ñ;žHœŠÚµRTSŒ"XÞ?8Ñ; (œ‹ÚµZTËŒ"Xß?:‘;¢hœŒ²µ"T›Œ"Xà>åÑ<Áèœßj³šTT%™?ç‘<ÄÈœà"³šT3T%Y@é‘<LjœàʳšTST$ÙAëQ<Êhœá‚³‚T‹T$™Bí<ÍHœâB³BTƒT$YCîÑ<Мâú²ÚT#T#ÙDðÑ<Ò¨œã²bS³T#™Eó<ÕHœäбòS+T#YFõQ<×èœåB±ÊR³T"ÙGÿ÷<Ú¨œåò±²RkX"™HÿøÑ<Ýhœæ’±‚R3X"Iþú‘<ߨœçB±šRX!ÙJþü‘<áÈœçò±¢R;X!™Kýþ‘<äHœèª±ZRKX!Lü‘‘<æèœéZ± R;X ÙMü<éhœê °òR3X YNû‘<ëèœêº°òRCX Oû<îHœëb°ÂRCXÙPú‘<ðhœëò°šR\YQù‘ <ò¨œìš°jQû\Rù <õœíJ°"QÛ\ÙSø‘<÷hœíú¯úQ³\YTøÑ<ù¨œîš¯âQÃ\U÷‘Ñ<ûèœï2¯ÂQÛ\ÙVö‘‘<ýèœïÒ¯ªQ³\™Wö‘<ÿèœðj¯jQ£\Xõ‘Q=(œñ ¯BQk\ÙYõ‘=(œñ²¯jQc\™Zô‘=(œòJ¯ZQ[\YZ ôQ=(œòJ¯:QK\Y[ó‘Q=(œòÚ¯Q;\\ó= Hœór®úQ#XÙ]ò‘!Q= Hœô¯Q3X™^ò#=hœôš®ºQ TY_ñ‘%Q=HœõB®šPóP`ð‘'=(œõâ®úQLÙað(Ñ=œöb®úQ HÙbï‘*‘=œöꮂP³D™cï,‘=œ÷Z®JPc<™dî‘.‘=œ÷º®ªPc8™eî0‘=Hœø®ÒP30Ùfí2Q=ˆœøz®²P ,gì‘4Q= èœøÚ®šP#(hì6Q=#œù"®êPK ™ië‘8=%Hœùr¯2PƒÙjë9Ñ='¨œùº¯P£kê‘;‘=*œùê¯PóYlê=‘=,¨œú2¯Q#Ùmé?‘=/ˆœúŠ®ÒQKnè‘A‘=2(œúÊ®ªQKYoèC=4¨œû®‚QÙpç‘DÑ=7(œûZ®ZPãqçF‘=9Èœûš®P“Yræ‘H‘=H «jMÛ@ Y²Ä‘¼‘>¨ «¢MÓ@™³Ä¾‘>ˆ!j«ÂM»@Y´ÑÀ‘>È!ò¬Mã<ٵÑ> "j¬BN#<Y¶‘ÄQ> h"ʬzNS8Ù·ÂÆ>#*¬ªN£8™¸Á‘ÇÑ>¨#š¬ÊNÛ4Y¹À‘ÉÑ>è$"¬êO4ºÀ‘ËQ>è$’¬ÚO4Ù»ÀÍ>H$ò¬ÊO0™¼¿‘ÎÑ>è%Z­2OS0Y½¿ÐÑ>ˆ%­²O£,¾¾Ò‘>è&*­’O»,Ù¿½‘Ô‘>!(&’­ROÛ,™À½‘ÖQ>#h&â¬úOÓ(YÁ½Ø>%È'2¬ºO{(Y¼‘Ù‘>(('’¬bO$üۑ>*H'ú¬*N›$ÙÄ»‘ÝQ>,h(b¬N; ÙÅ»ß>.ˆ(º¬ N ™Æº‘á>0¨) ¬2NK™ÇºâÑ>2È)Z¬rN³™È¹‘ä‘>5H)š¬‚O ™É¸‘æ‘>7¨)â¬RO™Ê¸è‘>9ˆ*B«úN˙˷‘êQ>;È*z«ºN{ÙÌ·ì>>*’«’N+Ͷ‘íÑ>@H*Ò«¢N+YζïÑ>BÈ+¬Ns™Ïµ‘ñ‘>Eˆ+b¬NcÙеó‘>GÈ+º¬NsYÑ´‘õQ>J, «¢NC™Ò´÷>Lˆ,B«zNÙÓ´øÑ>Nè,š«²N3YÔ³‘ú‘>Q¨,ò«šNK™Õ³üQ>Th-B«jNƒÙÖ²‘þ>VÈ-ª«2N»×²>YH.ªÊNsYر>[È.bª’MûÙÙ°’>^H.ªÊMãÚ°>`è/:«*N+YÛ¯’Ñ>c¨/š«RN{™Ü¯’ Q>fh0«RN«Ùݯ >i(0‚«:Nà ޮ’ >kÈ0âªòN³ ™ß­’>n¨1Bª’Nk Ùà­Q>qˆ1ºªBMû!ᬒQ>t(2Jª*M“!Yâ¬>vè2ªªBMƒ!™ã«’Ñ>z2ÚªZM‹!Ùä«‘>}3"ªjMƒ"媒Q>è3‚ªRM{ "YæªQ>‚È3êª*Mc"™ç©’Q>…è4J©êM;"Ùè© Q>‰H4Š©jLÛ#騒"Q>Œh4ª¨úLrü#Yê¨$>ˆ4â¨âL*ø#Yë§’&>’ˆ5B© Lô#™ì§(>•ˆ5š©2Lô#Ùí¦’*>˜¨5Ê©JL2ð$î¦,>›è5ò©BLbì$Y勒.>ŸH5Ú© Ljè$™ð¥/Ñ>¢ˆ5ʨúLjè$Ùñ¤’1‘>¥è5Ú©2Ljè$Ùò¤3Q>©h6¨òLRä%ó£’5>­6"¨¢Kêä%ô£7>°h62¨zKbä%õ¢’8Ñ>³è62¨rJòä%ö¢:‘>·H6:¨jJºä$Ù÷¡’<‘>º¨6R¨šK è$Ùø¡>Q>½È6š©K‚è$™ù ’@Q>À¨6Ú©zLì$Yú BQ>ÃÈ6ê©ZLzì$YûŸ’D>Æè7¨òLªð$üŸ’E‘>Ê(7J¨ªLâô#ÙýŸGQ>͈7‚¨rMø#Ùþž’IQ>Ðè7²¨bMø#™ÿžKQ>Ô7ò¨BLúü#š’MQ>ÖÈ8:¨Lã#ZO>ÙÈ8z§²L«#Zœ’Q>Ý8§RLk#œS>àh9§L##›UQ>ã¨9j¦ÊKÓ #š’WQ>æˆ9ʦŠKk"ÚšY>éH:B¦’Kc"š™’[>ì(:š¦ÚK‹"š™]>ï(:ò¦²Kc"Z ˜’_>ñè;r¦rKc " ˜’`Ñ>õ(;ê¦:K{ !š ˜b‘>øHû<Ú¦ZKS(! —fQ>ýˆ=R¦JÛ, Ú–’hQ?h=Ê¥ÒJ«0 Z–j?>Z¦ J{0 •’l?H>ò¦ZJ34Ú•mÑ?¨?b¦RJ8Ú”’o‘? ¨?º¦ZJ+<š”q‘? (@:¦zJ+@š“’s‘?(@Ò¦¢JKDš“u‘?hAR§JkDš’’wQ?èAÚ§bJcHÚ’yQ?(Bb§’JkL ‘’{Q?ˆC¨RJëP Z‘}Q?HC²©2KÃT š’Q?Dr©LCT Ú€Ñ? hE:¨ÊL“X!’‚Ñ?"ˆF¨jL{X!Z„‘?%(F²¨*L3\!ZŽ’†Q?'ÈGr¨JL+\!šŽˆQ?*HHB¨ZL3\!š ŽŠ?,ÈI¨bLs`!Z!ŒQ?/(I²¨JL“`!Z"Ž?1ˆJb¨:LS`!#Œ’Q?4(K2¨:L\ Ú$Œ’?6èKê¨*L\ š%‹’“Ñ?9(L²¨2L#\ Z&‹•‘?;(Mr¨"KûXÚ'Š’—‘?=HN¨ KÃXš(Š™Q??ˆNª¨:KÓT)‰’›?AèOJ¨BKËPÚ*‰œÑ?DHOâ¨JKëLZ+ˆ’žÑ?FÈPr¨ŠL#HÚ,ˆ Ñ?HèPò¨‚L+Dš-‡’¢Ñ?K(Q’¨bL @.‡¤Ñ?MÈR¨:KË8š/†’¦Ñ?P(Rš¨:K£4Z0†¨‘?RˆS¨rK{,1†ªQ?T¨SR¨bKK(š2…’¬Q?VèSª¨rKc Z3…®Q?YSê¨zKs4„’°?[hT*¨JKK5„±Ñ?]ÈTz¨bK[Ú6ƒ’³Ñ?`Tª¨²K«š7ƒµÑ?bTʨÊKû š8‚’·Ñ?dHTò©*Lc Z9‚¹Ñ?gU"©ZL›Z:’»Q?ihUJ©jM#Z;½Q?kÈUz©jMc <€’¿Q?nU©zM =€’Á?p(V ©zLƒÚ>€ÂÑ?rHVR©zKÛÚ?’ÄÑ?t¨Vš©šKCš@ÆÑ?vèV⩺K šA~’È‘?y(W2ªKKZB~ÊQ?{(WŠªšK»ZC}’ÌQ?}HWꪂL[ D}Î?ˆX*ªbLë$E|’Ð?ˆXrªM+$F|’ÑÑ?ƒˆX©ÊM (G|ÓÑ?…ˆYB©ªLû(H{’Õ‘?‡ˆYª©šLó,I{ב?‰ˆZ©zLë,ZJz’ÙQ?‹¨Zz©RL£,ZKzÛ?ÈZÚ©BLK0šLy’ÜÑ?è["©L0ÚMyÞÑ?‘è[‚¨êL+0Nyà‘?”[ú¨ÊL[4Ox’â‘?•è\j©L“4ZPxäQ?—è\Ú©*LÓ4šQw’æQ?šˆ]*¨âLó8ÚRwèQ?]z¨šM8ÚSv’ê?žè]ò¨RLû<ÚTvì?¡(^r§êL‹<ÚUu’íÑ?£h^â§’L@ÚVu’ï‘?¥ˆ_:§ZK‹@ÚWuñQ?§È_²§:KƒDÚXt’ó?ª`R§rK«HšYtõ?¬`â§ŠKÃLZZs’÷Q?®(aj§ŠLLÚ[sùQ?°Haò§*K»PZ\r’ûQ?²Hbz¦²KTÚ]rýQ?´Hc¦ªJ›TZ^q’ÿ?¶cª§2JƒTš_q?·Èd*§2JKX`q‘?¹(dЦêIÛXZap“Q?º¨e¦êI»XšbpQ?¼ˆez§I³Xšco“?¾Heê§bIëTÚdo ?¿ˆfZ§zJ;Ten“ Q?Àèfº§JJ[PZfn?Âg§RJCLšgm“Ñ?ÃHgB§JJ3Hhm“Ñ?ÄÈgz§:JsDZimÑ?Åèg§RJ«<Újl“Ñ?ƨh§²JË8ZklÑ?ÇÈhZ§âJã0Úlk“‘?É(hЧÂK (šmkQ?ÊHhº§ŠK+ Znj“Q?Ëhhò§¢KSoj‘?ÌÈi§òK«pi“!‘?Íèi"§ÂK£ Úqi“#Q?ÎÈi:§rK{ Úri%Q?Ð(iZ§‚KŠø Úsh“'?Ѩir§zKªð Úth)?Òˆi‚§JKÂèug“+Q?ÓˆiЧKšàvg-Q?Õiš¦ÊK‚ØZwf“/?Ö¨iЦ‚KZКxf0Ñ?×Èiz¦BK*ÈÚyf2Ñ?ÙHiz¦ KÀze“4‘?Úˆi’¦:Jâ¼Z{e6Ñ?Û¨i’¦ŠJò´Ú|d“8Ñ?Ýir¦ŠJâ°Z}d:Ñ?ÞˆiJ¦BJ‚¨Ú~c“<Ñ?ßèi"¥êJj¤Zc>Ñ?áHi¥šJ: €b“@Ñ?âÈhÒ¥RIz šbBÑ?äHh¢¥ZH‚œZ‚bDÑ?åèhr¥úG꜃a“G?çÈh2§*H*œš„aIQ?êgú¨šIZœZ…`“K?ìgÊ©:J‚ †`M?íÈg²©2Kz š‡_“O?ïègŠ©"LB¤ˆ_QQ?ò(gR© Lò¤Ú‰^“SQ?ôhg"¨êMB¨ZŠ^UQ?ö¨fú¨ÒM¨ÚŠ ^UÑ?ö¨fú¨ÂM¨Ú‹]“WQ?ùfʨšM¬ZŒ]YQ?ûfš¨bMR¬][Q?ýHfr¨M °šŽ\“]?ÿ¨fJ§ÒLj´\_Q@(f:§ZK‚´š[“a‘@¨f¦âJ‚¸‘[cQ@(f¦²IÚ¼š’Z“eQ@ Èeò¦âI⼓ZgQ@ (eâ§BJ:Àš”Y“i‘@ÈeÒ§jJªÀ•Yk‘@ÈeʧBJúÄš–Ym‘@èe²¦òJÒÄ—X“o‘@Èe’¦šJBÈZ˜Xq‘@ˆe’¦¢IúÌš™W“sQ@He¢¦òJ"Ì šWuQ@ Heš§*J‚Ì Z›V“wQ@#he’§bJúÐ ZœV“y@&ˆeЧzK:Ð ZV{@)¨eЧ‚KÂÔ ZžU“}Q@,ˆe¢§BKêÔ ZŸUQ@/ˆe²§KbÔ  T“@2ˆeº¦ªJ¢ÔÚ¡TƒQ@5he¦zJ Øš¢T…@8HeʧIjØZ£S“‡@;(eò§šIØÚ¤SˆÑ@=èf§šHêØZ¥R“ŠÑ@@ˆf*§ºHúÜÚ¦RQ@CHf2¨jIZÜZ§Q“Q@Eèf*¨âI²ÜÚ¨Q‘@HHf*¨ÒIúàZ©Q’Ñ@J¨f*©bJŠàÚªP“”Ñ@MHfBªZKJäZ«P–‘@OhfbªŠKŠä¬O“˜‘@Q¨frª*KšèÚ­Oš‘@Sèfrª K²ìš®Oœ‘@VHf‚ªJL ðZ¯N“ž‘@Xhf¢ªjLZðZ°N ‘@ZÈfêª*Lšô±M“¢‘@]Hg"©âMRø²M¤Q@_¨gR©ªN ü³M¦Q@aÈgr©rMë´L“¨Q@dgš©*M+ÚµLªQ@fhgÚ¨ÚLKÚ¶K“¬@h¨h"¨¢Kk Ú·K®@jÈhr¨âJÛ š¸K°@mhÊ©JJÓZ¹J“²@o(i©¢KºJ´Q@q¨i:©¢K3Ú»I“¶Q@tiŠ©bKš¼I¸Q@viê©"Jã½H“º@xj:©RJÛÚ¾H“»Ñ@yÈj’©ÒK Z¿H½‘@{ÈjâªKsÀG“¿Q@}Èk©ÚK{šÁGÁ‘@¨kZ©bK3ZÂF“Ñ@¨kš©*JëÃF“Å‘@ƒhkê©jJëšÄFÇQ@…l*©ÊJûZÅE“É@†ÈlR©êJÓ ÆEË@ˆ¨l‚©ªJ“ ÚÇEÌÑ@Šhlº©’J›ÚÈD“Α@Œ(lêªJãšÉDÐQ@Ž(m ªrK+šÊC“ÒQ@Èmª:KRüšËC“Ô@‘Hm*ª:KjøšÌCÖQ@“hmRªJKzôZÍB“ØQ@•ˆmzªJKªðZÎBÚ‘@—hmŠª‚KúìZÏA“ÜQ@™(mšªÊKòèZÐA“Þ@šÈm²ªŠKšäZÑAßÑ@œˆmÒªzKŠàZÒ@“â@žhmòªjK¢àZÓ@ãÑ@ hmêªZKšÜZÔ@åQ@¢(mêªzKrØÕ?“çQ@£èmâªjKJØÖ?éQ@¥hmâªBJòÔ×>“ë@§(múªÚKÔØ>“ìÑ@¨èmò«ªK’ÔÙ>îÑ@ªÈmʬKâÔÚ=“ð‘@¬Èmº«òKâÔÛ=ò‘@®èm«¢L ÔÜ=ô‘@°¨m⫪L*ÔZÝ<“öQ@²Hn«ÂLZÔZÞ<øQ@´Hn«âLòÔZß<ú@¶n«òMRÔšà;“ûÑ@·¨mò«ÊM2Ôšá;ý‘@¹Hn«²M ÔÚâ:“ÿ‘@»Hn«²LêÔÚã:”Q@½(n«¢LÊÔä:@¾Èn*«JLjÔå9”Ñ@ÀˆnB«‚LZÔæ9”‘@ˆnR¬"LºÔZç9‘@ÄÈn:¬bMØZè8” ‘@Çn2¬"MØZé8 Q@Èèn:«ÚMØZê8@ÊÈnB«‚LêÜë7”@ÌÈn2«"LŠÜì7Ñ@Îèn2«*LjàÚí6”Ñ@ÐÈn:«zL:äšî6”‘@ÒÈn:«JKªèZï6‘@ÔˆnR« Kìð5”Q@ÖHnr«*JÚôÚñ5”@×ÈnŠ«rJâøZò5@ÙHnº«zKüó4”Ñ@Û(nê«‚K£Úô4!@Üèo «’LKšõ4"Ñ@ÞˆoB«’Lƒ ö3”$‘@ßèoš¬ L‹ Ú÷3&‘@á(oú¬jL³šø3(Q@â¨p¬zM Zù2”*@ä(p2¬ZLÛ Úú2,@å¨pr¬L‹ šû1”.@ç(pª¬LcZü1”/Ñ@èhpÚ¬ZLCý11‘@éèq¬¢LBøÚþ0”3‘@ë¨q¬òLbôÚÿ05‘@ípê­2L¢ìÛ07‘@î(pú­’LÊäÛ/”9Q@ïhq*® M"ÜÛ/;Q@ðˆqB®2MbÔ/=Q@ñ¨q®BMrÐ[.”?@ópê®ZMbÌÛ.A@ôHpâ®"M"È.BÑ@õèpÒ­ÊLâÈ›-”DÑ@÷hpÒ­âL²È-FÑ@ù(pÊ®‚LºÈ› ,”HQ@û(p²®âMÈ ,”IÑ@üèpНM‚Ì› ,K‘@þèpb®¢MÐ +”M‘Aèp‚®ªLÚÔ[ +”OÑAÈp¢¯ZM:ØÛ+QÑA¨pš°MÒÜ*”S‘AÈpª°JNà[*”U‘AÈpʰNšà[*W‘A hpâ¯êOZä[)”YQA (q ¯ºO’è)[QAhq:¯ŠO’èÛ)]QAèqZ¯ROZè›(”_QA(qZ¯:NŠè(aQA(qj¯ÊMúè['”cQA¨qª°’MÚè›'”eAÈqâ°rMºèÛ'gAqê°2MÊäÛ&”iAèqò°2Nà&”kAˆr°šNRÜ&mAˆr*°êNŠÔ[%”oAˆr± NŠÌ [%”p‘Aˆr°òNZÄ ›%rQA Èqò°âNR¼  $”tA!èqÒ±JN¢´ [!$”vA"Èq²±JN²¨ "$xA#hq²°úN‚  ›##”zQA$(q¢±JNª˜ ›$#|A$¨qz±’NÚ [%#}ÑA%hq:±bNªˆ [&"”ÑA&(q±*Nj„ ['"‘A&Èq ±ÒNÊ€ ›("ƒ‘A'¨pú²zO:€ Û)!”…ÑA(ˆpÚ²jOŠ| *!‡‘A)¨p¢²"O¢| ›+!‰‘A*ÈpZ±êOš| Û, ”‹‘A+¨p*±²Ošx [- ‘A,¨p*±²Oºx Û.”‘A-¨p²Oúx /”‘‘A/oÒ±êPx ›0“‘A0ho‚±šP x1”•QA1¨oJ±ROâx›2”—QA2Èo±*OÂx3™‘A3Ènê±BO‚t›4”›‘A5HnÒ±*ORtÛ5”QA6Èn’±O²t6ŸQA8hn2°òOòt[7”¡QA:(mò°ÂOªt[8£QA;¨m°šOrt[9¥A=m‚°ÊOBt[:”¦ÑA>ˆm"°òNêt;”¨‘A?ÈlÒ°úNŠt<ª‘A@èlª±N¢xÛ=”¬‘AB(lj±*Nâx›>”®‘ACHlJ±NÂ|›?°QADhl:±NÂ|›@”²‘AEˆl±*Nª€›A´QAFˆkÒ±*N‚€ÛB¶‘AGÈk’± N2„C”¸‘AIhkr±RN"„›Dº‘AJèkB±¢NªˆÛE¼QALhk±ºNòˆ[F”½ÑAMèjò±ÊO2ŒÛGÀAOhjÒ±ªORŒ[HÂAPèjz±ŠOšŒÛI”ÃÑAR¨j2±rOÂŒ[J”Å‘AT¨j±jOâÛKÇ‘AVHiò±²P"L”ÉQAWèi²±’Oú›M”ËQAY¨i‚±ROÒÛNÍQA[¨iR±OªO”Ï‘A]Èi°ÂOB[PÑQA_èhº°ŠO›QÒÑAa¨hz°ŠNú›R”Ô‘AchhZ°ºNÚ”ÛS”ÖQAe(h*°ÒNÊ”TØ‘Aggê°ŠNÊ”U”Ú‘Ai(gº°2NÒ”[V”Ü‘Ak(gz°Nʘ[WÞAlèg:¯âN²˜›X”àAn¨g"¯ÂN²œ›Y”áÑApHg¯¢N²œ›ZãÑArHfâ¯jN¢œ›[åÑAtˆfš¯*N² ›\”ç‘AvÈfb®êN¢ ›]éQAxèf:®ÊNj¤›^êÑAzÈf ®¢N"¨[_”íA|¨eò®bM¢¨`ïA~¨eò®bMB¬ÛaðÑAeÒ®rMR¬›b”ò‘Aƒeš®‚MB°[c”ôQA„Èe‚®rLâ´dõÑA†ˆeb®‚L¸›e÷‘AˆeB®²Lʼ[f ”ùQA‰Èe"®ÊL’Àg ûA‹ˆe"®òLŠÄÛh ýQAHe¯:LâÈ›i ”ÿA(e ¯jM2Ì[j ÑAèe¯zM:Ð[k A’ˆe*¯‚M‚Ô[l •ÑA”e2¯‚MúÔm •QA•ˆe2¯rNØn A—(eB¯ZNÜo • A™(eR¯jMòà[p • ÑA›(eR¯zN:ä[q  ‘AœÈeZ¯JN2è[r ‘Ažhe‚¯Nì[s •AŸèeš®òN"ì[t ÑA¡¨e¢®ÊNRðu ÑA£¨e®ŠN2ôv•QA¥ˆeâ®bMúøÛw•A§ˆf®ZMºø[xÑA©Hf®JM‚üy‘A«(fR®:M#›z•‘A¬Èf’®’M{A®Hf²®òM[|!A¯Èf®âLãÛ}•"ÑA±(fú®¢L« ~•$QA²g2®ÊL«[&A²ègR¯"Ló ›€•(QA³ègz¯zM Û•*Aµg²¯jM3 ‚+ÑAµègâ¯ZMC ƒ-‘A¶Èh¯rMK [„•/ÑA·Èh*¯rMK Û…1ÑA¸¨hJ¯ÚM› †3QA¹hhZ°"N [‡•5A¹èhR°*N+Ûˆ•7Aºhhj¯ÂN3‰8ÑAºèh‚¯’N"ô›Š•:ÑA»ˆhz¯šMÒì‹•<‘A¼(hr¯‚MbàÛŒ>‘A¼¨h‚¯ºMZÔ[@QA½h‚°MŠÄŽ•BQA½(hb¯úM’´ÛDQA½hhr°BMÒ¤ÛFQA½Èh‚°‚NJ”Û‘•HA¾(hj°BN2„Û’•I‘A¾hhR°*N tÛ“K‘A¾ÈhB°Mâh”ÿ•MÑA¿h2° M²`[•ÿ•OÑA¿ˆh°ZM‚X›–ÿQQA¿ègò°ZMŠPÛ—ÿSAÀHgê°RMâL[˜þ•UAÀ¨gʰRNL›™þWAÁ(g’°JNbLšþYAÁ¨gj°2NŠL››ý•[AÂhgB°NjPÛœý]QAÂèg¯ÊNJT[ý_‘AÃhfº¯¢MÒ\Ûžü•aQAÄf‚¯ŠMš` [Ÿü•bÑAÄèfb¯ªM¢h › üeAÅèf*¯ªMRp Û¡û•gAÆèeꯚM²x [¢û•hÑAÇÈeÒ¯ŠMÚ€ ›£ûj‘AÈÈeº¯jMÂŒ Û¤ûlQAÉèe’¯RMâ” ¥ú•nQAÊÈe‚¯ZM’œ ¦ú•pQAËÈeН’Mr¤ [§ úrAÌèej¯ºMÒ° [§úrAÌèej¯ÂMÚ° [¨ù•tAͨeB¯ÊMÒ¸ [©ù•uÑAΈe:¯ÂMºÀ [ªùw‘Aψe2¯ªM²È «ùyÑAШe2¯ªMzÔ ¬ø•|AÒe:¯²MrÜ Û­ø~QAÓ(eR¯²M²ä ›®ø€QAÓèeZ¯¢M‚ì [¯÷•ÑAÔÈeZ¯ŠM‚ô Û°÷„AÕ¨er¯‚M²ü ›±÷†AÖÈe¯ÂM³ ²ö•‡ÑAØeÚ¯ÒMÓ Û³ö•‰QAØèeÚ¯ÒN[´ö‹AÙeꯊM»ÛµöAÙHf¯‚M{ [¶õ•AÙèf2¯ÊMk$Û·õ‘AÚˆf:°M‹([¸õ’ÑAÛfR°"MÃ,Û¹ô•”ÑAÛˆf‚°rMã([ºô•—AÛèfš°ÂN3$Û»ô˜ÑAÜHfº°úNk[¼ôš‘AܨfÚ±:N‹ Û½ó•AÜÈfê°úNrð[¾óŸAÝfÚ°ªNjÌ¿ó ‘AÝHfÚ°ÊNb˜ÛÀò•¢ÑA݈fâ±*N‚`ÛÁò¥AÝÈf±*N’(Âò¦ÑAÞ(f’±N¡ü[Ãñ•¨ÑAÞHf‚±BNÉØÛÄñ•ªÑAÞ(fr±BNÙÀ[Åñ¬ÑAÞHfJ± NÙ°Æñ®‘AÞhf±NѤÛÇð•°ÑAÞˆeâ±BNÙœ[Èð³AÞ¨e¢±*N¹”Éð´ÑAÞÈeB±N¹›Êï•¶ÑAÞ¨dò±2NÉŒËï¸ÑAÞ¨d±ŠN¹Œ›Ìï»AÞÈdj±JN©ˆ [ÍAßcú±*N™ˆ ÛÎ‘AßHcª±šNÁ„ ÏîÀ‘AߨcZ±ÚNé„ ›Ðî‘Aߨb걚NÉ„ Ñí•Ä‘A߈br±ÒNñˆ ›ÒíÆ‘Aߨb±ÚOˆ ÓíÈ‘Aàaª±ŠOˆ [Ôì•Ê‘Aà(a*±JO1Œ ÛÕì•ÌQAà(`š±O9 [ÖìÎQAàh`°ºO” Û×ìБAà¨_’°’NÑ”Øë•Ò‘Aà¨_°êN™˜›ÙëÔQAá^š±NQ ÚëÖQAáˆ^"°êN!¤[Ûê•ØQAáè]’°ÂNa¨ÛÜê•ÚAâ(\ò°šN¡¬ÝêÜAâh\b°šNù°[ÞêÞAâè[Ú±O!´›ßé•ßÑAã¨["°úNù¸›àéâAähZZ°ÂO ¼ÛáéäQAå(YʰrNÙÀÛâè•æAå¨Yb°BN‰ÀÛãè•çÑAæ(XÚ° N‘ÄäèéÑAæÈXJ¯úN9Äåèë‘AçÈW¯êMÙÈæç•íAèhW:¯âM¡È[çç•îÑAèÈV²¯âMÌ[èçðÑAé(V*¯âLÁÌ›éçòÑAéÈUš°*L™ÐÛêæ•ô‘AêˆTò°ŠL©Ðëæ•öQAëHT*°¢LÑÔ[ìæøQAëèS’°ºM™Ô›íå•úQAì¨S*°ÒN)ØÛîå•üQAíˆR’°âNqØ[ïåþQAîhQê°úNÁÜ›ðåQAïHQJ±*NùÜÛñä–AðˆPª±ZNÉàòä–AñÈOê±rNÑà[óäÑAò¨O2±šNáä›ôä‘AóhNš±ŠN©ä›õã– ‘Aô(MÚ±RNiè›öã– ‘Aõ(M ±*N1ì›÷ã QAöHLZ± N!ð›øãA÷hKÚ±N1ð[ùâ–AøˆKR± Nôúâ–ÑAùˆJš±OøÛûâQAú¨Iú±Oü›üâQAûÈI‚°úNÒýá–‘AýHò°òNºÛþáQAþ(HZ± Nz[ÿáAÿ(GÒ±N"á‘AÿÈGb°úMÒ Üà–QBÈFâ°ÒN"œà!ÑBFr°ºN"œà$B(F:°ÚN œß–%‘B(Eú°úMúœß–'BèE‚±zMÂÜß(ÑBèDú±ÂMšß*ÑB(D‚²*Mr\Þ–,ÑBˆD²šMœ Þ–.‘B ÈCz²òNÚÜ Þ0‘B Bú²úOj\ Þ2‘B hBвâOj\ Ý–4QB ˆAú³O œ Ý–5ÑBÈAJ³BN œÝ8BH@¢³:NÚ œÝ9ÑBÈ@³jNú \Ü–;ÑB(?’³²O:$Ü–=ÑB(?³úOB$œÜ?‘B(>´OR(\ÜAQBˆ>j´jOb(ÜÛ–CBÈ=ê´úOZ,Û–EQB(=bµ*Oª,œÛGQBH= µ2P*,ÜÛIQBˆ<ÒµBPº,\Ú–KQBˆÐ––B.è,ú¸R©¨œ?Ж˜QB/H,Z·êRi¤@КB/¨+Ê·ÊR)¤œAЛ‘B0+*¸2R9¤ÜBÐQB0(*r¸rR9¤\CÏ–ŸÑB0h)Ò¸"RY¤ÜDÏ¡ÑB0è)B¸2RY¤\EÏ£‘B1h(‚¸‚R1¨ÜFÏ¥QB1¨'º¸jR ¬\GΖ§ÑB2'¸RQɰœHΩÑB2¨&R¸ŠQÁ´IάB3H%‚¸âQÙ¸œJÍ–®B4$²¹:Qé¼KÍ–¯ÑB4¨$¹jR9À\LͲQB5ˆ#B¹rRéÈœMÍ´‘B6ˆ"j¹ŠS1ÌNÌ–¶‘B7ˆ!йŠS9Ð\OÌ–¸QB8È Ú¹ZSYÔ\P̺QB9È "¹"SqØœQ̼B:èR¸úS1ÜœRË–½ÑB;Èš¸ÒRùàœSË–ÀB<È⸪RáàœTËÂB>(¸ÂR¹ä\UËÄB?ˆ*¸ÚRùè\VÊ–ÆQB@Èr¸ºS1èÜWÊ–È‘BAÈʸ²RñìœXÊÊ‘BC¸âRÁìYÊÌ‘BD(Z¸ÊR©ìÜZÉ–ÍÑBEh¸²Rð\[É–Ï‘BFh2¸ÚR¡ðœ\ÉÑÑBGH‚¸êRñð]ÉÓÑBHÚ¸šRùðœ^È–ÖBHèZ¸ZRÑôÜ_È–ØBJò¸RRñô\`ÈÙ‘BK(b¸rS9ôœaÈÛ‘BL(²¸ÊS!ôbÈÝQBLè*¸ÚRùô\cÇ–ßBMˆ²¸¢SøœdÇ–áQBNHJ¸RRñøeÇãQBO(â¸R©ø\fÇåQBP(‚·ÒRqü œgÆ–çBPè·²Raü hÆ–éBQhª·¢R2 \iÆëBQèb·ŠR œjÆìÑBRh*·‚R kÅ–î‘BSâ·²RB \lÅ–ð‘BS¨z·²RB ÜmÅò‘BTHB·ZR  \nÅôQBTÈ"·*QòœoÅöQBUHê·"QòpÄ–ø‘BU袷R œqÄ–úQBVˆz·QÚ rÄüBVèr·2QZ œsÄþBWHZ·bQ"tÖÿÑBW¨:·ºQBÜuבBXH2·úQZœvÃQBXÈ"¸’Q‚\wÑBXèê¸êQÉôx—QBXè¸ÂQÁèy—ÑBY²¸ÊQÁØz— BY(¢¹2RAÌ{ ÑBY(Z¹JR‰À\|‘BYH"¹BRy¸œ}Á—‘BYh¹BRq°~Á—QBY¨ â¹jRÙ¬\ÁBYè ¢¹’S)¨Ü€ÁBZ( R¹¢S)¨\À—BZH "¹ÂSQ¨Ü‚À—QBZH Ú¹ÊSI¨\ƒÀBZH ‚¹ŠS¨Ü„À‘BZˆ :¹JRé¨ …ÀQB[ ò¹BRé¬ œ†¿—!‘B[ˆ ‚¹BSa¬ ܇¿—#‘B[È ú¹BS‰¬ \ˆ¿%‘B\ š¹:S1° \‰¿'‘B\H J¹BRù´ œŠ¾—)QB\ˆ â¹ZS!´ Ü‹¾—+QB\è b¹zS!¸ ÜŒ¾-QB](ú¹rS ¼ ܾ/B]hº¹ZS¼ ÜŽ¾0ÑB]Èb¹BSÀ ܽ—2‘B^(ú¹*R‰À ܽ—4‘B^Ȫ¹"RQÀ Ü‘½6‘B_ˆb¹BR‘À Ü’½8‘B`Hò¹ZSÀ œ“¼—:‘B`ÈйJRáÀ œ”¼—Baò¹êRɸ œ–¼@Ba(‚ºS9¸ œ—¼BBah¹òSQ´ ܘ»—CÑBa躹ÊS!° Ü™»—EÑBb(rº2SQ¬ š»G‘BbHºrS™¬ \›»IÑBbH²ºBS±¨ œœº—K‘Bb¨Z¹òS±¨ ܺ—M‘Bc(â¹ÚS¨ žº—OBchRºSQ¨ \ŸºPÑBc¨Òº"Si¨ Ü ºRÑBcèйòS©¨ ¡¹—TÑBd(*¹ºS¹¨ œ¢¹—WBdHš¹²Sq¬£¹Y‘Bd¨œÿ⹚SQ¬\¤¹[‘BehœÿZ¹‚S‰°Ü¥¸—]QBeèœþê¹bSÁ°¦¸—_QBfœþr¹:S´œ§¸a‘BfHœýÚ¹ SA´ܨ¸cÑBfèœýJ¹SA¸\©¸eQBgˆœü¹Sy¼œª·—gBhœü¹SÙ¼«·—i‘Bhˆœûj¸âS©À\¬·k‘BiHœúÒ¸ªS)Äœ­·m‘Bj(œúJ¸‚R±ÈÜ®¶—oQBj¨œùš¸RRéȯ¶—qBkœøò¸*S!Ì\°¶—sBkÈœøb¸RÉÐܱ¶tÑBl¨œ÷Ò¸R1в¶vÑBmhœ÷*¸*RÔ\³µ—yBnHœö‚¸:RiØÜ´µ—{QBoHœõú¸"Ráܵµ}QBpœõb¸S!Üœ¶µ‘BpÈœôº·úR©àÜ·´—QBq¨œô ·âRà\¸´—ƒQBr¨œóZ¸JQÑäܹ´…QBsÈœò’¸zQÙ亴†ÑBtèœñ¸zRIä\»´ˆ‘Bvœñ¸bR蜼³—ŠÑBwHœð‚¸jR‰èܽ³—QBxhœï¸ÊR‰è¾³Byhœî⸚R迳ÑBz¨œî"¸RRéèÀ³’‘B|Hœír¸S1èÜÁ²—”‘B}ˆœìª·ºSaèܲ——B~ˆœëê·‚R±è\ò™BHœë:·jQÁäIJ›B€Hœêª·êQiäœÅ±—QBHœéú¸ZQ¹äƱ—Ÿ‘B‚Hœé"¸ZR!äœÇ±¡‘Bƒ(œèz¸2Rqàȱ£QB„œè¸RÙàœÉ±¥B„ÈœçZ·ÒSàʰ—§B…hœæª·¢R‰à\˰—¨ÑB†hœæ·rR1ÜṴ̈ªÑB‡Hœåš·JRAÜͰ­B‡èœå·JQÙܜί—¯QBˆˆœäŠ·RQyØϯ—±B‰Hœä ·ZQ)؜Я—²ÑB‰èœã’·jPÑØѯ´ÑBŠˆœã·ŠQԜү·QB‹œâ’·¢Q‘ÐÓ®—¹‘B‹¨œâ:·ÂQ±Ð ÜÔ®—¼BŒ(œáò·òQÁÌ \Õ®½ÑBŒhœá’¸RqÈ \Ö®¿QBŒÈœá"¸*RùÄ ×­—ÁQBhœàʸ*R±¼ Ø­—ÃQBèœàb¸"R!¸ Ù­—Å‘BŽ(œß긲R)´ \Ú­ÇQBŽˆœßj¸ÊR)¬ \Û­ÉBŽÈœß¸²R ¨ œÜ¬—ÊÑBœÞš¸jQѤݬ—ÍBhœÞ ¸ºQñœ\Þ¬—ÏB¨œÝr¹RA˜Ü߬ÑBœÜê¸òR˜\à¬ÓQB(œÜb¸ÂRÁ”Üá«—ÕQBhœÛʸÒRÙ\â«—×QBÈœÛ:¸ºRÁÜã«ÙB‘œÚª¸’RÑä«ÚÑB‘HœÚ ¸ŠR±œå«Ü‘B‘hœÙB¹ R¡檗ÞQB‘¨œØz¹2R‘œçª—à‘B‘Èœ×Ú¸ÚRYÜèªâÑB’œ×B¸ºRq”éªåB’hœÖЏÊR©˜œêªæÑB’Ȝո¢R¹˜œë©—èÑB“(œÕ¸rRÁœÜì©—ê‘B“¨œÔR¸:R‘ í©ì‘B”HœÓr¸RRA¤î©îÑB•œÒ²¸šRY¤益ñB•¨œÒ¸jRa¨ð¨—óQB–œÑz¸2RY¬Üñ¨—ôÑB–hœÐª¸rRQ°Üò¨ö‘B—œÏ긪R)°œó¨øQB—èœÏB¸‚RA´\ô§—ú‘B˜¨œÎЏJR¡´õ§—üÑB™(œÍâ¸R™¸Üö§—þÑB™¨œÍJ·êRY¼œ÷§‘Bš(œÌ·ÂRA¼\ø§QBšÈœÌ"·ºR)À\ù¦˜QB›hœËr·šQáÀú¦˜B›èœÊÚ·‚Q™ÄÜû¦˜ÑBœhœÊj·rQYÄÜü¦ BœÉâ·òQ!ÈÜý¦ BÈœÉ2¸âQ‰ÈÜþ¥˜Bž¨œÈйZRÌÜÿ¥˜ÑBŸHœÈ¹JRqÌ¥˜‘BŸÈœÇ‚¹R‘Ð¥QB HœÆÒ¸ÒRÐ]¥QB¡(œÆ:¸ÂR™Ô]¥‘B¢œÅº¸ªRÁÔ¤˜ÑB£œÅ¸ŠSÔ¤˜ÑB£ÈœÄR¸jSAÔ¤‘B¤ˆœÃ²¸RS1Ô¤ÑB¥HœÃ2¸"SAÔ¤!QB¦HœÂŠ·úRqÐ £˜#B§œÁÒ¸"Q™Ð] £˜$ÑB§èœÁJ¸zQ)Ì £&ÑB¨¨œÀÒ¸²Q±ÈÝ £)B©hœÀB¸òRÑÄ £*ÑB©èœ¿š¹JSÀ]¢˜,‘Bªhœ¾ú¹ŠRù¸¢˜.QB«œ¾z¹‚S´Ý¢˜0B«hœ½Ú¹ZS¬¢2B«¨œ½*¹2Rá¤]¢4B«èœ¼ª¹Rñœ¡˜6B¬hœ¼:¹S”Ý¡˜8B¬ˆœ»ª¸êRьݡ˜9ÑB¬ˆœ» ¸êRqˆÝ¡;ÑB¬Èœºr¸âR™€¡=‘B­œº¹2Rá|¡?QB­Hœ¹r¹jRÉtÝ ˜@ÑB­Hœ¸ª¹’S)pÝ ˜BÑB¬èœ·ú¹‚SApÝ EB¬èœ·z¹jSil GB­œ·¹¢S‰l] HÑB­œ¶Z¹âSql]Ÿ˜JQB¬ˆœµ¢ºSIlŸ˜LB¬hœµ*º*S9lÝ Ÿ˜NQB¬hœ´º¹ÊRáp!ŸPQB¬hœ´2¹bRYp"ŸRQB¬ˆœ³z¹ÊRYtÝ#ŸTB¬Èœ²ÂºJR‰x$ž˜VB­(œ±úºJR‰|%ž˜XQB­(œ±2ºRS)€Ý&žZB­(œ°rºzS™„'ž[‘B­hœ¯ººbS™ˆ(ž]B­Èœ¯º2SáŒÝ)˜^ÑB­èœ®rºTA*˜`ÑB®œ­ª¹ÒT”]+˜cQB®ˆœ¬ò¹ŠSi˜,eÑB¯Hœ¬J¹’SœÝ-gÑB°œ«‚¹âRÁ .œ˜i‘B°hœª¢¹ÒR ]/œ˜kQB°¨œ©â¹ºR¡¤0œ˜mQB±Hœ©*¹ÂR±¨1œoB±¨œ¨rºrRá¨Ý2œqB²œ§ª»BS1¬3œrÑB²¨œ¦Ò»JSQ°]4›˜tÑB³hœ¦»*S¡°5›˜wQB´(œ¥2» T´Ý6›yB´¨œ¤Z»SѸ7›z‘Bµhœ£¢»S¼]8›|QB¶(œ¢ê» S¡À]9š˜B¶Èœ¢ºêS±Ä:š˜QB·hœ¡BºÒSÈÝ;š˜ƒB¸Hœ ZººSaÐ<š„QB¹(œŸ’ºÂS‘Ô]=š†QBºœžÒºÒS‘Ü>šˆ‘BºèœòºªSäÝ?™˜Š‘B¼œº‚S©èÝ@™˜ŒQB½ˆœœZºzSyðA™ŽQB¿(œ›¢»SAø]B™BÀˆœšÂ»²SšC™‘‘Bœ™ò»²SÒD˜˜“‘BÃÈœ™Z»ŠT: ÝE˜˜–BÅhœ˜Â»:TjÝF˜˜˜BÆÈœ˜ »ZT ÝG˜™ÑBÈHœ—J»¢S²H˜›‘BÊ(œ–¢»‚S’ ÝI˜QBÌhœ–»jSÊ$ÝJ—˜ŸQBΈœ•¢»âSò(K—˜¡QBÐ(œ•¼BT(L—˜£BѨœ”B¼:T:(]M—¥BÓˆœ“¢»òTJ(ÝN—§QBÕˆœ“*¼T2(O–˜©B×(œ’ª»úT2$]P–˜ª‘Bبœ’ »òTj$ÝQ–˜¬QBÚHœ‘b»ÚT* R–®ÑBÜHœÒ»êSêS–°ÑBݨœR¼"SâÝS –±QBݨœR¼*SêÝT–³BÞˆœª¼ZT ]U•˜µB߈œ¼JTV•˜·Bá(œŽr»êSÊ ÝW•˜¹Bâèœâ¼BS²]X•»BäœJ½:T2Y•¼QBä蜌¢½šTºÝZ•¾QBåÈœŒ ½RTáü[”˜ÀÑB看b¼ÒTÙø]\”˜ÂÑBè(œŠº¼ŠT±ô]”˜Ä‘Bé(œŠ"¼bT‰ðÝ^”Æ‘Bê(œ‰’¼2T¡ì_”ÉQBë(œ‰¼BTÁè]`“˜ËB윈‚¼šT±äa“˜ÍBìÈœ‡Ò¼ŠTqàb“˜Ï‘Bíhœ‡:¼:TiØÝc“Ñ‘Bîhœ†º¼"TaÔÝd“Ó‘Bï(œ†B¼ºT©ÐÝe’˜ÕQB靖…’¼ªTÁÌÝf’˜×QBðHœ„â¼jUÌÝg’˜ÙBð蜄:¼*TùÈÝh’ÛQBñˆœƒš»úTqÄÝi’ÝBò(œ‚â¼bTAÀj’ßBòÈœ‚2¼¢T!Àk‘˜áB󨜒¼‚T1¼l‘˜ãBôˆœ€ê¼jTá¼m‘˜å‘Bõœ€2¼’U¸n‘ç‘Bõhœм’T™¸o‘é‘Böœ~ò¼‚T™´p‘ëBöˆœ~B¼ºT‘´q˜ìÑBöÈœ}н"Ty´r˜ïB÷Hœ|Ú½TA´sñÑBøœ|B½T)°tô‘Bø¨œ{ª½¢Tq°]uö‘Bùœzê½âT¡°]v˜øBùhœz*½ºTÙ¬]w˜ùÑBúœyš½ŠU¬x˜ûÑBúèœy½ZU©¨ÝyýÑBûhœxJ½"VQ¨ÝzÿÑBûÈœwмúV¤{ÑBüHœvê¼ÊUÑ |Ž™ÑBüÈœv:¼ÚUaœ]}Ž™BýHœu‚½bU)œ~ŽQBý¨œtª½ŠTјŽ QBýèœsÚ½’UQ˜€Ž BþHœs*½rU©”Ž ‘BþhœrZ½:U™”‚™‘Bþ¨œqz½ TÑ”ƒ™‘Bÿœp¼êT ”„™‘Bÿˆœp*½SÙ”…‘BÿÈœo‚½bTa”]†QBÿèœn’½¢U1˜]‡QBÿèœm²½ºUɘˆŒ™‘Chœm½šUᜉŒ™Cœlz½ºUá ŠŒÑCHœkÒ¾rUá¤Ý‹Œ!C¨œk¾’U©¬ÝŒŒ#QC(œjr¾2U¹°Ý‹™%‘CèœiÒ½ÒUÁ´Ž‹™'ÑChœi½zU鼋™)ÑCœhZ½UYÀ‹+ÑCÈœg¼ºT©Ä‘‹-‘C¨œg2¼¢TAÈ]’‹/QCˆœf‚¼’T±Ì]“‹1CHœe²¼ŠU™Ð”Š™3CHœe ¼ŠU©ÐÝ•Š™5C Hœd’¼šUAÔ]–Š7C Hœd½bU Ô—Š9QC (œcJ½ºU!ИŠ;C èœb¢½ºUyÐ]™Š<‘C ¨œb*½ÊU‘ÌÝš‰™>QC hœa²½ÒUyÈ›‰™@QC Èœa½ÂU)Àœ‰™BÑC èœ`нbTÙ¼‰ECˆœ`"½JT±´ž‰FÑC(œ_ʽJTɬŸ‰HQCˆœ_J½RUi   ˆ™JChœ^š½:Ui˜ ¡ˆ™LCˆœ^½"U1Œ Ý¢ˆ™M‘Cœ]š½Ty„ ]£ˆOChœ]Z¼úTAx ¤ˆP‘Chœ\ê¼úTÁp Ý¥ˆRQCèœ\R¼úT¹d ¦ˆTCèœ[â¼úT©\ §‡™VCœ[²½*TÁT ¨‡™WÑCèœ[н‚T±L ©‡™Y‘CHœ[½ÒTáH ª‡[QCˆœZr½êT±@ «‡]ChœYú¾T±< ݬ‡_CÈœYº¾ U8 Ý­‡`‘CˆœYR¾"U¹8 Ý®†™aÑC(œXÒ¾šU±4 ¯†™cQC ÈœXR¾’U14 °†™dÑC ¨œW꾚U!4 ±†™gC ˆœWŠ¿jUi0 ²†iC HœW ¿bUq0 ³†kC ÈœV’¿JU¡0 Ý´†mC hœVJ¿ZUÉ4 ݵ…™nÑC œV¿jV¡4 ¶…™pQC ˆœUj¿bVé4 ·…™qQC (œT¿:V‘4 ]¸…™rÑC HœTb¿VA4 ]¹…t‘C ˆœT:¾òV18 º…v‘C (œSò¿RUù8 »…xQC ¨œSz¿rU™4 ¼„™zC HœS¿ZUy4 ½„™|QC ˆœRº¿bU¡4 ]¾„™}ÑC ÈœRŠ¿²Uá0 ]¿„™C ˆœR*¿úV™, À„C èœQšÀVá( ÝÁ„ƒ‘C hœQ"À:Vé ]„…QC HœPÒÀW  Ù†ÑC HœPb¿êW) ă™ˆQC (œOÒ¿ºWY Ń™‰‘CˆœOJ¿‚VÑ ƃ™Š‘CÈœNú¿JUñÝǃ™ŒQCèœN¢¿ZU‘]ȃŽQC(œMú¿ZUAɃQCˆœMB¿ZUQʃ’QCHœL¿RUàü]Ë‚™”QC¨œLB¿ZVüÝÌ‚™–C¨œK¢¿‚UÈüÍ‚™—QC¨œJú¿šU°ü]΂™˜‘CèœJb¿²UàøÝÏ‚šÑCHœIÚ¿âUÈøЂChœI2À‚Uðü]Ñ‚ž‘BÿHœHrÀúV8üÒ™ŸÑBþ(œGºÁBV˜üÓ™¡QBýhœGÁ2Wü]Ô™£QBü¨œFRÁWqÕ™¥BûhœERÀÂWYÖ¦‘BúhœDjÀŠWi]רQBùˆœC²À:WIÝØªBø¨œBòÀW!]Ù€™¬QB÷ˆœBÀ2VéÝÚ€™®‘BöHœ@úÀZVqÛ€™°‘Bõ(œ@À:V) Ü€™²QBôhœ?"ÀRVa ÝÝ€³ÑBóˆœ>2À‚VaÞ€µ‘Bòˆœ=À‚V1]߀·QBñˆœ;êÀbVI]à€¹Bð¨œ:òÀjV‰á™º‘Bïèœ:"À‚V♼Bïœ9"À‚W㙾Bíèœ8 À‚Wy]äÀBìèœ7ÀBW]åÁQBìHœ6:À Vq]æÃB눜5rÀZVAçÄÑBꈜ4ZÀºV1 è~™ÆÑBéhœ3À¢V $Ýé~™ÈQB訜2À‚Vq$Ýê~™ÊBèhœ1ZÀZVá(Ýë~™ËÑBçèœ0zÀ:Vá,Ýì~ÍÑBç(œ/ZÀ:Va0Ýí~ÏÑBæhœ.BÀUù0Ýî~Ñ‘B娜-RÀ Ué4Ýï~ÓBåHœ,ŠÀRV)8ð}™Ô‘B䨜+¢ÀÊV‘<]ñ}™ÖÑBäHœ*‚ÁW)@ò}™ÙQBãèœ)jÀ¢WA@Ýó}Û‘B㈜(zÀBW¡D]ô}ÝBãHœ'jÀ WiHÝõ}ÞQBâÈœ&BÀ VéLö}ßÑBâHœ%¿òVQL÷|™áÑBâœ$ ¿ÒVqPø|™ãÑBáÈœ#¿²V¡Tù|™å‘B᨜!ú¿úVAT ú|çBáhœ ‚À‚V1X û|èQBáHœÀ‚V9\!ü|êBá(œúÀZV¡\!ý|ì‘Bá(œúÀVù`"þ{™îÑBá(œ²¿òV‘`"]ÿ{™ðÑBàèœ2¿òV9d"Þ{™ò‘BàÈœ¿ÊV!d#{™ôQBàÈœ¢¿¢V)d#^{ö‘Bà蜂¿ŠVAh#ž{øÑBàèœ"¿šV1h#Þ{úBàÈœš¿‚V!h$z™üBàèœ2¿ZV9h$z™þQBà蜿*Vh$^zšQB᜺¾êVh$^zBáœB¿:Uyh$ž z‘Bàèœ Ê¿šUyh$ž zQBáœ Š¿ŠUÁh$Þ zÑBáHœ ‚¿‚Uùh$Þ yš Bá(œ R¿ÒUéh% yš QBàèœÊÀjUùh%žyš ‘Bàèœ2ÀJU±h%Þy‘BàèœÊÀ Uáh&yQB᜚¿êVh&žy‘BáœJÀjVh'yBàèœÂÀòV)h'^yBàè›ÿ2ÀÊV9h'ÞxšBá›ýÒÀ‚Vil(^xš‘Bá(›übÀJV™l(ÞxšÑBá›úÊÀBV¡l)xQBá›ùÀRVal)žx QBáH›÷’ÀZVip)Þx"Bማö*ÀZV¹p)Þx#‘BáÈ›ôªÀ:V©p*wš%‘BáÈ›òò¿òV™p*wš(QBᨛñ:¿¢V©t*wš)ÑBáțﺿjVÑt*w+‘Bâh›îZ¿BVit)Þw-‘Bã›ìâ¿zVt)ž w/‘Bã›ë"¿ÒUÑx)^!w1‘Bâè›éj¿¢U±x(Þ"vš3QBãh›çú¿jUáx(^#vš5QB䛿²¿*VAx'Þ$vš7QBä(›åB¿"V |'^%v9Bãè›ãª¿2U™|&ž&v:ÑBä›â"¿BUa|&'vsgBîh›Åš¿’U¹ž?siBï›Ä¿jU^@ršjQB福Ãâ¿jUqÞArškÑBïÈ›ÂÊ¿jV”žBršmQBïè›Áª¿jV±”^CršoQBðh›Àª¿bV©”DrqQBñh›¿Ê¿2V!˜ÞErs‘Bò(›¾ê¿"U©˜žFruÑBòh›½Ú¿U±˜^GrwÑBòˆ›¼º¾âUј^HqšyQBó(›»Ú¾ÊUñ˜IqšzÑBô›»¾ºUñ˜Jqš|QBôÈ›º2¾¢UјÞKqš}ÑBõ(›¹¾‚UÁ˜ÞLqš‘Bõh›¸¾bU±˜ÞMq‚Bõè›·J¾U˜ÞNqƒÑBöˆ›¶z¾U1˜Oq…‘B÷›µz¾zU)˜Ppš‡QB÷h›´Z¾‚UY˜Qpšˆ‘B÷蛳b¾bU±˜RpšŠ‘Bøh›²Š¾:V˜SpšŒÑBøÈ›±Š½úUá˜TpBùH›°R½âUY˜Up‘Bù蛯"½ºTñ˜Vp’ÑBú¨›®2½’Tá˜ÞWp”QBû(›­r½šTјžXoš•ÑBû¨›¬š½ÚTáœ^Yoš—‘Bû蛫r½ÂTñœ^Zoš™ÑBüH›ªj½¢U9œ[oš›ÑBüÈ›©ª½‚UI Þ\oQBýˆ›¨ú½bU) ž]ož‘BþH›¨½êU ^^o Bþ¨›§¾JTù _o¡ÑBÿH›¦ ¾U `o¤QBÿ蛥b½ÂU1 anš§QCˆ›¤º½ÂTá bnš©C›£Ê¾T cnšªQCh›¢ª¾ Ti dn¬C›¡Ê¾ TÁœen®C¨›¡½òUœ^fn°CH› R¾:U˜žgn±QC蛟:¾ŠU)˜žhn³Ch›ž ¾jU9˜Þimš´ÑC›¾JUI˜jmš¶ÑCˆ›œj¾ U”^kmš¸ÑC¨››¢¾*T™”žlmšº‘CÈ›šŠ¾ºT‰˜mm¼Cè›™b¿U!˜^nm½‘C¨›˜r¾ÒUy˜žom¿Ch›—ª¾šUÉœpmÁCÈ›–¢¾zU¹œ^qlšÂÑC›•r¾bUq ÞrlšÄQCÈ›”Z¾JUI¤slšÆC ˆ›“j¾:U¨žtlšÈC H›’‚¾’U‘¨ÞulÊC (›‘Z¿ZU©¬^vlËÑC 蛿zV°žwlÍÑC 蛿V ´ÞxlÏÑC 蛎*¾ºV¸ykšÑ‘Cè›J¾bV¸^zkšÓQCÈ›Œ ¾2U±¼^{kšÔÑCÈ›Š²¾U)Àž|kšÖQCè›‰Š¾T¡ÀÞ}kšØCh›ˆº¾TùÄÞ~kÙÑC¨›‡ò¾JU9ÄÞkÜQC¨›†â¿UyÄÞ€kÞÑCˆ›…r¿U¡È jšáC蛄2¾²U‘È ‚jšãCh›ƒJ¾bU‰È ƒjšåC¨›‚‚¾2UqÈ „jšæQC¨›j¾ZU9ÈÞ…jšèCˆ›€*¾zU!ÈÞ†jê‘C›~ú¾ZUaÈÞ‡jìÑCˆ›}ú¾JUÈžˆjîC ¨›}¾jU™È^‰jïC!ˆ›{Ú¾ÒUyÈ^ŠišðÑC"h›z¢¾ÒUÈ‹išò‘C#h›yª¾¢TùÈÞŒišôQC$¨›xâ¿U1ÈžišõÑC%è›wò¿ºU±È^Žiš÷ÑC&è›vÂÀ*VñÌiúC'è›u¢À W9ÌÞiûÑC(è›tÒ¿ªVÉÌ^‘iý‘C*›t"¿2VÌ’iÿ‘C+H›s*¿:UÐÞ“h›ÑC,ˆ›qò¿rU9О”h›‘C-ˆ›pÊ¿ZTéÐ^•h›QC.¨›oò¿BUÐÞ–h›ÑC0›oJ¿bU)О—hQC1H›nrÀ:U‰Ð^˜h ÑC2(›mJÀÊUÑÐÞ™h ‘C3›l2ÀºUáÌžšh ‘C4H›krÀbU¹Ì›hÑC5¨›jêÀ2U‰ÌÞœg›‘C6ˆ›j:À¢UiÈ^g›C7›i*ÀÚUqÈžg›ÑC7È›hÀÚU™ÄÞŸg›QC8È›gJÀÚUÙÄž gC:(›fÊÀúVÀ^¡g‘C;›f"Á2V¼¢g‘C;H›e:ÁbVù¼£gQC;¨›dRÁ’W1¸¤gQC(›bJÁÊV9°^§f›$‘C>ˆ›a:Â2VY°ž¨f›%ÑC>è›`2ÂVI°Þ©f›'QC?¨›_jÁêVi°ªf(ÑC@ˆ›^ºÁâV‰¬^«f*QCAH›]Ú‚Vá¬Þ¬f,CAÈ›\ºÃWY¬­f.CB(›[ªÂÒWy¬®f/ÑCC›ZÊÂrW‰¬^¯e›1QCDH›Z ÂZWi°ž°e›2ÑCDÈ›YÂRVù°ž±e›4QCE›WÚÂ*VÁ°ž²e›5ÑCEh›VšÁòV¹°ž³e›7‘CFˆ›UÂÁÂVÁ´ž´e9CGè›U*Á’V™´^µe;CH¨›TjÁ’VI´^¶e=CHè›SRÁŠV‘´·e?CIH›R:ÁŠVѸ¸e@QCJH›QZÁ‚V±¸Þ¹d›AQCK¨›PºÁ¢V©¼žºd›BÑCLÈ›PÂ"V‰¼^»d›DQCM›O‚V©¼¼d›EÑCMh›MúÂÒW9ÀÞ½d›GQCNH›M¢WqÀž¾dICO¨›LrÂbWAÀ^¿dJÑCPÈ›KÊÂBVéÀÀdLQCQh›JÒÂ*VáÄžÀ dL‘CQh›JÒÂ*VéÄžÁdNCQè›IÒÂWÄ^ÂdO‘CRÈ›IÂW ÀÞÃc›QCT(›H‚ VéÀ^Äc›R‘CU(›Gê²VùÀÅc›TQCUˆ›Gà VéÀžÆc›VCUÈ›F*Ã*W1¼Çc›WÑCVh›EjÂÚW¸žÈcYQCWˆ›DêÂÂV¹¸^ÉcZÑCXh›DbÃV™´ÞÊc\QCXÈ›CªÃVѰžËc]‘CXè›BÚÃ*WI¬^Ìc_CYh›B2ÃBWy¨Íc`‘CZH›AªÃrWa¤ÞÎb›aÑCZè›A"ÃâWa¤žÏb›cÑCZè›@bÄ"W‰ ^Ðb›fQCZÈ›?’ÄrWùœ^Ñb›gÑC[(›>úÄBWé˜Òb›iC\›>ŠÄBWÁ˜Óbj‘C\ˆ›=òÄòX ”ÞÔbmC\H›=*ÅzXA”ÞÕboQC\›Ð¿;Ìð/Tÿÿÿÿà XíT8ÿÃ?ÿÿÿÿÿý‚¹<¿€ ¸eÈùòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁOú¿ø~ÿÿÿÿÿÿÿÿÿÿÿïéÿïéÿÿÿð'öFÿßÙn˜Œ?ÿ÷èÿýÿÿÿÿÿÿ€ÿ¿Gÿÿÿÿÿÿÿÿÿÿ÷ýÿÿÅ­¬Œ­Ä ìàcµ–øŽ×ÁèòÎ:îÇÿÿÿÿþØþØO{ÿü._ÿÿÿÿÿä ~ø Œ@ÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿüzÿ¦ÿ€èÿÿÿïúGÿÿÿÿþþÿþþÿÿÿÿd}ý¨é‡€Wÿÿ~ÿßÿÿÿÿÿøÿûôÿÿÿÿÿÿÿÿÿÿßÿüQÀ„äÊÚÊÜ@@@@@@@@@@@@@@¾Î0H° ® ? ©9¤çO ÿÿÿÿà ˆmk•ÿÏ¡ÿÿÿÿÿþAàDGï€@˜Â 'K€ÿ#þOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÔ§ÿÑÿÿÿÿÿÿÿÿÿÿÿýý ÿýý ÿÿÿþþÈ 5ûû#1Ó@±ÿþýÿ¿ÿÿÿÿÿðÿ÷èÿÿÿÿÿÿÿÿÿÿÿÿÿÿø¤99•ÕÉÕÁÁ¥¸€€€€€€€€€€€}œ `6ƒ˜’c=ÀˆàEŠsùÝÞ¸ÿÿÿÿÿÀ2ÞÚÈ/ÿßÿÿÿÿÿô¿ùÿÿÀA?ÈÈÿò?äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðýÿÿÿÿÿÿÿÿÿÿÿßÒ?ÿßÒ?ÿÿÿàO삯¿²X1¿ÿïÑÿûÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠT’[››Ý™\ˆÙÀÆeŠÑ!m¢ã|¦ÿ!çÿÿÿÿü!²í­oÿù,?ÿÿÿÿÿ°;‹èýð_ÿ#þOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÔ§ÿÑÿÿÿÿÿÿÿÿÿÿÿýý ÿýý ÿÿÿþþÉ`4ûû%!Ó@»ÿþýÿ¿ÿÿÿÿÿðÿ÷èÿÿÿÿÿÿÿÿÿÿÿÿÿÿø¥¥5…‘•‰ÕÉœ€€€€€€€€€€€}œ `65F’EZ€”ÀKÊoùÚ˜ÿÿÿÿÿÀ2ëZÀlÿ‹CÿÿÿÿÿüŸøèÿÿÀÁÇ@Qù ?5 ÿÈÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿþnÕ)ÿÀôÿÿÿÿÿÿÿÿÿÿÿHÿÿHÿÿÿÿ?²0>þÉ`0tÅP&ÿÿ¿Gÿïÿÿÿÿÿüÿýú?ÿÿÿÿÿÿÿÿÿÿ¿ïÿþ)‰Lindenberg _g ê¤ Ðø&讜.x×¶?ÿÿÿÿð †°6ªËßÿáôÿÿÿÿÿý§žPàP<?üù?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿà§ýü?Gÿÿÿÿÿÿÿÿÿÿÿ÷ô€ÿ÷ô€ÿÿÿøû €ïì‚LF¯ÿûôþÿÿÿÿÿÿÀ?ÿߣÿÿÿÿÿÿÿÿÿÿûþÿÿâ™GVW76VÆF÷&böp1€×šVG?.!Ái½'%yÿÿÿÿÿÈm—l¦«ÿþÚÏÿÿÿÿÿòáþ?|Fá8°ùòÿÿÿÿÿÿÿÿÿÿÿÿÿÿǯúa?ø~ÿÿþÿ ÿÿÿÿïéÿïéÿÿÿð'öKWßÙ, n˜–ÿÿ÷èÿýÿÿÿÿÿÿ€ÿ¿Gÿÿÿÿÿÿÿÿÿÿ÷ýÿÿÅ6Él.nl­„ìàc¯4舴)ƒÓάóÇÿÿÿÿþØÖÖSCÿü¨ÿÿÿÿÿäÿÃïÿþ ~@ÿ‘ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÿêSÿ€èÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿÿÿÿeýý•@té‹@Qÿÿ~ÿßÿÿÿÿÿÿÿÿÿÿÿûôÿÿÿÿÿÿÿÿÿÿÿÿÿüSª˜ÊÒàôÒÎZ¦ÆÐÖÊêÈÒèô@@¾Î0úI*²`Rø)×6Œï/\ÿÿÿÿà k­V¶ÿÎÿÿÿÿÿû!ÄnF¡€@ˆÃp$mÿ#þOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÔ§ÿÑÿÿÿÿÿÿÿÿÿÿÿýý ÿýý ÿÿÿþþÊ;ûû%1ÓÀ™ÿþýÿ¿ÿÿÿÿÿÿÿÿÿÿÿ÷èÿÿÿÿÿÿÿÿÿÿÿÿÿÿø§¡ɕ͑•¸µ-±½ÑéÍ¡”€€}œ `5Ö&z_ ÃðbÒf©â_ÿÿÿÿÿÀ2ÊÚ ¬ÿÿŽÿÿÿÿÿñ yBÀA°ÿò?äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ýJðýÿÿÿÿÿÿÿÿÿÿÿßÒ?ÿßÒ?ÿÿÿàOì‚_¿²]1 ÿÿïÑÿûÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠ~“Y\˜\™ËP˜\ÙZ[\ˆÙÀÆX²9$6I§$öœÙìoÿÿÿÿü!²í²oÿú¼?ÿÿÿÿÿÈ<ýð…ÿäÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿éDÿàú?ÿÿûþ€ÿÿÿÿÿ¿¤ÿ¿¤ÿÿÿÀŸÙ|ßeð-:bøÿÿߣÿ÷ÿÿÿÿÿÿÿÿÿÿÿþýÿÿÿÿÿÿÿÿÿÿß÷ÿÿ&²´·4·3²·/³Œ³ÙÒDü0!4§J¥;³ÛÿÿÿÿøCZ›X=ÿÿñÿÿÿÿÿxò{à087þGüŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿ©Oþ£ÿÿÿÿÿÿÿÿÿÿÿûú@ÿûú@ÿÿÿü ý•@u÷öU[¦(oÿýú?ÿÿÿÿÿÿàÿïÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿñSê3“ s[3«“¡zk Kqû8ÀjØÐ#øê@ TÚs®½1ÿÿÿÿÿ€d6Sµ¨OÿÿN'ÿÿÿÿÿùq#¾‚ã ÿäÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ¿éŒÿàú?ÿÿûþ€ÿÿÿÿÿ¿¤ÿ¿¤ÿÿÿÀŸØPŸ`ðºa@ÿߣÿ÷ÿÿÿÿÿÿÿÿÿÿÿþýÿÿÿÿÿÿÿÿÿÿß÷ÿÿV¤7³³Œ°ÏIL%³äI³ 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS M 0 0 14 022098 WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS M 0 0 14 022099 MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M) DEGREE TRUE 0 0 9 022100 DIRECTION SPREAD AT LOW WAVE NUMBERS (WAVELENGTH > 731 M) DEGREE 0 0 9 022101 TOTAL ENERGY (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS NUMERIC 0 0 31 022120 TIDE STATION AUTOMATED WATER LEVEL CHECK CODE TABLE 022120 0 0 5 022121 TIDE STATION MANUAL WATER LEVEL CHECK CODE TABLE 022121 0 0 5 022122 TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK CODE TABLE 022122 0 0 5 022123 TIDE STATION MANUAL METEOROLOGICAL DATA CHECK CODE TABLE 022123 0 0 5 022141 SEA SURFACE TEMPERATURE (15 DAY RUNNING MEAN) K 2 0 15 022150 NUMBER OF 18 HZ VALID POINTS FOR KU BAND NUMERIC 0 0 10 022151 KU BAND OCEAN RANGE M 3 0 31 022152 STD OF 18 HZ KU BAND OCEAN RANGE M 3 0 16 022153 NUMBER OF 18 HZ VALID POINTS FOR S BAND NUMERIC 0 0 10 022154 S BAND OCEAN RANGE M 3 0 31 022155 STD OF 18 HZ S BAND OCEAN RANGE M 3 0 16 022156 KU BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 022157 STD 18 HZ KU BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 022158 S BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 022159 STD 18 HZ S BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 022160 NORMALIZED INVERSE WAVE AGE NUMERIC 6 0 21 022161 WAVE SPECTRA M**4 4 0 27 022192 SPECTRAL PERIOD S 2 0 13 022193 MEAN WAVENUMBER 1/M 5 0 15 022194 PEAK WAVENUMBER 1/M 5 0 15 022195 MEAN WAVE PROPAGATION DIRECTION DEGREE 1 0 13 022196 PEAK WAVE PROPAGATION DIRECTION DEGREE 1 0 13 022197 DIRECTION SPREAD DEGREE 1 0 13 022198 VARIANCE SPECTRAL DENSITY M**2*S/RAD 4 0 18 022199 CORRELATION COEFF OF SIMULATED FG AND OBSERVED SAR SPECTRUM NUMERIC 4 -10000 15 022200 CORRELATION COEFF OF SIMULATED BF AND OBSERVED SAR SPECTRUM NUMERIC 4 -10000 15 022201 CORRELATION COEFF OF OCEAN WAVE FG AND EXTRACTED WAVE SPECTRUM NUMERIC 4 -10000 15 022202 ERROR BETWEEN FIRST GUESS AND OBSERVED SAR NUMERIC 5 0 21 022203 ERROR BETWEEN SIMULATED AND OBSERVED SAR NUMERIC 5 0 21 022204 MEAN PERIOD OF WAVES SECOND 2 0 13 022205 SPECTRAL DENSITY M**2*S/RAD 4 0 25 022206 PEAK PERIOD OF WAVES SECOND 2 0 13 022207 MEAN WAVE PERIOD S 1 0 10 022208 PEAK PERIOD OF 1D SPECTRA S 1 0 10 022209 COEFICIENT OF DRAG WITH WAVES NUMERIC 6 0 13 022210 MEAN SQUARE SLOPE OF WAVES NUMERIC 4 -10000 14 022211 COEFICIENT OF DRAG WITH WAVES NUMERIC 6 0 17 022243 STANDARD DEVIATION SIGNIFICANT WAVE HEIGHT M 2 0 10 023001 ACCIDENT EARLY NOTIFICATION-ARTICLE APPLICABLE CODE TABLE 023001 0 0 3 023002 ACTIVITY OR FACILITY INVOLVED INCIDENT CODE TABLE 023002 0 0 5 023003 TYPE OF RELEASE CODE TABLE 023003 0 0 3 023004 COUNTERMEASURES TAKEN NEAR BORDER CODE TABLE 023004 0 0 3 023005 CAUSE OF INCIDENT CODE TABLE 023005 0 0 2 023006 INCIDENT SITUATION CODE TABLE 023006 0 0 3 023007 CHARACTERISTICS OF RELEASE CODE TABLE 023007 0 0 3 023008 STATE OF CURRENT RELEASE CODE TABLE 023008 0 0 2 023009 STATE OF EXPECTED RELEASE CODE TABLE 023009 0 0 2 023016 POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT CODE TABLE 023016 0 0 2 023017 FLOW DISCHARGE OF MAJOR RECIPIENT M**3/S 6 0 20 023018 RELEASE BEHAVIOUR OVER TIME CODE TABLE 023018 0 0 3 023019 ACTUAL RELEASE HEIGHT M 0 -15000 17 023021 EFFECTIVE RELEASE HEIGHT M 0 -15000 17 023022 DISTANCE OF RELEASE POINT OR SITE OF INCIDENT M 0 0 24 023023 MAIN TRANSPORT SPEED IN THE ATMOSPHERE M/S 1 0 12 023024 MAIN TRANSPORT SPEED WATER M/S 2 0 13 023025 MAIN TRANSPORT SPEED IN GROUND WATER M/S 2 0 13 023027 MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE DEGREE TRUE 0 0 9 023028 MAIN TRANSPORT DIRECTION IN WATER DEGREE TRUE 0 0 9 023029 MAIN TRANSPORT DIRECTION IN GROUND WATER DEGREE TRUE 0 0 9 023031 POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN CODE TABLE 023031 0 0 2 023032 PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG CODE TABLE 023032 0 0 2 024001 ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM Bq -11 0 28 024002 ESTIMATED MAXIMUM POTENTIAL RELEASE Bq -11 0 28 024003 COMPOSITION OF RELEASE CODE TABLE 024003 0 0 5 024004 ELEMENT NAME CCITTIA5 0 0 16 024005 ISOTOPE MASS NUMERIC 0 0 9 024011 DOSE mSv 2 0 32 024012 TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL) mSv 2 0 32 024013 GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH(DEFINED LOCATION mSv 2 0 32 024021 AIR CONCENTRATION(OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA Bq/M**3 2 0 32 024022 CONCENTRATION IN PRECIPITATION ( OF NAMED ISOTOPE TYPE) Bq/L 2 0 32 024023 PULSE RATE OF BETA RADIATION 1/S 1 0 14 024024 PULSE RATE OF GAMMA RADIATION 1/S 1 0 14 025001 RANGE-GATE LENGTH M -1 0 6 025002 NUMBER OF GATES AVERAGED NUMERIC 0 0 4 025003 NUMBER OF INTEGRATED PULSES NUMERIC 0 0 8 025004 ECHO PROCESSING CODE TABLE 025004 0 0 2 025005 ECHO INTEGRATION CODE TABLE 025005 0 0 2 025006 Z TO R CONVERSION CODE TABLE 025006 0 0 3 025007 Z TO R CONVERSION FACTOR NUMERIC 0 0 12 025008 Z TO R CONVERSION EXPONENT NUMERIC 2 0 9 025009 CALIBRATION METHOD FLAG TABLE 025009 0 0 4 025010 CLUTTER TREATMENT CODE TABLE 025010 0 0 4 025011 GROUND OCCULTATION CORRECTION (SCREENING) CODE TABLE 025011 0 0 2 025012 RANGE ATTENUATION CORRECTION CODE TABLE 025012 0 0 2 025013 BRIGHT-BAND CORRECTION FLAG TABLE 025013 0 0 2 025014 AZIMUTH CLUTTER CUT-OFF NUMERIC 0 0 12 025015 RADOME ATTENUATION CORRECTION FLAG TABLE 025015 0 0 2 025016 CLEAR-AIR ATTENUATION CORRECTION dB/M 5 0 6 025017 PRECIPITATION ATTENUATION CORRECTION FLAG TABLE 025017 0 0 2 025018 A TO Z LAW FOR ATTENUATION FACTOR NUMERIC 7 0 6 025019 A TO Z LAW FOR ATTENUATION EXPONENT NUMERIC 2 0 7 025020 MEAN SPEED ESTIMATION CODE TABLE 025020 0 0 2 025021 WIND COMPUTATION ENHANCEMENT FLAG TABLE 025021 0 0 8 025025 BATTERY VOLTAGE V 1 0 9 025026 BATTERY VOLTAGE (LARGE RANGE) V 1 0 12 025028 OPERATOR OR MANUFACTURER DEFINED PARAMETER NUMERIC 1 -16384 15 025030 RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE CODE TABLE 025030 0 0 2 025032 WIND PROFILER MODE INFORMATION CODE TABLE 025032 0 0 2 025033 WIND PROFILER SUBMODE INFORMATION CODE TABLE 025033 0 0 2 025034 WIND PROFILER QUALITY CONTROL TEST RESULTS FLAG TABLE 025034 0 0 4 025036 ATMOSPHERICS LOCATION METHOD CODE TABLE 025036 0 0 4 025040 CO2 WIND PRODUCT DERIVATION CODE TABLE 025040 0 0 4 025041 MOVING PLATFORM DIRECTION REPORTING METHOD CODE TABLE 025041 0 0 2 025042 MOVING PLATFORM SPEED REPORTING METHOD CODE TABLE 025042 0 0 2 025043 WAVE SAMPLING INTERVAL (TIME) S 4 0 15 025044 WAVE SAMPLING INTERVAL (SPACE) M 2 0 14 025045 HIRS CHANNEL COMBINATION FLAG TABLE 025045 0 0 21 025046 MSU CHANNEL COMBINATION FLAG TABLE 025046 0 0 5 025047 SSU CHANNEL COMBINATION FLAG TABLE 025047 0 0 4 025048 AMSU-A CHANNEL COMBINATION FLAG TABLE 025048 0 0 16 025049 AMSU-B CHANNEL COMBINATION FLAG TABLE 025049 0 0 6 025050 PRINCIPAL COMPONENT SCORE NUMERIC 4 -131072 18 025051 AVHRR CHANNEL COMBINATION FLAG TABLE 025051 0 0 7 025053 OBSERVATION QUALITY FLAG TABLE 025053 0 0 12 025054 SSMIS SUBFRAME ID NUMBER NUMERIC 0 0 5 025055 MULTIPLEX HOUSEKEEPING K 2 0 16 025060 SOFTWARE IDENTIFICATION NUMERIC 0 0 14 025061 SOFTWARE IDENTIFICATION CCITTIA5 0 0 96 025070 MAJOR FRAME COUNT NUMERIC 0 0 4 025071 FRAME COUNT NUMERIC 0 0 5 025075 SATELLITE ANTENNA CORRECTIONS VERSION NUMBER NUMERIC 0 0 5 025076 LOG_10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER) FOR ATOVS LOG (1/M) 8 0 30 025077 BANDWIDTH CORRECTION COEFFICIENT 1 for ATOVS NUMERIC 5 -100000 18 025078 BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS NUMERIC 5 0 17 025079 ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS W/M**2 4 0 24 025080 ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS M 10 0 14 025085 FRACTION OF CLEAR PIXELS IN HIRS FOV NUMERIC 0 0 7 025086 DEPTH CORRECTION INDICATOR CODE TABLE 025086 0 0 2 025091 STRUCTURE CONSTANT OF THE REFRACTION INDEX (Cn2) dB 3 -18192 13 025092 ACOUSTIC PROPAGATION VELOCITY M/S 2 28000 14 025093 RASS COMPUTATIONAL CORRECTION FLAG TABLE 025093 0 0 8 025095 ALTIMETER STATE FLAG FLAG TABLE 025095 0 0 2 025096 RADIOMETER STATE FLAG FLAG TABLE 025096 0 0 5 025097 THREE DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT CODE TABLE 025097 0 0 4 025100 XBT/XCTD FALL RATE EQUATION COEFFICIENT A NUMERIC 5 0 20 025101 XBT/XCTD FALL RATE EQUATION COEFFICIENT B NUMERIC 5 -500000 21 025102 NUMBER OF MISSING LINES EXCLUDING DATA GAPS NUMERIC 0 0 8 025103 NUMBER OF DIRECTIONAL BINS NUMERIC 0 0 8 025104 NUMBER OF WAVELENGHT BINS NUMERIC 0 0 8 025105 FIRST DIRECTIONAL BIN DEGREES 3 0 19 025106 DIRECTIONAL BIN STEP DEGREES 3 0 19 025107 FIRST WAVELENGHT BIN M 3 0 29 025108 LAST WAVELENGHT BIN M 3 0 29 025110 IMAGE PROCESSING SUMMARY FLAG TABLE 025110 0 0 10 025111 NUMBER OF INPUT DATA GAPS NUMERIC 0 0 8 025120 RA2_L2_PROCESSING FLAG CODE TABLE 025120 0 0 2 025121 RA2_L2_PROCESSING QUALITY % 0 0 7 025122 HARDWARE CONFIGURATION FOR RF CODE TABLE 025122 0 0 2 025123 HARDWARE CONFIGURATION FOR HPA CODE TABLE 025123 0 0 2 025124 MWR L2 PROCESSING FLAG CODE TABLE 025124 0 0 2 025125 MWR L2 PROCESSING QUALITY % 0 0 7 025126 MODEL DRY TROPOSPHERIC CORRECTION M 3 -32768 16 025127 SEA SURFACE HEIGHT CORRECTION DUE TO PRESSURE LOADING M 3 -32768 16 025128 MODEL WET TROPOSPHERIC CORRECTION M 3 -32768 16 025129 MWR DERIVED WET TROPOSPHERIC CORRECTION M 3 -32768 16 025130 RA2 IONOSPHERIC CORRECTION ON KU BAND M 3 -32768 16 025131 IONOSPHERIC CORRECTION FROM DORIS ON KU BAND M 3 -32768 16 025132 IONOSPHERIC CORRECTION FROM MODEL ON KU BAND M 3 -32768 16 025133 SEA STATE BIAS CORRECTION ON KU BAND M 3 -32768 16 025134 RA2 IONOSPHERIC CORRECTION ON S BAND M 3 -32768 16 025135 IONOSPHERIC CORRECTION FROM DORIS ON S BAND M 3 -32768 16 025136 IONOSPHERIC CORRECTION FROM MODEL ON S BAND M 3 -32768 16 025137 SEA STATE BIAS CORRECTION ON S BAND M 3 -32768 16 025138 AVERAGE SIGNAL TO NOISE RATIO NUMERIC 0 -2048 12 025193 ATTENUATION CORRECTION ON SIGMA0 dB 3 0 14 025194 MAJOR FRAME COUNT NUMERIC 0 0 4 025197 ANTENNA CORRECTIONS VERSION NUMBER NUMERIC 0 0 5 025198 LOG (TEMP-RAD CENTRAL WAVE NUMBER) 1/M 8 0 30 025199 BANDWIDTH CORRECTION COEFFICIENT 1 NUMERIC 4 -10000 15 025200 BANDWIDTH CORRECTION COEFFICIENT 2 NUMERIC 5 0 17 025201 ALBEDO-RAD SOLAR FILTERED IRRADIANCE NUMERIC 4 0 24 025202 ALBEDO-RAD EQUIVALENT FILTER WIDTH NUMERIC 10 0 14 025203 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 25081 0 0 31 025204 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 25082 0 0 31 025205 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 25083 0 0 31 025206 FOV QUALITY FLAGS FOR ATOVS FLAG TABLE 25084 0 0 31 026001 PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE HOUR 1 0 12 026002 PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE HOUR 1 0 12 026003 TIME DIFFERENCE MINUTE 0 -1440 12 026010 HOURS INCLUDED FLAG TABLE 026010 0 0 26 026020 DURATION OF PRECIPITATION MINUTE 0 0 11 026193 YEAR YEAR 0 0 12 026194 MONTH MONTH 0 0 4 026195 DAY DAY 0 0 6 026196 HOUR HOUR 0 0 5 026197 MINUTE MINUTE 0 0 6 026198 SECOND SECOND 0 0 6 026200 LOCATION WITHIN ASSIMILATION WINDOW IN TIME NUMERIC 6 0 20 026201 HOURS INCLUDED FLAG TABLE 26201 0 0 26 027001 LATITUDE(HIGH ACCURACY) DEGREE 5 -9000000 25 027002 LATITUDE(COARSE ACCURACY) DEGREE 2 -9000 15 027003 ALTERNATE LATITUDE DEGREE 2 -9000 15 027004 ALTERNATE LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 027020 SATELLITE LOCATION COUNTER NUMERIC 0 0 16 027021 SATELLITE SUBLOCATION DIMENSION NUMERIC 0 0 16 027031 IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S C M 2 -1073741824 31 027035 LENGTH OF PHENOMENON M -3 0 13 027080 VIEWING AZIMUTH ANGLE DEGREE TRUE 2 0 16 027193 SOLAR AZIMUTH DEGREE TRUE 2 0 16 028001 LONGITUDE(HIGH ACCURACY) DEGREE 5 -18000000 26 028002 LONGITUDE(COARSE ACCURACY) DEGREE 2 -18000 16 028003 ALTERNATE LONGITUDE DEGREE 2 -18000 16 028004 ALTERNATE LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 028031 IN DIRECTION 90 DEGREES EAST,DISTANCE FROM THE EARTH'S CENTRE M 2 -1073741824 31 028035 WIDTH OF PHENOMENON M -3 0 13 029001 PROJECTION TYPE CODE TABLE 029001 0 0 3 029002 COORDINATE GRID TYPE CODE TABLE 029002 0 0 3 030001 PIXEL VALUE(4 BITS) NUMERIC 0 0 4 030002 PIXEL VALUE(8 BITS) NUMERIC 0 0 8 030004 PIXEL VALUE(16 BITS) NUMERIC 0 0 16 030021 NUMBER OF PIXELS PER ROW NUMERIC 0 0 12 030022 NUMBER OF PIXELS PER COLUMN NUMERIC 0 0 12 030031 PICTURE TYPE CODE TABLE 030031 0 0 4 030032 COMBINATION WITH OTHER DATA FLAG TABLE 030032 0 0 16 030193 POSITION NUMBER ALONG SCAN NUMERIC 0 0 8 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 031021 0 0 6 031031 DATA PRESENT INDICATOR FLAG TABLE 031031 0 0 1 031192 DATA PRESENT INDICATOR NUMERIC 0 0 1 033002 QUALITY INFORMATION CODE TABLE 033002 0 0 2 033003 QUALITY INFORMATION CODE TABLE 033003 0 0 3 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 033005 0 0 30 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 033006 0 0 3 033007 % CONFIDENCE % 0 0 7 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 033020 0 0 3 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 033021 0 0 2 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 033022 0 0 2 033023 QUALITY OF BUOY LOCATION CODE TABLE 033023 0 0 2 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATION) CODE TABLE 033024 0 0 4 033025 ACARS INTERPOLATED VALUES CODE TABLE 033025 0 0 3 033026 MIXING RATIO QUALITY CODE TABLE 033026 0 0 6 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66% CONFIDENCE) CODE TABLE 033027 0 0 3 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 033030 0 0 24 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 033031 0 0 24 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 033032 0 0 24 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 033033 0 0 24 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 033035 0 0 4 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 033037 WIND CORRELATION ERROR FLAG TABLE 033037 0 0 20 033038 QUALITY FLAG FOR GROUND BASED GNSS DATA FLAG TABLE 033038 0 0 10 033040 CONFIDENCE INTERVAL % 0 0 7 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 033041 0 0 2 033043 AST CONFIDENCE FLAG TABLE 033043 0 0 8 033044 ASAR QUALITY INFORMATION FLAG TABLE 033044 0 0 15 033047 MEASUREMENT CONFIDENCE DATA FLAG TABLE 033047 0 0 31 033048 CONFIDENCE MEASURE OF SAR INVERSION CODE TABLE 033048 0 0 2 033049 CONFIDENCE MEASURE OF WIND RETIEVAL CODE TABLE 033049 0 0 2 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 033050 0 0 4 033051 ASAR QUALITY INFORMATION FLAG TABLE 033051 0 0 15 033052 S BAND OCEAN RETRACKING QUALITY FLAG TABLE 033052 0 0 21 033053 KU BAND OCEAN RETRACKING QUALITY FLAG TABLE 033053 0 0 21 033054 DATA EXTRACTION INDICATOR FLAG TABLE 033054 0 0 8 033192 TEM1 CONFIDENCE % 0 0 7 033193 DATA QUALITY 3 BIT CODE CODE TABLE 33193 0 0 3 033194 DATA QUALITY 2 BIT CODE CODE TABLE 33194 0 0 2 033195 ECMWF SAR QC INDICATOR CODE TABLE 33195 0 0 5 033196 ECMWF WAM QC INDICATOR CODE TABLE 33196 0 0 2 033197 ECMWF SAR INVERSION QC INDICATOR CODE TABLE 33197 0 0 3 033198 MINIMUM COST NUMERIC 4 0 14 033199 1D VAR TOTAL PRECIPITABLE WATER RETRIEVED ERROR(S) KG/M**2 2 0 11 033200 ANALYSIS REPORT EVENTS FLAG TABLE 33200 0 0 31 033201 ANALYSIS REPORT STATUS EVENT FLAG TABLE 33201 0 0 13 033202 ANALYSIS DATUM EVENT FLAGS (1) FLAG TABLE 33202 0 0 31 033203 ANALYSIS DATUM EVENT FLAGS (2) FLAG TABLE 33203 0 0 11 033204 ANALYSIS DATUM STATUS FLAGS FLAG TABLE 33204 0 0 21 033205 VARIATIONAL ANALYSIS BLACK LIST FLAG CODE TABLE 33205 0 0 4 033206 VARIATIONAL ANALYSIS QUALITY CONTROL FLAG CODE TABLE 33206 0 0 4 033207 VARIATIONAL ANALYSIS DEPARTURE FLAG CODE TABLE 33207 0 0 4 033208 VARIATIONAL ANALYSIS FIRST QUESS CHECK FLAG CODE TABLE 033208 0 0 4 033209 VARIATIONAL ANALYSIS FINAL FLAG CODE TABLE 33209 0 0 4 033210 INCREMENTAL VARIATIONAL ANALYSIS UPDATE NUMBER NUMERIC 0 0 7 033211 MINIMISATION SIMULATION NUMBER NUMERIC 0 0 10 033212 1D VAR ITERATION NUMBER NUMERIC 0 0 10 033213 1D VAR RADIANCE COST NUMERIC 1 -1000 11 033214 1D VAR ERROR(S) FLAG TABLE 33214 0 0 11 033215 DIRECTIONAL SKILL NUMERIC 1 -4096 13 033216 1D VAR SURFACE TYPE QUALITY CONTROL CODE TABLE 33216 0 0 3 033217 1D VAR FAILURE INDICATOR CODE TABLE 33217 0 0 2 033218 1D VAR ESTIMATE OF SCATTERING NUMERIC 2 0 12 033219 SSMI INDIPENDENT SCATTERING INDEX NUMERIC 2 -50000 16 033220 VARIATIONAL ANALYSIS REPORT EVENTS (1) FLAG TABLE 33220 0 0 31 033221 VARIATIONAL ANALYSIS SYNOP EVENTS (2) FLAG TABLE 33221 0 0 31 033222 VARIATIONAL ANALYSIS AIREP EVENTS (2) FLAG TABLE 33222 0 0 31 033223 VARIATIONAL ANALYSIS SATOB EVENTS (2) FLAG TABLE 33223 0 0 31 033224 VARIATIONAL ANALYSIS DRIBU EVENTS (2) FLAG TABLE 33224 0 0 31 033225 VARIATIONAL ANALYSIS TEMP EVENTS (2) FLAG TABLE 33225 0 0 31 033226 VARIATIONAL ANALYSIS PILOT EVENTS (2) FLAG TABLE 33226 0 0 31 033227 VARIATIONAL ANALYSIS SATEM/TOVS EVENTS (2) FLAG TABLE 33227 0 0 31 033228 VARIATIONAL ANALYSIS PAOB EVENTS (2) FLAG TABLE 33228 0 0 31 033229 VARIATIONAL ANALYSIS SCATTEROMETER EVENTS (2) FLAG TABLE 33229 0 0 31 033230 VARIATIONAL ANALYSIS RAW RADIANCES EVENTS (2) FLAG TABLE 33230 0 0 31 033231 PRESAT SUMMARY FLAGS FLAG TABLE 33231 0 0 6 033232 REPORT BLACK LIST EVENTS FLAG TABLE 33232 0 0 31 033233 VARIATIONAL ANALYSIS REPORT STATUS FLAG TABLE 33233 0 0 31 033234 VARIATIONAL ANALYSIS DATUM STATUS FLAG TABLE 33234 0 0 31 033236 VARIATIONAL ANALYSIS DATUM EVENTS (1) FLAG TABLE 33236 0 0 31 033237 VARIATIONAL ANALYSIS SYNOP DATUM EVENTS (2) FLAG TABLE 033237 0 0 31 033238 VARIATIONAL ANALYSIS AIREP DATUM EVENTS (2) FLAG TABLE 033238 0 0 31 033239 VARIATIONAL ANALYSIS SATOB DATUM EVENTS (2) FLAG TABLE 033239 0 0 31 033240 VARIATIONAL ANALYSIS DRIBU DATUM EVENTS (2) FLAG TABLE 033240 0 0 31 033241 GROSS ERROR PROBABILITY NUMERIC 3 0 10 033242 GROSS ERROR INDICATOR CODE TABLE 33242 0 0 2 033243 VARIATIONAL ANALYSIS TEMP DATUM EVENTS (2) FLAG TABLE 33243 0 0 31 033244 VARIATIONAL ANALYSIS PILOT DATUM EVENTS (2) FLAG TABLE 033244 0 0 31 033245 VARIATIONAL ANALYSIS SATEM/TOVS DATUM EVENTS (2) FLAG TABLE 33245 0 0 31 033246 VARIATIONAL ANALYSIS PAOB DATUM EVENTS (2) FLAG TABLE 33246 0 0 31 033247 VARIATIONAL ANALYSIS SCATTEROMETER DATUM EVENTS (2) FLAG TABLE 33247 0 0 31 033248 VARIATIONAL ANALYSIS RAW RADIANCES DATUM EVENTS (2) FLAG TABLE 33248 0 0 31 033249 DATUM BLACK LIST EVENTS FLAG TABLE 33249 0 0 31 033250 PROBABILITY OF GROSS ERROR NUMERIC 6 0 20 033251 RANGE OF POSSIBLE VALUES NUMERIC 2 0 14 033252 MANUAL-AUTOMATIC QUALITY CONTROL CODE TABLE 33252 0 0 4 033253 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 033254 WIND CORRELATION METHOD FLAG TABLE 33254 0 0 20 035000 FM AND REGIONAL CODE NUMBER CODE TABLE 035000 0 0 10 035001 TIME-FRAME FOR MONITORING CODE TABLE 035001 0 0 3 035011 NUMBER OF REPORTS ACTUALLY RECEIVED NUMERIC 0 0 14 035021 BULLETIN BEING MONITORED (TTAAII) CCITTIA5 0 0 48 035022 BULLETIN BEING MONITORED (YYGGGG) CCITTIA5 0 0 48 035023 BULLETIN BEING MONITORED (CCCC) CCITTIA5 0 0 32 035024 BULLETIN BEING MONITORED (BBB) CCITTIA5 0 0 24 035030 DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA CODE TABLE 035030 0 0 4 035031 QUALIFIER ON MONITORING RESULTS CODE TABLE 035031 0 0 7 035032 CAUSE OF MISSING DATA CODE TABLE 035032 0 0 4 035033 OBSERVATION AND COLLECTION DEFICIENCIES CODE TABLE 035033 0 0 7 035034 STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY P CODE TABLE 035034 0 0 3 049193 SAR INVERSION QC FLAGS FLAG TABLE 49193 0 0 15 049194 ALTIMETER WAVE HEIGHT QC FLAFS FLAG TABLE 49194 0 0 15 062190 STATISTICS APPLICATION CODE TABLE 62190 0 0 8 062191 TYPE OF STATISTICS CODE TABLE 62191 0 0 8 063190 APPLICATION DERIVING SUBSTITUTE OR ALTERNATIVE VALUE CODE TABLE 63190 0 0 8 dballe-7.21/extra/aof/0000755000175000017500000000000013022043102011542 500000000000000dballe-7.21/extra/aof/err1.aof0000644000175000017500000000056413022043102013027 000000000000008 âg2Mÿÿÿ<ÿÿÿÿÿÿÿÿÿ8D4âg2Mÿÿÿÿÿÿ<S”°wS”°wÿÿÿÿÿÿÿÿÿDlÿÿÿÿÿÿÿÿÿôN6OGg@2ÜÁaÔ A©´ ÿÿÿÿÿÿéÿ‚ Ä$J ÿÿÿ‚ÿÿÿllÿÿÿÿÿÿÿÿÿôN6OGg@2ÜÁaÔ A©´ ÿÿÿÿÿÿéÿ‚ )$< ÿÿÿ‚ÿÿÿldballe-7.21/extra/aof/confship.aof0000644000175000017500000000044013022043102013760 000000000000008 ài2›ÿÿÿ<ÿÿÿÿÿÿÿÿÿ8Dài2›ÿÿÿÿÿÿ<0=¢w0=¢wÿÿÿÿÿÿÿÿÿDŒ#ÿÿÿÿÿÿÿÿÿJ8¾F,C2Îd3ز ÿÿÿèéÿ? ^(6 õ ÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿ‡ÿÿÿŒdballe-7.21/extra/aof/aof_28-2-144.aof0000644000175000017500000000040413022043102013672 000000000000008 g2Iÿÿÿ<ÿÿÿÿÿÿÿÿÿ8D4g2Iÿÿÿÿÿÿ<Mt°wMt°wÿÿÿÿÿÿÿÿÿDpÿÿÿÿÿÿÿÿÿº7 Hg2„ªÕ"´ ÿÿÿÿÿÿéÿ€ m¹½ ® ÿÿÿ‚ÿÿÿpdballe-7.21/extra/aof/aof_28-2-244.aof0000644000175000017500000000040413022043102013673 000000000000008 g2Iÿÿÿ<ÿÿÿÿÿÿÿÿÿ8D4g2Iÿÿÿÿÿÿ<Mt°wMt°wÿÿÿÿÿÿÿÿÿDpÿÿÿÿÿÿÿÿÿô 8ªFg2„£C&1A)Lÿÿÿÿÿÿéÿ?‚ - Ï/êÿÿÿÿÿÿ‚ÿÿÿpdballe-7.21/extra/aof/obs5-36.30.aof0000644000175000017500000000364413022043102013477 000000000000008 1ôQúÿÿÿ<ÿÿÿÿÿÿÿÿÿ8D41ôQúÿÿÿÿÿÿÝBí1ͪ°°0,1ÿÿÿñ?ÿé ‚'82 › Uñ ‚'2 ¡  ‚%bFÿÿÿÿÿÿÿÿÿ $"< c 'v ‚#Œ7ÿÿÿÿÿÿÿÿÿ "ˆAÿÿÿÿÿÿÿÿÿ!ÀA ÿÿÿÿÿÿÿÿÿ !42 '   ‚ €# ÿÿÿÿÿÿÿÿÿ  & ÿÿÿÿÿÿÿÿÿ êÿÿÿÿÿÿ ù 0 ‚¤ÿÿÿÿÿÿ  Õ p ‚T# ÿÿÿÿÿÿÿÿÿ @# ÿÿÿÿÿÿÿÿÿªÿÿÿÿÿÿ  e ] ‚âÿÿÿÿÿÿÿÿÿ °ÿÿÿÿÿÿ _ Q ‚¨h ÿÿÿÿÿÿÿÿÿ X^ Ý µ ‚¸ÿÿÿÿÿÿ Í }a ‚Jÿÿÿÿÿÿ ë }Ø ‚;ÿÿÿÿÿÿÿÿÿ Œ,ÿÿÿÿÿÿÿÿÿ p1 ÿÿÿÿÿÿÿÿÿ>ÿÿÿÿÿÿ µ ec ‚r6 ÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ / ‚ˆ' o E ‚f ÿÿÿÿÿÿÿÿÿ Šÿÿÿÿÿÿ -ý5 ‚  íÿÿÿJ Œ ÿÿÿÿÿÿÿÿÿ âÿÿÿÿÿÿÏÿÿÿˆ Äÿÿÿÿÿÿÿÿÿ jÿÿÿÿÿÿÁÿÿÿ [  ÿÿÿÿÿÿ¯ÿÿÿ"¿  ¸ —ÿÿÿ%¤  ¤ •ÿÿÿ%È"  P" ÿÿÿÿÿÿÿÿÿ  Ä •ÿÿÿ*7  t' ÿÿÿÿÿÿÿÿÿ 4ÿÿÿÿÿÿ£ÿÿÿ.›  " ÿÿÿÿÿÿÿÿÿ Ð ÿÿÿ/Ø v ÿÿÿÿÿÿÿÿÿ "' ÿÿÿÿÿÿÿÿÿ Ü' ÿÿÿ7 n ÿÿÿÿÿÿÿÿÿ èuÿÿÿA3 6 ÿÿÿÿÿÿÿÿÿB¼6 mÿÿÿIþ‚ S1 ÿÿÿÿÿÿÿÿÿBô; aÿÿÿRG‚ äÿÿÿÿÿÿcÿÿÿÿÿÿ@›1ÿÿÿÿÿÿÿÿÿBl@!ÿÿÿÿÿÿbTÿÿÿÿÿÿ3ÿÿÿÿÿÿ@SOÿÿÿÿÿÿÿÿÿB,O%ÿÿÿ^—‚  JÿÿÿÿÿÿÿÿÿBÝJÿÿÿÿÿÿÿÿÿBÈTÿÿÿÿh+‚ ¿Y÷ÿÿÿÿÿÿBÿÿÿ0dballe-7.21/extra/aof/obs6-32.1573.aof0000644000175000017500000000106413022043102013643 000000000000008 1ôQúÿÿÿ<ÿÿÿÿÿÿÿÿÿ8D41ôQúÿÿÿÿÿÿ–A A!ÀÒûê[Ìšf€Mˆë „Ñÿþ& ¬ ÿÿÄÁ‘8„ÿøÀs@ƒÿÿBîÿäBlNÀÿüˆR‰ÄAÿÿ‘ Pú?ÿñÑqÿþXÁô ÿÿȃ +ÄÿøèZèƒÿÿvÿÀP€ÌB„!B‚1€ F4hÑ£F\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ\hÑ¥Æ4hÑ£7777dballe-7.21/extra/aof/obs1-14.63.aof0000644000175000017500000000043013022043102013463 000000000000008 1ôQúÿÿÿ<ÿÿÿÿÿÿÿÿÿ8D41ôQúÿÿÿÿÿÿXMG1ͪ°°0,µÿÿÿö?ÿé  ‚ÿÿÿ  Õ ¬ÿÿÿÿÿÿÿÿÿÿÿÿH ‚APÿÿÿ„dballe-7.21/extra/aof/obs1-24.2104.bufr0000644000175000017500000000030613022043102014015 00000000000000BUFRÆb€   4 }Ky€G£Øeư61001 ÆyŽ@yŒ\F€È  Å–A" A"!X61001 ê[Ì âJçÿóº¾NÈ‹®ÿÿÿÿÿÁÿÿ÷¾Yÿÿ‚€ Ñ£F4hÖ­F6|hÒ¥F4hÑ£F—>|hÑ€7777dballe-7.21/extra/aof/obs2-144.2198.aof0000644000175000017500000000040013022043102013720 000000000000008 1ôQúÿÿÿ<ÿÿÿÿÿÿÿÿÿ8D41ôQúÿÿÿÿÿÿ2‰XÿÿÿÿÈÁ-! 1Ñ8ð(#Œÿÿÿÿÿ„´Q¿ÿÿÿÿä–‡ÿÿÿÿü‚š HQ=Œâ_ÿÿÿÿñ7@L ÿÿÿÿþçú‚î(.~ÿþý @?½ίÿÿßTÿÿÿÿÿ„è¿ÿÿÿÿâ0‚z¨ #~ƒå—ÿÿîñÿÿÿÿÿBùÛ€œê •ÿÿÿ·P ÿÿÿÿÿhæÖ §vckÀðÕÀ@ftæËïÿÿÚJ Cž¹}ÿÿûAÀ¿ÿÿÿÿó°Ff0ÿÿÿÿþX ¸ÿÿÿÿÿÌAisà ɵ–_ÿÿªä ÿÿÿÿÿ6…C‚ÞfvAÿÿþœB¬,·È œfÿÿÿÿÿ‡Ò1A Ò[¿ÿÿ>m®;þÆÿÿÿÿÿÂBî Ê8Ïÿÿÿÿˆ ÿÿÿÿÿ cš‚\cÿÿÿþi@þLWÿÿÿÿ˸@"Ÿ‰ÿŒqt…Xq+ÿñÐn)@ÿÿÿÿþD Dâ įÿÇA—@_ÿÿÿÿù87hVÑÿÿÿòÿÿÿÿä@´>‚düNÿüt‡vÿÿÿÿÿ‰ƒpÄ@¿ÿÿÿÿòp‚qÎÖ#þN·ÿÿÿÿÿƸ>„ÃÚuÿøèF ÿÿÿÿÿ6 ¯á·ÿæÀܘ/ÿÿÿÿüÄô@N^†ÿƒÀÿóœ¾NÈK®OãèZÿÿÁÿÿ÷¾ÿÿ‚€ Ñ£F4hÖ­F6|hÔ&ÆŸV4hÑ£F—>|hÑ€7777dballe-7.21/extra/aof/obs1-14.63.bufr0000644000175000017500000000033413022043102013657 00000000000000BUFRÜb€  4}Ky€KwVyÃà01015 Üy†¦y†F€Ç  –A1 A1!n©o0œ>[º°{ÿÿÿÿÿP%jÕgÿÿÿÿÿàÿÿûßÿÿø_ÿÿÿÿÿÿÿÿÿÿÿð hÑ£F4hÑ£F4iR£F4hÑ£KŸ>4hÑ£F4hÑ£F4`7777dballe-7.21/extra/aof/obs2-244.0.aof0000644000175000017500000000040013022043102013455 000000000000008 2ݼÿÿÿ<ÿÿÿÿÿÿÿÿÿ8D42ݼÿÿÿÿÿÿ‚g¼Lÿûü-Šÿÿÿÿÿ}@äÁãÑ[ÿÿÿÿÐÿÿÿÿþÃMŠÄ?ÿÿÿü]Ä@؉ÿø˜K ÿÿÿÿÿÁ$ÿÿÿÿå@#/ÿÿÿÿüœ „.ÿÿÿÿÿŒ°} ‡¼°Óÿò – ÜÿÿÿÿþDÿÿÿÿÿÉÂÐ.à_ÿÿÿÿùØP’‹Ïÿÿÿÿð¯™àïÿæÀðÈ/ÿÿÿÿüØKJ‚„ßÿÿÿøEà¿ÿÿÿÿô ŒÑ9¢ÿþŠ€æÿÿÿÿÿÍ‚¨`_ÿÿÿÿûnX€´|ÿ?ÿ^`Jžß×ÿÿÿþÀBô\ÿÿÿÿÀÈ@c—?ÿªÀA ï»ÿÿÿÿÄÿÿÿÿþ¨$@V†3a>ÏÿÕˆ=àÀ ÀÀ áà@çp8C‡páÀá8áÀÄp ÄhÑ£FbÄhÑ£F4¸Ñ£F4hÒãF”iQ£F.4hÑ¥Æ4¸Ñ£R*4hÑ¥Æ5(Ò£F\hÑ£K4iq£F.4hÑ©F•4hÒãFJ4¨Ñ£O4hÒãF>4hÑ£R*4hÒãFJ4¨Ñ£K4¸Ñ£R*4hÒãF.4hÒãF.4hÔ£J4¸Ñ£K4¸Ñ£K5(Ò£F.4hÒãF.4hÒãFJ4¨Ñ£K4¸Ñ£K5(Ò£F.4hÒãFJ4¨Ñ£K4¸Ñ£R*4hÒãF.4hÓãF07777dballe-7.21/extra/test-crex-table.txt0000644000175000017500000044750413022043102014477 00000000000000 000001 TABLE A: ENTRY CCITTIA5 0 0 24 CHARACTER 0 3 000002 TABLE A: DATA CATEGORY DESCRIPTION, LINE 1 CCITTIA5 0 0 256 CHARACTER 0 32 000003 TABLE A: DATA CATEGORY DESCRIPTION, LINE 2 CCITTIA5 0 0 256 CHARACTER 0 32 000005 BUFR/CREX EDITION NUMBER CCITTIA5 0 0 24 CHARACTER 0 3 000010 F DESCRIPTOR TO BE ADDED OR DEFINED CCITTIA5 0 0 8 CHARACTER 0 1 000011 X DESCRIPTOR TO BE ADDED OR DEFINED CCITTIA5 0 0 16 CHARACTER 0 2 000012 Y DESCRIPTOR TO BE ADDED OR DEFINED CCITTIA5 0 0 24 CHARACTER 0 3 000013 ELEMENT NAME, LINE 1 CCITTIA5 0 0 256 CHARACTER 0 32 000014 ELEMENT NAME, LINE 2 CCITTIA5 0 0 256 CHARACTER 0 32 000015 UNITS NAME CCITTIA5 0 0 192 CHARACTER 0 24 000016 UNITS SCALE SIGN CCITTIA5 0 0 8 CHARACTER 0 1 000017 UNITS SCALE CCITTIA5 0 0 24 CHARACTER 0 3 000018 UNITS REFERENCE SIGN CCITTIA5 0 0 8 CHARACTER 0 1 000019 UNITS REFERENCE VALUE CCITTIA5 0 0 80 CHARACTER 0 10 000020 ELEMENT DATA WIDTH CCITTIA5 0 0 24 CHARACTER 0 3 000030 DESCRIPTOR DEFINING SEQUENCE CCITTIA5 0 0 48 CHARACTER 0 6 001001 WMO BLOCK NUMBER NUMERIC 0 0 7 NUMERIC 0 2 001002 WMO STATION NUMBER NUMERIC 0 0 10 NUMERIC 0 3 001003 WMO REGION NUMBER/GEOGRAPHICAL AREA CODE TABLE 1003 0 0 3 CODE TABLE 1003 0 1 001004 WMO REGION SUB-AREA (SEE NOTE 9) NUMERIC 0 0 3 NUMERIC 0 1 001005 BUOY/PLATFORM IDENTIFIER NUMERIC 0 0 17 NUMERIC 0 5 001006 AIRCRAFT FLIGHT NUMBER CCITTIA5 0 0 64 CHARACTER 0 8 001007 SATELLITE IDENTIFIER CODE TABLE 1007 0 0 10 CODE TABLE 1007 0 4 001008 AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION CCITTIA5 0 0 64 CHARACTER 0 8 001009 TYPE OF COMMERCIAL AIRCRAFT CCITTIA5 0 0 64 CHARACTER 0 8 001010 STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS CCITTIA5 0 0 64 CHARACTER 0 8 001011 SHIP OR MOBILE LAND STATION IDENTIFIER CCITTIA5 0 0 72 CHARACTER 0 9 001012 DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM** DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 001013 SPEED OF MOTION OF MOVING OBSERVING PLATFORM* M/S 0 0 10 M/S 0 3 001014 PLATFORM DRIFT SPEED (HIGH PRECISION) M/S 2 0 10 M/S 2 4 001015 STATION OR SITE NAME CCITTIA5 0 0 160 CHARACTER 0 20 001018 SHORT STATION OR SITE NAME CCITTIA5 0 0 40 CHARACTER 0 5 001019 LONG STATION OR SITE NAME CCITTIA5 0 0 256 CHARACTER 0 32 001020 WMO REGION SUB-AREA NUMERIC 0 0 4 NUMERIC 0 2 001021 SYNOPTIC FEATURE IDENTIFIER NUMERIC 0 0 14 NUMERIC 0 4 001022 NAME OF FEATURE (SEE NOTE 11) CCITTIA5 0 0 224 CHARACTER 0 28 001023 OBSERVATION SEQUENCE NUMBER NUMERIC 0 0 9 NUMERIC 0 3 001025 STORM IDENTIFIER CCITTIA5 0 0 24 CHARACTER 0 3 001026 WMO STORM NAME CCITTIA5 0 0 64 CHARACTER 0 8 001027 WMO LONG STORM NAME CCITTIA5 0 0 80 CHARACTER 0 10 001031 IDENTIFICATION OF ORIGINATING/GENERATING CENTRE (SEE NOTE 10) CODE TABLE 1031 0 0 16 CODE TABLE 1031 0 5 001032 GENERATING APPLICATION CODE TABLE 1032 0 0 8 CODE TABLE 1032 0 3 001033 IDENTIFICATION OF ORIGINATING/GENERATING CENTRE CODE TABLE 1022 0 0 8 CODE TABLE 1033 0 3 001034 IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE CODE TABLE 1034 0 0 8 CODE TABLE 1034 0 3 001035 ORIGINATING CENTRE CODE TABLE 1035 0 0 16 CODE TABLE 1035 0 5 001036 AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM CODE TABLE 1036 0 0 20 CODE TABLE 1036 0 7 001041 ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT (SEE NOTE 6) M/S 5 -1073741824 31 M/S 5 10 001042 ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT (SEE NOTE 6) M/S 5 -1073741824 31 M/S 5 10 001043 ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT (SEE NOTE 6) M/S 5 -1073741824 31 M/S 5 10 001050 PLATFORM TRANSMITTER ID NUMBER NUMERIC 0 0 17 NUMERIC 0 6 001051 PLATFORM TRANSMITTER ID NUMBER CCITTIA5 0 0 96 CHARACTER 0 12 001060 AIRCRAFT REPORTING POINT (BEACON IDENTIFIER) CCITTIA5 0 0 64 CHARACTER 0 8 001062 SHORT ICAO LOCATION INDICATOR CCITTIA5 0 0 32 CHARACTER 0 4 001063 ICAO LOCATION INDICATOR CCITTIA5 0 0 64 CHARACTER 0 8 001064 RUNWAY DESIGNATOR CCITTIA5 0 0 32 CHARACTER 0 4 001075 TIDE STATION IDENTIFICATION CCITTIA5 0 0 40 CHARACTER 0 5 001080 SHIP LINE NUMBER ACCORDING TO SOOP CCITTIA5 0 0 32 CHARACTER 0 4 001081 RADIOSONDE SERIAL NUMBER CCITTIA5 0 0 160 CHARACTER 0 20 001082 RADIOSONDE ASCENSION NUMBER (SEE NOTE 12) NUMERIC 0 0 14 NUMERIC 0 4 001083 RADIOSONDE RELEASE NUMBER (SEE NOTE 12) NUMERIC 0 0 3 NUMERIC 0 1 001085 OBSERVING PLATFORM MANUFACTURER'S MODEL CCITTIA5 0 0 160 CHARACTER 0 20 001086 OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER CCITTIA5 0 0 256 CHARACTER 0 32 001090 TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS CODE TABLE 1090 0 0 8 CODE TABLE 1090 0 3 001091 ENSEMBLE MEMBER NUMBER NUMERIC 0 0 10 NUMERIC 0 4 001092 TYPE OF ENSEMBLE FORECAST CODE TABLE 1092 0 0 8 CODE TABLE 1092 0 3 001093 BALLOON LOT NUMBER CCITTIA5 0 0 96 CHARACTER 0 12 001094 WBAN NUMBER NUMERIC 0 0 17 NUMERIC 0 5 001095 OBSERVER IDENTIFICATION CCITTIA5 0 0 32 CHARACTER 0 4 001196 CONSTANT LEVEL BALLOON IDENTIFIER CCITTIA5 0 0 72 CHARACTER 0 9 001197 RTP - PLATFORM TYPE CODE TABLE 1197 0 0 10 CODE TABLE 0 4 001198 ITP - DECK ID CODE TABLE 1198 0 0 10 CODE TABLE 0 4 001199 DUP - DUPLICATE STATUS CODE TABLE 1199 0 0 4 CODE TABLE 0 2 001201 GENERATING APPLICATION CODE TABLE 1201 0 0 8 CODE TABLE 0 3 001205 SATELLITE IDENTIFIER CODE TABLE 1205 0 0 10 CODE TABLE 0 4 001208 VELOCITY OF PLATFORM, X M/S 5 -1073741824 31 M/S 5 10 001209 VELOCITY OF PLATFORM, Y M/S 5 -1073741824 31 M/S 5 10 001210 VELOCITY OF PLATFORM, Z M/S 5 -1073741824 31 M/S 5 10 002001 TYPE OF STATION CODE TABLE 2001 0 0 2 CODE TABLE 2001 0 1 002002 TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT FLAG TABLE 2002 0 0 4 FLAG TABLE 2002 0 2 002003 TYPE OF MEASURING EQUIPMENT USED CODE TABLE 2003 0 0 4 CODE TABLE 2003 0 2 002004 TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C CODE TABLE 2004 0 0 4 CODE TABLE 2004 0 2 002005 PRECISION OF TEMPERATURE OBSERVATION K 2 0 7 K 2 3 002011 RADIOSONDE TYPE CODE TABLE 2011 0 0 8 CODE TABLE 2011 0 3 002012 RADIOSONDE COMPUTATIONAL METHOD CODE TABLE 2012 0 0 4 CODE TABLE 2012 0 2 002013 SOLAR AND INFRARED RADIATION CORRECTION CODE TABLE 2013 0 0 4 CODE TABLE 2013 0 2 002014 TRACKING TECHNIQUE/STATUS OF SYSTEM USED CODE TABLE 2014 0 0 7 CODE TABLE 2014 0 3 002015 RADIOSONDE COMPLETENESS CODE TABLE 2015 0 0 4 CODE TABLE 2015 0 2 002016 RADIOSONDE CONFIGURATION FLAG TABLE 2016 0 0 5 FLAG TABLE 2016 0 2 002019 SATELLITE INSTRUMENTS CODE TABLE 2019 0 0 11 CODE TABLE 2019 0 4 002020 SATELLITE CLASSIFICATION CODE TABLE 2020 0 0 9 CODE TABLE 2020 0 3 002021 SATELLITE INSTRUMENT DATA USED IN PROCESSING FLAG TABLE 2021 0 0 9 FLAG TABLE 2021 0 3 002022 SATELLITE DATA-PROCESSING TECHNIQUE USED FLAG TABLE 2022 0 0 8 FLAG TABLE 2022 0 3 002023 SATELLITE DERIVED WIND COMPUTATION METHOD CODE TABLE 2023 0 0 4 CODE TABLE 2023 0 2 002024 INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD CODE TABLE 2024 0 0 4 CODE TABLE 2024 0 2 002025 SATELLITE CHANNEL(S) USED IN COMPUTATION FLAG TABLE 2025 0 0 25 FLAG TABLE 2025 0 9 002026 CROSS TRACK RESOLUTION M 2 0 12 M 2 4 002027 ALONG TRACK RESOLUTION M 2 0 12 M 2 4 002028 SEGMENT SIZE AT NADIR IN X DIRECTION M 0 0 18 M 0 6 002029 SEGMENT SIZE AT NADIR IN Y DIRECTION M 0 0 18 M 0 6 002030 METHOD OF CURRENT MEASUREMENT CODE TABLE 2030 0 0 3 CODE TABLE 2030 0 1 002031 DURATION AND TIME OF CURRENT MEASUREMENT CODE TABLE 2031 0 0 5 CODE TABLE 2031 0 2 002032 INDICATOR FOR DIGITIZATION CODE TABLE 2032 0 0 2 CODE TABLE 2032 0 1 002033 METHOD OF SALINITY/DEPTH MEASUREMENT CODE TABLE 2033 0 0 3 CODE TABLE 2033 0 1 002034 DROGUE TYPE CODE TABLE 2034 0 0 5 CODE TABLE 2034 0 2 002035 CABLE LENGTH M 0 0 9 M 0 3 002036 BUOY TYPE CODE TABLE 2036 0 0 2 CODE TABLE 2036 0 1 002037 METHOD OF TIDAL OBSERVATION CODE TABLE 2037 0 0 3 CODE TABLE 2037 0 1 002038 METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT CODE TABLE 2038 0 0 4 CODE TABLE 2038 0 2 002039 METHOD OF WET-BULB TEMPERATURE MEASUREMENT CODE TABLE 2039 0 0 3 CODE TABLE 2039 0 1 002040 METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT CODE TABLE 2040 0 0 4 CODE TABLE 2040 0 2 002041 METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES CODE TABLE 2041 0 0 6 CODE TABLE 2041 0 2 002044 INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA CODE TABLE 2044 0 0 4 CODE TABLE 2044 0 2 002045 INDICATOR FOR TYPE OF PLATFORM CODE TABLE 2045 0 0 4 CODE TABLE 2045 0 2 002046 WAVE MEASUREMENT INSTRUMENTATION CODE TABLE 2046 0 0 4 CODE TABLE 2046 0 2 002048 SATELLITE SENSOR INDICATOR CODE TABLE 2048 0 0 4 CODE TABLE 2048 0 2 002049 GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED FLAG TABLE 2049 0 0 8 FLAG TABLE 2049 0 3 002050 GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED FLAG TABLE 2050 0 0 20 FLAG TABLE 2050 0 7 002051 INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES CODE TABLE 2051 0 0 4 CODE TABLE 2051 0 2 002052 GEOSTATIONARY IMAGER SATELLITE CHANNELS USED FLAG TABLE 2052 0 0 6 FLAG TABLE 2052 0 2 002053 GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS CODE TABLE 2053 0 0 4 CODE TABLE 2053 0 2 002054 GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS CODE TABLE 2054 0 0 4 CODE TABLE 2054 0 2 002055 GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS CODE TABLE 2055 0 0 4 CODE TABLE 2055 0 2 002056 GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS CODE TABLE 2056 0 0 4 CODE TABLE 2056 0 2 002057 ORIGIN OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS CODE TABLE 2057 0 0 4 CODE TABLE 2057 0 2 002058 VALID TIMES OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS CODE TABLE 2058 0 0 4 CODE TABLE 2058 0 2 002059 ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS CODE TABLE 2059 0 0 4 CODE TABLE 2059 0 2 002060 ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS CODE TABLE 2060 0 0 4 CODE TABLE 2060 0 2 002061 AIRCRAFT NAVIGATIONAL SYSTEM CODE TABLE 2061 0 0 3 CODE TABLE 2061 0 1 002062 TYPE OF AIRCRAFT DATA RELAY SYSTEM CODE TABLE 2062 0 0 4 CODE TABLE 2062 0 2 002063 AIRCRAFT ROLL ANGLE DEGREE 2 -18000 16 DEGREE 2 5 002064 AIRCRAFT ROLL ANGLE QUALITY CODE TABLE 2064 0 0 2 CODE TABLE 2064 0 1 002065 ACARS GROUND RECEIVING STATION CCITTIA5 0 0 40 CHARACTER 0 5 002066 RADIOSONDE GROUND RECEIVING SYSTEM CODE TABLE 2066 0 0 6 CODE TABLE 2066 0 2 002067 RADIOSONDE OPERATING FREQUENCY Hz -5 0 15 Hz -5 5 002070 ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE CODE TABLE 2070 0 0 4 CODE TABLE 2070 0 2 002080 BALLOON MANUFACTURER CODE TABLE 2080 0 0 6 CODE TABLE 2080 0 2 002081 TYPE OF BALLOON CODE TABLE 2081 0 0 5 CODE TABLE 2081 0 2 002082 WEIGHT OF BALLOON KG 3 0 12 KG 3 4 002083 TYPE OF BALLOON SHELTER CODE TABLE 2083 0 0 4 CODE TABLE 2083 0 2 002084 TYPE OF GAS USED IN BALLOON CODE TABLE 2084 0 0 4 CODE TABLE 2084 0 2 002085 AMOUNT OF GAS USED IN BALLOON KG 3 0 13 KG 3 4 002086 BALLOON FLIGHT TRAIN LENGTH M 1 0 10 M 1 4 002091 ENTRY SENSOR 4/20 MA A 4 0 10 A 4 3 002095 TYPE OF PRESSURE SENSOR CODE TABLE 2095 0 0 5 CODE TABLE 2095 0 2 002096 TYPE OF TEMPERATURE SENSOR CODE TABLE 2096 0 0 5 CODE TABLE 2096 0 2 002097 TYPE OF HUMIDITY SENSOR CODE TABLE 2097 0 0 5 CODE TABLE 2097 0 2 002100 RADAR CONSTANT dB 1 0 12 dB 1 4 002101 TYPE OF ANTENNA CODE TABLE 2101 0 0 4 CODE TABLE 2101 0 2 002102 ANTENNA HEIGHT ABOVE TOWER BASE M 0 0 8 M 0 3 002103 RADOME FLAG TABLE 2103 0 0 2 FLAG TABLE 2103 0 1 002104 ANTENNA POLARISATION CODE TABLE 2104 0 0 4 CODE TABLE 2104 0 2 002105 MAXIMUM ANTENNA GAIN dB 0 0 6 dB 0 2 002106 3-DB BEAMWIDTH DEGREE 1 0 6 DEGREE 1 2 002107 SIDELOBE SUPPRESSION dB 0 0 6 dB 0 2 002108 CROSSPOL DISCRIMINATION (ON AXIS) dB 0 0 6 dB 0 2 002109 ANTENNA SPEED (AZIMUTH) DEGREE/S 2 0 12 DEGREE/S 2 4 002110 ANTENNA SPEED (ELEVATION) DEGREE/S 2 0 12 DEGREE/S 2 4 002111 RADAR INCIDENCE ANGLE DEGREE 1 0 10 DEGREE 1 4 002112 RADAR LOOK ANGLE DEGREE 1 0 12 DEGREE 1 4 002113 NUMBER OF AZIMUTH LOOKS NUMERIC 0 0 4 NUMERIC 0 2 002114 ANTENNA EFFECTIVE SURFACE AREA M**2 0 0 15 M**2 0 5 002115 TYPE OF SURFACE OBSERVING EQUIPMENT CODE TABLE 2115 0 0 5 CODE TABLE 2115 0 2 002121 MEAN FREQUENCY Hz -8 0 7 Hz -8 3 002122 FREQUENCY AGILITY RANGE Hz -6 -128 8 Hz -6 3 002123 PEAK POWER W -4 0 7 W -4 3 002124 AVERAGE POWER W -1 0 7 W -1 3 002125 PULSE REPETITION FREQUENCY Hz -1 0 8 Hz -1 3 002126 PULSE WIDTH S 7 0 6 S 7 2 002127 RECEIVER INTERMEDIATE FREQUENCY Hz -6 0 7 Hz -6 3 002128 INTERMEDIATE FREQUENCY BANDWIDTH Hz -5 0 6 Hz -5 2 002129 MINIMUM DETECTABLE SIGNAL dB 0 -150 5 dB 0 3 002130 DYNAMIC RANGE dB 0 0 7 dB 0 3 002131 SENSITIVITY TIME CONTROL (STC) FLAG TABLE 2131 0 0 2 FLAG TABLE 2131 0 1 002132 AZIMUTH POINTING ACCURACY DEGREE 2 0 6 DEGREE 2 2 002133 ELEVATION POINTING ACCURACY DEGREE 2 0 6 DEGREE 2 2 002134 ANTENNA BEAM AZIMUTH DEGREE 2 0 16 DEGREE 2 5 002135 ANTENNA ELEVATION DEGREE 2 -9000 15 DEGREE 2 5 002136 RANGE PROCESSED BY RANGE ATTENUATION CORRECTION M -3 0 16 M -3 5 002140 SATELLITE RADAR BEAM AZIMUTH ANGLE DEGREE 0 0 9 DEGREE 0 3 002141 MEASUREMENT TYPE CCITTIA5 0 0 24 CHARACTER 0 3 002142 OZONE INSTRUMENT SERIAL NUMBER/ IDENTIFICATION CCITTIA5 0 0 32 CHARACTER 0 4 002143 OZONE INSTRUMENT TYPE CODE TABLE 2143 0 0 7 CODE TABLE 2143 0 3 002144 LIGHT SOURCE TYPE FOR BREWER SPECTRO PHOTOMETER CODE TABLE 2144 0 0 4 CODE TABLE 2144 0 2 002145 WAVE LENGTH SETTING FOR DOBSON INSTRUMENTS CODE TABLE 2145 0 0 4 CODE TABLE 2145 0 2 002146 SOURCE CONDITIONS FOR DOBSON INSTRUMENTS CODE TABLE 2146 0 0 4 CODE TABLE 2146 0 2 002148 DATA COLLECTION AND/OR LOCATION SYSTEM CODE TABLE 2148 0 0 5 CODE TABLE 2148 0 2 002149 TYPE OF DATA BUOY CODE TABLE 2149 0 0 6 CODE TABLE 2149 0 2 002150 TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER CODE TABLE 2150 0 0 6 CODE TABLE 2150 0 2 002151 RADIOMETER IDENTIFIER CODE TABLE 2151 0 0 11 CODE TABLE 2151 0 4 002152 SATELLITE INSTRUMENT USED IN DATA PROCESSING(6) FLAG TABLE 2152 0 0 31 FLAG TABLE 2152 0 10 002153 SATELLITE CHANNEL CENTRE FREQUENCY Hz -8 0 26 Hz -8 8 002154 SATELLITE CHANNEL BAND WIDTH Hz -8 0 26 Hz -8 8 002163 HEIGHT ASSIGNMENT METHOD CODE TABLE 2163 0 0 4 CODE TABLE 2163 0 2 002164 TRACER CORRELATION METHOD CODE TABLE 2164 0 0 3 CODE TABLE 2164 0 1 002166 RADIANCE TYPE CODE TABLE 2166 0 0 4 CODE TABLE 2166 0 2 002167 RADIANCE COMPUTATIONAL METHOD CODE TABLE 2167 0 0 4 CODE TABLE 2167 0 2 002168 HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING) PA -3 0 16 KPA 0 5 002169 ANEMOMETER TYPE CODE TABLE 2169 0 0 4 CODE TABLE 2169 0 2 002172 PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES CODE TABLE 2172 0 0 8 CODE TABLE 2172 0 3 002173 SQUARE OF THE OFF NADIR ANGLE (7) DEGREE2 4 0 10 DEGREE2 4 4 002175 METHOD OF PRECIPITATION MEASUREMENT CODE TABLE 2175 0 0 4 CODE TABLE 2175 0 2 002176 METHOD OF STATE OF GROUND MEASUREMENT CODE TABLE 2176 0 0 4 CODE TABLE 2176 0 2 002177 METHOD OF SNOW DEPTH MEASUREMENT CODE TABLE 2177 0 0 4 CODE TABLE 2177 0 2 002178 METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION CODE TABLE 2178 0 0 4 CODE TABLE 2178 0 2 002179 TYPE OF SKY CONDITION ALGORITHM CODE TABLE 2179 0 0 4 CODE TABLE 2179 0 2 002180 MAIN PRESENT WEATHER DETECTING SYSTEM CODE TABLE 2180 0 0 4 CODE TABLE 2180 0 2 002181 SUPPLEMENTARY PRESENT WEATHER SENSOR FLAG TABLE 2181 0 0 21 FLAG TABLE 2181 0 7 002182 VISIBILITY MEASUREMENT SYSTEM CODE TABLE 2182 0 0 4 CODE TABLE 2182 0 2 002183 CLOUD DETECTION SYSTEM CODE TABLE 2183 0 0 4 CODE TABLE 2183 0 2 002184 TYPE OF LIGHTNING DETECTION SENSOR CODE TABLE 2184 0 0 4 CODE TABLE 2184 0 2 002185 METHOD OF EVAPORATION MEASUREMENT CODE TABLE 2185 0 0 4 CODE TABLE 2185 0 2 002186 CAPABILITY TO DETECT PRECIPITATION PHENOMENA FLAG TABLE 2186 0 0 30 FLAG TABLE 2186 0 10 002187 CAPABILITY TO DETECT OTHER WEATHER PHENOMENA FLAG TABLE 2187 0 0 18 FLAG TABLE 2187 0 6 002188 CAPABILITY TO DETECT OBSCURATION FLAG TABLE 2188 0 0 21 FLAG TABLE 2188 0 7 002189 CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES FLAG TABLE 2189 0 0 12 FLAG TABLE 2189 0 4 002190 LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED) % 0 0 7 % 0 3 002196 SATELLITE CLASSIFICATION CODE TABLE 2196 0 0 9 CODE TABLE 0 3 002197 SATELLITE CHANNEL CENTRE FREQUENCY Hz -8 0 26 Hz -8 8 002198 SATELLITE CHANNEL BAND WIDTH Hz -8 0 26 Hz -8 8 002199 INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD CODE TABLE 2199 0 0 4 CODE TABLE 0 2 002221 SEGMENT SIZE AT NADIR IN X DIRECTION M 0 0 18 M 0 6 002222 SEGMENT SIZE AT NADIR IN Y DIRECTION M 0 0 18 M 0 6 002231 HEIGHT ASSIGNMENT METHOD CODE TABLE 2231 0 0 4 CODE TABLE 0 2 002232 TRACER CORRELATION METHOD CODE TABLE 2232 0 0 3 CODE TABLE 0 1 002251 RADIANCE COMPUTATIONAL METHOD CODE TABLE 2251 0 0 4 CODE TABLE 0 2 002252 SATELLITE INSTRUMENT DATA USED IN PROCESSING FLAG TABLE 2252 0 0 31 FLAG TABLE 0 10 002253 HUMIDITY COMPUTATIONAL METHOD CODE TABLE 2253 0 0 8 CODE TABLE 0 3 002254 RADIANCE TYPE CODE TABLE 2254 0 0 4 CODE TABLE 0 2 004001 YEAR YEAR 0 0 12 YEAR 0 4 004002 MONTH MONTH 0 0 4 MONTH 0 2 004003 DAY DAY 0 0 6 DAY 0 2 004004 HOUR HOUR 0 0 5 HOUR 0 2 004005 MINUTE MINUTE 0 0 6 MINUTE 0 2 004006 SECOND SECOND 0 0 6 SECOND 0 2 004007 SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY) SECOND 6 0 26 SECOND 6 8 004011 TIME INCREMENT YEAR 0 -1024 11 YEAR 0 4 004012 TIME INCREMENT MONTH 0 -1024 11 MONTH 0 4 004013 TIME INCREMENT DAY 0 -1024 11 DAY 0 4 004014 TIME INCREMENT HOUR 0 -1024 11 HOUR 0 4 004015 TIME INCREMENT MINUTE 0 -2048 12 MINUTE 0 4 004016 TIME INCREMENT SECOND 0 -4096 13 SECOND 0 4 004017 REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA MINUTE 0 -1440 12 MINUTE 0 4 004021 TIME PERIOD OR DISPLACEMENT YEAR 0 -1024 11 YEAR 0 4 004022 TIME PERIOD OR DISPLACEMENT MONTH 0 -1024 11 MONTH 0 4 004023 TIME PERIOD OR DISPLACEMENT DAY 0 -1024 11 DAY 0 4 004024 TIME PERIOD OR DISPLACEMENT HOUR 0 -2048 12 HOUR 0 4 004025 TIME PERIOD OR DISPLACEMENT MINUTE 0 -2048 12 MINUTE 0 4 004026 TIME PERIOD OR DISPLACEMENT SECOND 0 -4096 13 SECOND 0 4 004031 DURATION OF TIME RELATING TO FOLLOWING VALUE HOUR 0 0 8 HOUR 0 3 004032 DURATION OF TIME RELATING TO FOLLOWING VALUE MINUTE 0 0 6 MINUTE 0 2 004041 TIME DIFFERENCE, UTC -LMT (SEE NOTE 6) MINUTE 0 -1440 12 MINUTE 0 4 004043 DAY OF THE YEAR DAY 0 0 9 DAY 0 3 004051 PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE HOUR 0 0 5 HOUR 0 2 004052 PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE HOUR 0 0 5 HOUR 0 2 004053 NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM NUMERIC 0 0 6 NUMERIC 0 2 004059 TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES FLAG TABLE 4059 0 0 6 FLAG TABLE 4059 0 2 004065 SHORT TIME INCREMENT MINUTE 0 -128 8 MINUTE 0 2 004073 SHORT TIME PERIOD OR DISPLACEMENT DAY 0 -128 8 DAY 0 2 004074 SHORT TIME PERIOD OR DISPLACEMENT HOUR 0 -128 8 HOUR 0 2 004075 SHORT TIME PERIOD OR DISPLACEMENT MINUTE 0 -128 8 MINUTE 0 2 005001 LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 005002 LATITUDE (COARSE ACCURACY) DEGREE 2 -9000 15 DEGREE 2 4 005011 LATITUDE INCREMENT (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 005012 LATITUDE INCREMENT (COARSE ACCURACY) DEGREE 2 -9000 15 DEGREE 2 4 005021 BEARING OR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005022 SOLAR AZIMUTH DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 005030 DIRECTION (SPECTRAL) DEGREE 0 0 12 DEGREE 0 4 005031 ROW NUMBER NUMERIC 0 0 12 NUMERIC 0 4 005033 PIXEL SIZE ON HORIZONTAL - 1 M -1 0 16 M -1 5 005034 ALONG TRACK ROW NUMBER NUMERIC 0 0 11 NUMERIC 0 4 005036 SHIP TRANSECT NUMBER ACCORDING TO SOOP NUMERIC 0 0 7 NUMERIC 0 2 005040 ORBIT NUMBER NUMERIC 0 0 24 NUMERIC 0 8 005041 SCAN LINE NUMBER NUMERIC 0 0 8 NUMERIC 0 3 005042 CHANNEL NUMBER NUMERIC 0 0 6 NUMERIC 0 2 005043 FIELD OF VIEW NUMBER NUMERIC 0 0 8 NUMERIC 0 3 005044 SATELLITE CYCLE NUMBER NUMERIC 0 0 11 NUMERIC 0 4 005052 CHANNEL NUMBER INCREMENT NUMERIC 0 0 5 NUMERIC 0 2 005053 FIELD OF VIEW NUMBER INCREMENT NUMERIC 0 0 5 NUMERIC 0 2 006001 LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 006002 LONGITUDE (COARSE ACCURACY) DEGREE 2 -18000 16 DEGREE 2 5 006011 LONGITUDE INCREMENT (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 006012 LONGITUDE INCREMENT (COARSE ACCURACY) DEGREE 2 -18000 16 DEGREE 2 5 006021 DISTANCE M -1 0 13 M -1 4 006030 WAVE NUMBER (SPECTRAL) RAD/M 5 0 13 RAD/M 5 4 006031 COLUMN NUMBER NUMERIC 0 0 12 NUMERIC 0 4 006033 PIXEL SIZE ON HORIZONTAL - 2 M -1 0 16 M -1 5 006034 CROSS-TRACK CELL NUMBER NUMERIC 0 0 7 NUMERIC 0 3 006040 RADIUS OF CONFIDENCE M 0 0 13 M 0 4 007001 HEIGHT OF STATION (SEE NOTE 1) M 0 -400 15 M 0 5 007002 HEIGHT OR ALTITUDE M -1 -40 16 M -1 5 007003 GEOPOTENTIAL M**2/S**2 -1 -400 17 M**2/S**2 -1 6 007004 PRESSURE PA -1 0 14 PA -1 5 007005 HEIGHT INCREMENT M 0 -400 12 M 0 4 007006 HEIGHT ABOVE STATION M 0 0 15 M 0 5 007007 HEIGHT M 0 -1000 17 M 0 6 007008 GEOPOTENTIAL M**2/S**2 0 -10000 20 M**2/S**2 0 7 007009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 GPM 0 5 007010 FLIGHT LEVEL M 0 -1024 16 FT -1 5 007021 ELEVATION (SEE NOTE 2) DEGREE 2 -9000 15 DEGREE 2 5 007022 SOLAR ELEVATION DEGREE 2 -9000 15 DEGREE 2 5 007024 SATELLITE ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007025 SOLAR ZENITH ANGLE DEGREE 2 -9000 15 DEGREE 2 5 007030 HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3) M 1 - 4000 17 M 1 5 007031 HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4) M 1 - 4000 17 M 1 5 007032 HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) M 2 0 16 M 2 5 007033 HEIGHT OF SENSOR ABOVE WATER SURFACE (SEE NOTE 6) M 1 0 12 M 1 4 007061 DEPTH BELOW LAND SURFACE M 2 0 14 M 2 5 007062 DEPTH BELOW SEA/WATER SURFACE M 1 0 17 M 1 6 007064 HEIGHT ABOVE STATION (SENSOR HEIGHT ARTIFICIALLY CORRECTED) (SEE M 0 0 4 M 0 2 007070 DROGUE DEPTH M 0 0 10 M 0 4 008001 VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8001 0 0 7 FLAG TABLE 8001 0 3 008002 VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS) CODE TABLE 8002 0 0 6 CODE TABLE 8002 0 2 008003 VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS) CODE TABLE 8003 0 0 6 CODE TABLE 8003 0 2 008004 PHASE OF AIRCRAFT FLIGHT CODE TABLE 8004 0 0 3 CODE TABLE 8004 0 1 008005 METEOROLOGICAL ATTRIBUTE SIGNIFICANCE CODE TABLE 8005 0 0 4 CODE TABLE 8005 0 2 008006 OZONE VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8006 0 0 9 FLAG TABLE 8006 0 3 008007 DIMENSIONAL SIGNIFICANCE CODE TABLE 8007 0 0 4 CODE TABLE 8007 0 2 008008 RADIATION VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8008 0 0 9 FLAG TABLE 8008 0 3 008009 DETAILED PHASE OF FLIGHT CODE TABLE 8009 0 0 4 CODE TABLE 8009 0 2 008010 SURFACE QUALIFIER (TEMPERATURE DATA) CODE TABLE 8010 0 0 5 CODE TABLE 8010 0 2 008011 METEOROLOGICAL FEATURE CODE TABLE 8011 0 0 6 CODE TABLE 8011 0 2 008012 LAND/SEA QUALIFIER CODE TABLE 8012 0 0 2 CODE TABLE 8012 0 1 008013 DAY/NIGHT QUALIFIER CODE TABLE 8013 0 0 2 CODE TABLE 8013 0 1 008014 QUALIFIER FOR RUNWAY VISUAL RANGE CODE TABLE 8014 0 0 4 CODE TABLE 8014 0 2 008016 CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECA CODE TABLE 8016 0 0 3 CODE TABLE 8016 0 1 008017 QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED CODE TABLE 8017 0 0 2 CODE TABLE 8017 0 1 008018 SEAWINDS LAND/ICE SURFACE TYPE FLAG TABLE 8018 0 0 17 FLAG TABLE 8018 0 6 008020 TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION O NUMERIC 0 0 16 NUMERIC 0 5 008021 TIME SIGNIFICANCE CODE TABLE 8021 0 0 5 CODE TABLE 8021 0 2 008022 TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE) NUMERIC 0 0 16 NUMERIC 0 5 008023 FIRST ORDER STATISTICS CODE TABLE 8023 0 0 6 CODE TABLE 8023 0 2 008024 DIFFERENCE STATISTICS CODE TABLE 8024 0 0 6 CODE TABLE 8024 0 2 008025 TIME DIFFERENCE QUALIFIER CODE TABLE 8025 0 0 4 CODE TABLE 8025 0 2 008030 MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DA NUMERIC 0 0 13 NUMERIC 0 4 008031 DATA CATEGORY CREX TABLE A NUMERIC 0 0 8 NUMERIC 0 3 008033 METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE CODE TABLE 8033 0 0 7 CODE TABLE 8033 0 3 008035 TYPE OF MONITORING EXERCISE CODE TABLE 8035 0 0 3 CODE TABLE 8035 0 1 008036 TYPE OF CENTRE OR STATION PERFORMING MONITORING CODE TABLE 8036 0 0 3 CODE TABLE 8036 0 1 008040 FLIGHT LEVEL SIGNIFICANCE CODE TABLE 8040 0 0 6 CODE TABLE 8040 0 2 008041 DATA SIGNIFICANCE CODE TABLE 8041 0 0 5 CODE TABLE 8041 0 2 008050 QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST CODE TABLE 8050 0 0 4 CODE TABLE 8050 0 2 008051 QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST CODE TABLE 8051 0 0 3 CODE TABLE 8051 0 1 008052 CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS CODE TABLE 8052 0 0 5 CODE TABLE 8052 0 2 008053 DAY OF OCCURRENCE QUALIFIER CODE TABLE 8053 0 0 2 CODE TABLE 8053 0 1 008060 SAMPLE SCANNING MODE SIGNIFICANCE CODE TABLE 8060 0 0 4 CODE TABLE 8060 0 2 008070 TOVS/ATOVS PRODUCT QUALIFIER CODE TABLE 8070 0 0 4 CODE TABLE 8070 0 2 008072 PIXEL(S) TYPE CODE TABLE 8072 0 0 3 CODE TABLE 8072 0 1 008074 ALTIMETER ECHO TYPE CODE TABLE 8074 0 0 2 CODE TABLE 8074 0 1 008075 ASCENDING/DESCENDING ORBIT QUALIFIER CODE TABLE 8075 0 0 2 CODE TABLE 8075 0 1 008076 TYPE OF BAND CODE TABLE 8076 0 0 6 CODE TABLE 8076 0 2 008080 QUALIFIER FOR GTSSPP QUALITY FLAG CODE TABLE 8080 0 0 6 CODE TABLE 8080 0 2 008081 TYPE OF EQUIPMENT CODE TABLE 8081 0 0 6 CODE TABLE 8081 0 2 008082 ARTIFICIAL CORRECTION OF SENSOR HEIGHT TO ANOTHER VALUE CODE TABLE 8082 0 0 3 CODE TABLE 8082 0 1 010001 HEIGHT OF LAND SURFACE M 0 -400 15 M 0 5 010002 HEIGHT M -1 -40 16 M -1 5 010003 GEOPOTENTIAL M**2/S**2 -1 -400 17 M**2/S**2 -1 6 010004 PRESSURE PA -1 0 14 PA -1 5 010007 HEIGHT M 0 -1000 17 M 0 6 010008 GEOPOTENTIAL M**2/S**2 0 -10000 20 M**2/S**2 0 7 010009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 GPM 0 5 010010 MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5 010011 MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5 010031 IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE M 2 -1073741824 31 M 2 10 010040 NUMBER OF RETRIEVED LAYERS NUMERIC 0 0 10 NUMERIC 0 4 010050 STANDARD DEVIATION ALTITUDE M 2 0 16 M 2 5 010051 PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5 010052 ALTIMETER SETTING (QNH) PA -1 0 14 PA -1 5 010060 PRESSURE CHANGE PA -1 -1024 11 PA -1 4 010061 3-HOUR PRESSURE CHANGE PA -1 -500 10 PA -1 4 010062 24-HOUR PRESSURE CHANGE PA -1 -1000 11 PA -1 4 010063 CHARACTERISTIC OF PRESSURE TENDENCY CODE TABLE 10063 0 0 4 CODE TABLE 10063 0 2 010070 INDICATED AIRCRAFT ALTITUDE M 0 -400 16 M 0 5 010197 ANEMOMETER HEIGHT M 0 0 9 M 0 3 011001 WIND DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011002 WIND SPEED M/S 1 0 12 M/S 1 4 011003 U-COMPONENT M/S 1 -4096 13 M/S 1 4 011004 V-COMPONENT M/S 1 -4096 13 M/S 1 4 011005 W-COMPONENT PA/S 1 -512 10 PA/S 1 4 011006 W-COMPONENT M/S 2 -4096 13 M/S 2 4 011010 WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011011 WIND DIRECTION AT 10 M DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011012 WIND SPEED AT 10 M M/S 1 0 12 M/S 1 4 011013 WIND DIRECTION AT 5 M DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011014 WIND SPEED AT 5 M M/S 1 0 12 M/S 1 4 011016 EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011017 EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011019 STEADINESS OF WIND (6) % 0 0 7 % 0 3 011021 RELATIVE VORTICITY 1/S 9 -65536 17 1/S 9 6 011022 DIVERGENCE 1/S 9 -65536 17 1/S 9 6 011023 VELOCITY POTENTIAL M**2/S -2 -65536 17 M**2/S -2 6 011031 DEGREE OF TURBULENCE CODE TABLE 11031 0 0 4 CODE TABLE 11031 0 2 011032 HEIGHT OF BASE OF TURBULENCE M -1 -40 16 M -1 5 011033 HEIGHT OF TOP OF TURBULENCE M -1 -40 16 M -1 5 011034 VERTICAL GUST VELOCITY M/S 1 -1024 11 M/S 1 4 011035 VERTICAL GUST ACCELERATION M/S**2 2 -8192 14 M/S**2 2 5 011036 MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED M/S 1 0 10 M/S 1 4 011037 TURBULENCE INDEX CODE TABLE 11037 0 0 6 CODE TABLE 11037 0 2 011038 TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE CODE TABLE 11038 0 0 5 CODE TABLE 11038 0 2 011039 EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE CODE TABLE 11039 0 0 6 CODE TABLE 11039 0 2 011040 MAXIMUM WIND SPEED (MEAN WIND) M/S 1 0 12 M/S 1 4 011041 MAXIMUM WIND GUST SPEED M/S 1 0 12 M/S 1 4 011042 MAXIMUM WIND SPEED (10-MIN MEAN WIND) M/S 1 0 12 M/S 1 4 011043 MAXIMUM WIND GUST DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011044 MEAN WIND DIRECTION FOR SURFACE - 1500 M (5000 FEET) DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011045 MEAN WIND SPEED FOR SURFACE - 1500 M (5000 FEET) M/S 1 0 12 M/S 1 4 011046 MAXIMUM INSTANTANEOUS WIND SPEED M/S 1 0 12 M/S 1 4 011047 MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES M/S 1 0 12 M/S 1 4 011049 STANDARD DEVIATION OF WIND DIRECTION DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 011050 STANDARD DEVIATION OF HORIZONTAL WIND SPEED M/S 1 0 12 M/S 1 4 011051 STANDARD DEVIATION OF VERTICAL WIND SPEED M/S 1 0 8 M/S 1 3 011052 FORMAL UNCERTAINTY IN WIND SPEED M/S 2 0 13 M/S 2 5 011053 FORMAL UNCERTAINTY IN WIND DIRECTION DEGREE TRUE 2 0 15 DEGREE TRUE 2 5 011061 ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW M/S 1 0 12 M/S 1 4 011062 ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE M/S 1 0 12 M/S 1 4 011070 DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL) CCITTIA5 0 0 32 CHARACTER 0 4 011071 TURBULENT VERTICAL MOMENTUM FLUX M**2/S**2 3 -128 14 M**2/S**2 3 5 011072 TURBULENT VERTICAL BUOYANCY FLUX KM/S 3 -128 11 KM/S 3 4 011073 TURBULENT KINETIC ENERGY M**2/S**2 2 -1024 13 M**2/S**2 2 4 011074 DISSIPATION ENERGY M**2/S**2 2 -1024 10 M**2/S**2 2 4 011075 MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 M**(2/3)/S 2 3 011076 PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M**(2/3)/S 2 0 8 M**(2/3)/S 2 3 011077 REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE S 0 0 12 S 0 4 011081 MODEL WIND DIRECTION AT 10M DEGREE TRUE 2 0 16 DEGREE TRUE 2 5 011082 MODEL WIND SPEED AT 10M M/S 2 0 14 M/S 2 4 011230 MAXIMUM MEAN WIND SPEED M/S 1 -4096 13 M/S 1 4 011231 MEAN WIND SPEED M/S 1 -4096 13 M/S 1 4 011232 MINIMUM MEAN WIND SPEED M/S 1 -4096 13 M/S 1 4 011233 HIGHEST GUST DURING THE 10 MINUTE PERIOD PRECEDING OBSERVATION M/S 1 -4096 13 M/S 1 4 011233 HIGHEST GUST DURING THE 10 MINUTE PERIOD PRECEDING OBSERVATION M/S 1 -4096 13 M/S 1 4 012001 TEMPERATURE/DRY-BULB TEMPERATURE K 1 0 12 C 1 3 012002 WET-BULB TEMPERATURE K 1 0 12 C 1 3 012003 DEW-POINT TEMPERATURE K 1 0 12 C 1 3 012004 DRY-BULB TEMPERATURE AT 2 M K 1 0 12 C 1 3 012005 WET-BULB TEMPERATURE AT 2 M K 1 0 12 C 1 3 012006 DEW-POINT TEMPERATURE AT 2 M K 1 0 12 C 1 3 012007 VIRTUAL TEMPERATURE K 1 0 12 C 1 3 012011 MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED K 1 0 12 C 1 3 012012 MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED K 1 0 12 C 1 3 012013 GROUND MINIMUM TEMPERATURE, PAST 12 HOURS K 1 0 12 C 1 3 012014 MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS K 1 0 12 C 1 3 012015 MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS K 1 0 12 C 1 3 012016 MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS K 1 0 12 C 1 3 012017 MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS K 1 0 12 C 1 3 012021 MAXIMUM TEMPERATURE AT 2M K 2 0 16 C 2 4 012022 MINIMUM TEMPERATURE AT 2M K 2 0 16 C 2 4 012030 SOIL TEMPERATURE K 1 0 12 C 1 3 012051 STANDARD DEVIATION TEMPERATURE K 1 0 10 C 1 3 012052 HIGHEST DAILY MEAN TEMPERATURE K 1 0 12 C 1 3 012053 LOWEST DAILY MEAN TEMPERATURE K 1 0 12 C 1 3 012061 SKIN TEMPERATURE K 1 0 12 C 1 3 012062 EQUIVALENT BLACK BODY TEMPERATURE K 1 0 12 C 1 3 012063 BRIGHTNESS TEMPERATURE K 1 0 12 C 1 3 012064 INSTRUMENT TEMPERATURE K 1 0 12 K 1 4 012065 STANDARD DEVIATION BRIGHTNESS TEMPERATURE K 1 0 12 K 1 4 012070 WARM LOAD TEMPERATURE K 2 0 16 K 2 5 012071 COLDEST CLUSTER TEMPERATURE K 1 0 12 K 1 4 012072 RADIANCE WM**(-2)SR**(-1) 6 0 31 WM**(-2)SR**(-1) 6 9 012073 TEMPERATURE K 2 0 16 C 2 4 012075 SPECTRAL RADIANCE WM**(-3)SR**(-1) -3 0 16 WM**(-3)SR**(-1) -3 5 012076 RADIANCE WM**(-2)SR**(-1) 3 0 16 WM**(-2)SR**(-1) 3 5 012101 TEMPERATURE/DRY-BULB TEMPERATURE K 2 0 16 C 2 4 012102 WET-BULB TEMPERATURE K 2 0 16 C 2 4 012103 DEW-POINT TEMPERATURE K 2 0 16 C 2 4 012104 DRY-BULB TEMPERATURE AT 2M K 2 0 16 C 2 4 012105 WEB-BULB TEMPERATURE AT 2M K 2 0 16 C 2 4 012106 DEW-POINT TEMPERATURE AT 2M K 2 0 16 C 2 4 012107 VIRTUAL TEMPERATURE K 2 0 16 C 2 4 012111 MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED K 2 0 16 C 2 4 012112 MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED K 2 0 16 C 2 4 012113 GROUND MINIMUM TEMPERATURE, PAST 12 HOURS K 2 0 16 C 2 4 012114 MAXIMUM TEMPERATURE AT 2M, PAST 12 HOURS K 2 0 16 C 2 4 012115 MINIMUM TEMPERATURE AT 2M, PAST 12 HOURS K 2 0 16 C 2 4 012116 MAXIMUM TEMPERATURE AT 2M, PAST 24 HOURS K 2 0 16 C 2 4 012117 MINIMUM TEMPERATURE AT 2M, PAST 24 HOURS K 2 0 16 C 2 4 012118 MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS K 2 0 16 C 2 4 012119 MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS K 2 0 16 C 2 4 012130 SOIL TEMPERATURE K 2 0 16 C 2 4 012151 STANDARD DEVIATION OF DAILY MEAN TEMPERATURE K 2 0 12 C 2 4 012152 HIGHEST DAILY MEAN TEMPERATURE K 2 0 16 C 2 4 012153 LOWEST DAILY MEAN TEMPERATURE K 2 0 16 C 2 4 012161 SKIN TEMPERATURE K 2 0 16 C 2 4 012162 EQUIVALENT BLACK BODY TEMPERATURE K 2 0 16 C 2 4 012163 BRIGHTNESS TEMPERATURE K 2 0 16 C 2 4 012164 INSTRUMENT TEMPERATURE K 2 0 16 K 2 5 012171 COLDEST CLUSTER TEMPERATURE K 2 0 16 K 2 5 012193 COLDEST CLUSTER TEMPERATURE K 1 0 12 K 1 4 012194 RADIANCE W/M**2*STER*M**(-1) 6 0 31 W/M**2*STER*M**(-1) 6 10 012195 SPECTRAL RADIANCE W/M**2*STER*M**(-1) 10 0 31 W/M**2*STER*M**(-1) 10 10 012196 RADIANCE W/M**2*STER 3 0 16 W/M**2*STER 3 4 013001 SPECIFIC HUMIDITY KG/KG 5 0 14 KG/KG 5 5 013002 MIXING RATIO KG/KG 5 0 14 KG/KG 5 5 013003 RELATIVE HUMIDITY % 0 0 7 % 0 3 013004 VAPOUR PRESSURE PA -1 0 10 PA -1 4 013005 VAPOUR DENSITY KG/M**3 3 0 7 KG/M**3 3 3 013006 MIXING HEIGHTS M -1 -40 16 M -1 5 013007 MINIMUM RELATIVE HUMIDITY % 0 0 7 % 0 3 013008 MAXIMUM RELATIVE HUMIDITY % 0 0 7 % 0 3 013009 RELATIVE HUMIDITY % 1 -1000 12 % 1 4 013011 TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT KG/M**2 1 -1 14 KG/M**2 1 5 013012 DEPTH OF FRESH SNOW M 2 -2 12 M 2 4 013013 TOTAL SNOW DEPTH M 2 -2 16 M 2 5 013014 RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE) KG/(M**2)S 4 0 12 KG/(M**2)S 4 4 013015 SNOWFALL (AVERAGED RATE) M/S 7 0 12 M/S 7 4 013016 PRECIPITABLE WATER KG/M**2 0 0 7 KG/M**2 0 3 013019 TOTAL PRECIPITATION PAST 1 HOUR KG/M**2 1 -1 14 KG/M**2 1 4 013020 TOTAL PRECIPITATION PAST 3 HOURS KG/M**2 1 -1 14 KG/M**2 1 5 013021 TOTAL PRECIPITATION PAST 6 HOURS KG/M**2 1 -1 14 KG/M**2 1 5 013022 TOTAL PRECIPITATION PAST 12 HOURS KG/M**2 1 -1 14 KG/M**2 1 5 013023 TOTAL PRECIPITATION PAST 24 HOURS KG/M**2 1 -1 14 KG/M**2 1 5 013031 EVAPOTRANSPIRATION KG/M**2 0 0 7 KG/M**2 0 3 013032 EVAPORATION/EVAPOTRANSPIRATION KG/M**2 1 0 8 KG/M**2 1 3 013033 EVAPORATION/EVAPOTRANSPIRATION KG/M**2 1 0 10 KG/M**2 1 4 013038 SUPERADIABATIC INDICATOR CODE TABLE 13038 0 0 2 CODE TABLE 13038 0 1 013039 TERRAIN TYPE (ICE/SNOW) CODE TABLE 13039 0 0 3 CODE TABLE 13039 0 1 013040 SURFACE FLAG CODE TABLE 13040 0 0 4 CODE TABLE 13040 0 2 013041 PASQUILL-GIFFORD STABILITY CATEGORY CODE TABLE 13041 0 0 4 CODE TABLE 13041 0 2 013042 PARCEL LIFTED INDEX (TO 500 HPA) K 0 -20 6 K 0 2 013043 BEST LIFTED INDEX (TO 500 HPA) K 0 -20 6 K 0 2 013051 FREQUENCY GROUP, PRECIPITATION CODE TABLE 13051 0 0 4 CODE TABLE 13051 0 2 013052 HIGHEST DAILY AMOUNT OF PRECIPITATION KG/M**2 1 -1 14 KG/M**2 1 5 013055 INTENSITY OF PRECIPITATION KG/(M**2)S 4 0 8 MM H-1 1 4 013058 SIZE OF PRECIPITATING ELEMENT M 4 0 7 MM 1 3 013059 NUMBER OF FLASHES (THUNDERSTORM) NUMERIC 0 0 7 NUMERIC 0 3 013060 TOTAL ACCUMULATED PRECIPITATION KG/M**2 1 -1 17 KG/M**2 1 5 013071 UPSTREAM WATER LEVEL M 2 0 14 M 2 4 013072 DOWNSTREAM WATER LEVEL M 2 0 14 M 2 4 013073 MAXIMUM WATER LEVEL M 2 0 14 M 2 4 013080 WATER PH pH 1 0 10 pH 1 3 013081 WATER CONDUCTIVITY SIEMENS/M 3 0 14 SIEMENS/M 3 4 013082 WATER TEMPERATURE K 1 0 12 K 1 4 013083 DISSOLVED OXYGEN KG/M**3 6 0 15 KG/M**3 6 5 013084 TURBIDITY LUMEN 0 0 14 LUMEN 0 4 013085 OXYDATION REDUCTION POTENTIAL (ORP) V 3 0 14 V 3 4 013090 RADIOMETER WATER VAPOUR CONTENT KGM-2 1 0 10 KGM-2 1 4 013091 RADIOMETER LIQUID CONTENT KGM-2 2 0 8 KGM-2 2 3 014001 LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS J/M**2 -3 -2048 12 J/M**2 -3 4 014002 LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -3 -2048 12 J/M**2 -3 4 014003 SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS J/M**2 -3 -2048 12 J/M**2 -3 4 014004 SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -3 -2048 12 J/M**2 -3 4 014011 NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS J/M**2 -3 -2048 12 J/M**2 -3 4 014012 NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -3 -2048 12 J/M**2 -3 4 014013 NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS J/M**2 -3 -2048 12 J/M**2 -3 4 014014 NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -3 -2048 12 J/M**2 -3 4 014015 NET RADIATION, INTEGRATED OVER 24 HOURS J/M**2 -4 -16384 15 J/M**2 -4 5 014016 NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 -16384 15 J/M**2 -4 5 014017 INSTANTANEOUS LONG-WAVE RADIATION W/M**2 -3 -2048 12 W/M**2 -3 4 014018 INSTANTANEOUS SHORT-WAVE RADIATION W/M**2 -3 -2048 12 W/M**2 -3 4 014019 SURFACE ALBEDO % 0 0 7 % 0 3 014020 GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS J/M**2 -4 0 15 J/M**2 -4 5 014021 GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 J/M**2 -4 5 014022 DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS J/M**2 -4 0 15 J/M**2 -4 5 014023 DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 J/M**2 -4 5 014024 DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS J/M**2 -4 0 15 J/M**2 -4 5 014025 DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J/M**2 -4 0 15 J/M**2 -4 5 014026 ALBEDO AT THE TOP OF CLOUDS % 0 0 7 % 0 3 014027 ALBEDO % 0 0 7 % 0 3 014028 GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S J/M**2 -2 0 16 J/M**2 -2 5 014029 DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD J/M**2 -2 0 16 J/M**2 -2 5 014030 DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S J/M**2 -2 0 16 J/M**2 -2 5 014031 TOTAL SUNSHINE MINUTE 0 0 11 MINUTE 0 4 014032 TOTAL SUNSHINE HOUR 0 0 10 HOUR 0 4 014033 TOTAL SUNSHINE % 0 0 9 % 0 3 014034 SUNSHINE OVER PERIOD SPECIFIED MINUTE 0 0 11 MINUTE 0 4 014042 BI-DIRECTIONAL REFLECTANCE % 0 0 7 % 0 3 014045 CHANNEL RADIANCE (W/M**2)*(1/SR)*CM 0 0 11 WM-2SR-1CM-1 0 4 014050 EMISSIVITY (SEE NOTE 5) % 1 0 10 % 1 4 014051 DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR J/M**2 -3 0 14 JM-2 -3 4 015001 TOTAL OZONE DU 0 0 10 DU 0 4 015002 AIR MASS (SLANT PATH AT 22 KM) NUMERIC 2 0 10 NUMERIC 2 3 015003 MEASURED OZONE PARTIAL PRESSURE (SOUNDING) PA 4 0 9 NBAR 0 3 015004 OZONE SOUNDING CORRECTION FACTOR NUMERIC 3 0 11 NUMERIC 3 4 015005 OZONE P DU 0 0 10 DU 0 3 015011 LOG 10 OF INTEGRATED ELECTRON DENSITY LOG (1/M2) 3 14000 13 LOG (M-2) 3 4 015015 MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION NUMERIC 0 0 31 NUMERIC 0 10 015020 INTEGRATED 03 DENSITY KG/M**2 8 0 21 KG/M**2 8 7 015031 ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL M 4 10000 15 M 4 5 015032 ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY M 4 0 10 M 4 4 015033 DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN M 5 -10000 15 M 5 5 015034 ESTIMATED ERROR IN PATH DELAY DIFFERENCE M 5 0 14 M 5 5 015035 COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR M 4 0 14 M 4 5 019001 TYPE OF SYNOPTIC FEATURE CODE TABLE 19001 0 0 6 CODE TABLE 19001 0 2 019002 EFFECTIVE RADIUS OF FEATURE M -2 0 12 M -2 4 019003 WIND SPEED THRESHOLD M/S 0 0 8 M/S 0 3 019004 EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD M -2 0 12 M -2 4 019005 DIRECTION OF MOTION OF FEATURE DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 019006 SPEED OF MOTION OF FEATURE M/S 2 0 14 M/S 2 5 019007 EFFECTIVE RADIUS OF FEATURE M -3 0 12 M -3 4 019008 VERTICAL EXTENT OF CIRCULATION CODE TABLE 19008 0 0 3 CODE TABLE 19008 0 1 019009 EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LA M -3 0 12 M -3 4 019010 METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE CODE TABLE 19010 0 0 4 CODE TABLE 19010 0 2 020001 HORIZONTAL VISIBILITY M -1 0 13 M -1 4 020002 VERTICAL VISIBILITY M -1 0 7 M -1 3 020003 PRESENT WEATHER (SEE NOTE 1) CODE TABLE 20003 0 0 9 CODE TABLE 20003 0 3 020004 PAST WEATHER (1) (SEE NOTE 2) CODE TABLE 20004 0 0 5 CODE TABLE 20004 0 2 020005 PAST WEATHER (2) (SEE NOTE 2) CODE TABLE 20005 0 0 5 CODE TABLE 20005 0 2 020008 CLOUD DISTRIBUTION FOR AVIATION CODE TABLE 20008 0 0 5 CODE TABLE 20008 0 2 020009 GENERAL WEATHER INDICATOR (TAF/METAR) CODE TABLE 20009 0 0 4 CODE TABLE 20009 0 2 020010 CLOUD COVER (TOTAL) % 0 0 7 % 0 3 020011 CLOUD AMOUNT CODE TABLE 20011 0 0 4 CODE TABLE 20011 0 2 020012 CLOUD TYPE CODE TABLE 20012 0 0 6 CODE TABLE 20012 0 2 020013 HEIGHT OF BASE OF CLOUD M -1 -40 11 M -1 4 020014 HEIGHT OF TOP OF CLOUD M -1 -40 11 M -1 4 020015 PRESSURE AT BASE OF CLOUD PA -1 0 14 PA -1 5 020016 PRESSURE AT TOP OF CLOUD PA -1 0 14 PA -1 5 020017 CLOUD TOP DESCRIPTION CODE TABLE 20017 0 0 4 CODE TABLE 20017 0 2 020018 TENDENCY OF RUNWAY VISUAL RANGE CODE TABLE 20018 0 0 2 CODE TABLE 20018 0 1 020019 SIGNIFICANT PRESENT OR FORECAST WEATHER CCITTIA5 0 0 72 CHARACTER 0 9 020020 SIGNIFICANT RECENT WEATHER PHENOMENA CCITTIA5 0 0 32 CHARACTER 0 4 020021 TYPE OF PRECIPITATION FLAG TABLE 20021 0 0 30 FLAG TABLE 20021 0 10 020022 CHARACTER OF PRECIPITATION CODE TABLE 20022 0 0 4 CODE TABLE 20022 0 2 020023 OTHER WEATHER PHENOMENA FLAG TABLE 20023 0 0 18 FLAG TABLE 20023 0 6 020024 INTENSITY OF PHENOMENA CODE TABLE 20024 0 0 3 CODE TABLE 20024 0 1 020025 OBSCURATION FLAG TABLE 20025 0 0 21 FLAG TABLE 20025 0 7 020026 CHARACTER OF OBSCURATION CODE TABLE 20026 0 0 4 CODE TABLE 20026 0 2 020027 PHENOMENA OCCURRENCE FLAG TABLE 20027 0 0 9 FLAG TABLE 20027 0 3 020029 RAIN FLAG CODE TABLE 20029 0 0 2 CODE TABLE 20029 0 1 020031 ICE DEPOSIT (THICKNESS) M 2 0 7 M 2 3 020032 RATE OF ICE ACCRETION CODE TABLE 20032 0 0 3 CODE TABLE 20032 0 1 020033 CAUSE OF ICE ACCRETION FLAG TABLE 20033 0 0 4 FLAG TABLE 20033 0 2 020034 SEA ICE CONCENTRATION CODE TABLE 20034 0 0 5 CODE TABLE 20034 0 2 020035 AMOUNT AND TYPE OF ICE CODE TABLE 20035 0 0 4 CODE TABLE 20035 0 2 020036 ICE SITUATION CODE TABLE 20036 0 0 5 CODE TABLE 20036 0 2 020037 ICE DEVELOPMENT CODE TABLE 20037 0 0 5 CODE TABLE 20037 0 2 020038 BEARING OF ICE EDGE (SEE NOTE 3) DEGREE TRUE 0 0 12* DEGREE TRUE 0 3 020039 ICE DISTANCE M -1 0 13 M -1 4 020041 AIRFRAME ICING CODE TABLE 20041 0 0 4 CODE TABLE 20041 0 2 020042 AIRFRAME ICING PRESENT CODE TABLE 20042 0 0 2 CODE TABLE 20042 0 1 020043 PEAK LIQUID WATER CONTENT KG/M**3 4 0 7 KG/M**3 4 2 020044 AVERAGE LIQUID WATER CONTENT KG/M**3 4 0 7 KG/M**3 4 2 020045 SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS CODE TABLE 20045 0 0 2 CODE TABLE 20045 0 1 020051 AMOUNT OF LOW CLOUDS % 0 0 7 % 0 3 020052 AMOUNT OF MIDDLE CLOUDS % 0 0 7 % 0 3 020053 AMOUNT OF HIGH CLOUDS % 0 0 7 % 0 3 020061 RUNWAY VISUAL RANGE (RVR) M 0 0 12 M 0 4 020062 STATE OF THE GROUND (WITH OR WITHOUT SNOW) CODE TABLE 20062 0 0 5 CODE TABLE 20062 0 2 020063 SPECIAL PHENOMENA CODE TABLE 20063 0 0 10 CODE TABLE 20063 0 4 020065 SNOW COVER (SEE NOTE 4) % 0 0 7 % 0 3 020070 MINIMUM NUMBER OF ATMOSPHERICS NUMERIC 0 0 7 NUMERIC 0 3 020071 ACCURACY OF FIX AND RATE OF ATMOSPHERICS CODE TABLE 20071 0 0 4 CODE TABLE 20071 0 2 020081 CLOUD AMOUNT IN SEGMENT % 0 0 7 % 0 3 020082 AMOUNT SEGMENT CLOUD FREE % 0 0 7 % 0 3 020090 SPECIAL CLOUDS CODE TABLE 20090 0 0 4 CODE TABLE 20090 0 2 020192 SPECIAL PHENOMENA CODE TABLE 20192 0 0 14 CODE TABLE 0 5 021001 HORIZONTAL REFLECTIVITY dB 0 -64 7 dB 0 3 021002 VERTICAL REFLECTIVITY dB 0 -64 7 dB 0 3 021003 DIFFERENTIAL REFLECTIVITY dB 1 -5 7 dB 1 3 021005 LINEAR DEPOLARISATION RATIO dB 0 -65 6 dB 0 2 021006 CIRCULAR DEPOLARISATION RATIO dB 0 -65 6 dB 0 2 021011 DOPPLER MEAN VELOCITY IN X-DIRECTION M/S 0 -128 8 M/S 0 3 021012 DOPPLER MEAN VELOCITY IN Y-DIRECTION M/S 0 -128 8 M/S 0 3 021013 DOPPLER MEAN VELOCITY IN Z-DIRECTION M/S 0 -128 8 M/S 0 3 021014 DOPPLER MEAN VELOCITY (RADIAL) M/S 1 -4096 13 M/S 1 4 021017 DOPPLER VELOCITY SPECTRAL WIDTH M/S 1 0 8 M/S 1 3 021021 ECHO TOPS M -3 0 4 M -3 2 021030 SIGNAL TO NOISE RATIO dB 0 -32 8 dB 0 3 021031 VERTICALLY INTEGRATED LIQUID-WATER CONTENT KG/M**2 0 0 7 KG/M**2 0 3 021036 RADAR RAINFALL INTENSITY M/S 7 0 12 M/S 7 4 021041 BRIGHT-BAND HEIGHT M -2 0 8 M -2 3 021051 SIGNAL POWER ABOVE 1 MW dB 0 -256 8 dB 0 3 021062 BACKSCATTER dB 2 -5000 13 dB 2 4 021063 RADIOMETRIC RESOLUTION (NOISE VALUE) % 1 0 10 % 1 4 021064 CLUTTER NOISE ESTIMATE NUMERIC 0 0 8 NUMERIC 0 3 021065 MISSING PACKET COUNTER NUMERIC 0 -127 8 NUMERIC 0 3 021066 WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA FLAG TABLE 21066 0 0 12 FLAG TABLE 21066 0 4 021067 WIND PRODUCT CONFIDENCE DATA FLAG TABLE 21067 0 0 13 FLAG TABLE 21067 0 5 021068 RADAR ALTIMETER PRODUCT CONFIDENCE DATA FLAG TABLE 21068 0 0 8 FLAG TABLE 21068 0 3 021069 SST PRODUCT CONFIDENCE DATA FLAG TABLE 21069 0 0 10 FLAG TABLE 21069 0 4 021070 SST PRODUCT CONFIDENCE DATA (SADIST-2) FLAG TABLE 21070 0 0 23 FLAG TABLE 21070 0 6 021071 PEAKINESS NUMERIC 0 0 16 NUMERIC 0 5 021072 SATELLITE ALTIMETER CALIBRATION STATUS FLAG TABLE 21072 0 0 4 FLAG TABLE 21072 0 2 021073 SATELLLITE ALTIMETER INSTRUMENT MODE FLAG TABLE 21073 0 0 9 FLAG TABLE 21073 0 3 021075 IMAGE SPECTRUM INTENSITY NUMERIC 0 0 8 NUMERIC 0 3 021076 REPRESENTATION OF INTENSITIES CODE TABLE 21076 0 0 3 CODE TABLE 21076 0 1 021077 ALTITUDE CORRECTION (IONOSPHERE) M 3 0 14 M 3 5 021078 ALTITUDE CORRECTION (DRY TROPOSPHERE) M 3 0 9 M 3 3 021079 ALTITUDE CORRECTION (WET TROPOSPHERE) M 3 2000 10 M 3 4 021080 ALTITUDE CORRECTION (CALIBRATION CONSTANT) M 3 0 11 M 3 4 021081 OPEN LOOP CORRECTION (HEIGHT-TIME LOOP) M 3 0 10 M 3 4 021082 OPEN LOOP CORRECTION (AUTO GAIN CONTROL) dB 3 -3000 14 dB 3 5 021083 WARM TARGET CALIBRATION NUMERIC 0 0 16 NUMERIC 0 5 021084 COLD TARGET CALIBRATION NUMERIC 0 0 16 NUMERIC 0 5 021085 ATSR SEA SURFACE TEMPERATURE ACROSS- TRACK BAND NUMBER NUMERIC 0 0 4 NUMERIC 0 2 021091 RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT dB 0 -100 8 dB 0 3 021092 RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNA dB 0 -100 8 dB 0 3 021101 NUMBER OF VECTOR AMBIGUITIES NUMERIC 0 0 3 NUMERIC 0 1 021102 INDEX OF SELECTED WIND VECTOR NUMERIC 0 0 3 NUMERIC 0 1 021103 TOTAL NUMBER OF SIGMA-0 MEASUREMENTS NUMERIC 0 0 5 NUMERIC 0 2 021104 LIKELIHOOD COMPUTED FOR SOLUTION NUMERIC 3 -30000 15 NUMERIC 3 5 021105 NORMALIZED RADAR CROSS-SECTION dB 2 -10000 14 dB 2 5 021106 KP VARIANCE COEFFICIENT (ALPHA) NUMERIC 3 0 14 NUMERIC 3 5 021107 KP VARIANCE COEFFICIENT (BETA) NUMERIC 8 0 16 NUMERIC 8 5 021109 SEAWINDS WIND VECTOR CELL QUALITY FLAG TABLE 21109 0 0 17 FLAG TABLE 21109 0 6 021110 NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE) NUMERIC 0 0 6 NUMERIC 0 2 021111 NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE) NUMERIC 0 0 6 NUMERIC 0 2 021112 NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE) NUMERIC 0 0 6 NUMERIC 0 2 021113 NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE) NUMERIC 0 0 6 NUMERIC 0 2 021114 KP VARIANCE COEFFICENT (GAMMA) dB 3 -140000 18 dB 3 6 021115 SEAWINDS SIGMA-0 QUALITY FLAG TABLE 21115 0 0 17 FLAG TABLE 21115 0 6 021116 SEAWINDS SIGMA-0 MODE FLAG TABLE 21116 0 0 17 FLAG TABLE 21116 0 6 021117 SIGMA-0 VARIANCE QUALITY CONTROL NUMERIC 2 0 16 NUMERIC 2 5 021118 ATTENUATION CORRECTION ON SIGMA-0 dB 2 -10000 14 dB 2 5 021119 WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION CODE TABLE 21119 0 0 6 CODE TABLE 21119 0 2 021120 PROBABILITY OF RAIN NUMERIC 3 0 10 NUMERIC 3 4 021121 SEAWINDS NOF* RAIN INDEX NUMERIC 0 0 8 NUMERIC 0 3 021122 ATTENUATION CORRECTION OF SIGMA-0 (FROM TB) dB 2 -10000 14 dB 2 5 021123 SEAWINDS NORMALIZED RADAR CROSS SECTION dB 2 -30000 15 dB 2 5 021128 NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAME NUMERIC 0 0 8 NUMERIC 0 3 021192 RADAR BACK SCATTER dB 2 -5000 13 dB 2 4 021193 NOISE FIGURE % 0 0 7 % 0 3 021194 BACKGROUND NOISE LEVEL NUMERIC 0 0 8 NUMERIC 0 3 021195 MISSING PACKET COUNTER NUMERIC 0 -127 8 NUMERIC 0 3 022001 DIRECTION OF WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022002 DIRECTION OF WIND WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022003 DIRECTION OF SWELL WAVES DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022004 DIRECTION OF CURRENT DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022011 PERIOD OF WAVES S 0 0 6 S 0 2 022012 PERIOD OF WIND WAVES S 0 0 6 S 0 2 022013 PERIOD OF SWELL WAVES S 0 0 6 S 0 2 022021 HEIGHT OF WAVES M 1 0 10 M 1 4 022022 HEIGHT OF WIND WAVES M 1 0 10 M 1 4 022023 HEIGHT OF SWELL WAVES M 1 0 10 M 1 4 022025 STANDARD DEVIATION WAVE HEIGHT M 2 0 10 M 2 4 022026 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT M 2 0 10 M 2 4 022031 SPEED OF CURRENT M/S 2 0 13 M/S 2 4 022035 TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM M 2 0 14 M 2 4 022036 METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET) M 2 0 14 M 2 4 022037 TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM M 3 -10000 15 M 3 5 022038 TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM M 3 -10000 15 M 3 5 022039 METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET) M 3 -5000 12 M 3 4 022040 METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET) M 3 -5000 14 M 3 5 022041 SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN) K 1 0 12 K 1 4 022042 SEA/WATER TEMPERATURE K 1 0 12 K 1 4 022043 SEA/WATER TEMPERATURE K 2 0 15 K 2 5 022044 SOUND VELOCITY M/S 1 0 14 M/S 1 5 022045 SEA/WATER TEMPERATURE K 3 0 19 K 3 6 022050 STANDARD DEVIATION SEA-SURFACE TEMPERATURE K 2 0 8 K 2 3 022055 FLOAT CYCLE NUMBER NUMERIC 0 0 10 NUMERIC 0 3 022056 DIRECTION OF PROFILE CODE TABLE 22056 0 0 2 CODE TABLE 22056 0 1 022060 LAGRANGIAN DRIFTER DROGUE STATUS CODE TABLE 022060 0 0 3 CODE TABLE 22060 0 1 022061 STATE OF THE SEA CODE TABLE 22061 0 0 4 CODE TABLE 22061 0 2 022062 SALINITY PART PER THOUSAND 2 0 14 PART PER THOUSAND 2 5 022063 TOTAL WATER DEPTH M 0 0 14 M 0 5 022064 SALINITY PART PER THOUSAND 3 0 17 PART PER THOUSAND 3 6 022065 WATER PRESSURE PA -3 0 17 PA -3 6 022066 WATER CONDUCTIVITY S M-1 6 0 26 S M-1 6 8 022067 INSTRUMENT TYPE FOR WATER TEMPERATURE PROFILE MEASUREMENT CODE TABLE 22067 0 0 10 CODE TABLE 22067 0 4 022068 WATER TEMPERATURE PROFILE RECORDER TYPES CODE TABLE 22068 0 0 7 CODE TABLE 22068 0 3 022070 SIGNIFICANT WAVE HEIGHT M 2 0 13 M 2 4 022071 SPECTRAL PEAK WAVE PERIOD S 1 0 9 S 1 3 022072 SPECTRAL PEAK WAVE LENGTH M 0 0 13 M 0 4 022073 MAXIMUM WAVE HEIGHT M 2 0 13 M 2 4 022074 AVERAGE WAVE PERIOD S 1 0 9 S 1 3 022075 AVERAGE WAVE LENGTH M 0 0 13 M 0 4 022076 DIRECTION FROM WHICH DOMINANT WAVES ARE COMING DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022077 DIRECTIONAL SPREAD OF DOMINANT WAVE DEGREE 0 0 9 DEGREE 0 3 022078 DURATION OF WAVE RECORD S 0 0 12 S 0 4 022079 LENGTH OF WAVE RECORD M 0 0 16 M 0 5 022080 WAVEBAND CENTRAL FREQUENCY Hz 3 0 10 Hz 3 4 022081 WAVEBAND CENTRAL WAVE NUMBER 1/M 5 0 13 1/M 5 4 022082 MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY M**2S 2 0 20 M**2S 2 7 022083 MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER M**3 2 0 20 M**3 2 7 022084 BAND CONTAINING MAXIMUM NON- DIRECTIONAL SPECTRAL WAVE DENSITY NUMERIC 0 0 7 NUMERIC 0 3 022085 SPECTRAL WAVE DENSITY RATIO NUMERIC 0 0 7 NUMERIC 0 3 022086 MEAN DIRECTION FROM WHICH WAVES ARE COMING DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022087 PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022088 FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS NUMERIC 2 0 7 NUMERIC 2 3 022089 SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS NUMERIC 2 0 7 NUMERIC 2 3 022090 NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY M**2S 2 0 20 M**2S 2 7 022091 NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER M**3 2 0 20 M**3 2 7 022092 DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY M**2S/RAD 2 0 20 M**2S/RAD 2 7 022093 DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER M**4 2 0 20 M**4 2 7 022094 TOTAL NUMBER OF WAVE BANDS NUMERIC 0 0 7 NUMERIC 0 3 022095 DIRECTIONAL SPREAD OF INDIVIDUAL WAVES DEGREE 0 0 8 DEGREE 0 3 022096 SPECTRAL BAND WIDTH 1/S 3 0 4 1/S 3 2 022097 MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS M 0 0 14 M 0 5 022098 WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS M 0 0 14 M 0 5 022099 MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M) DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 022100 DIRECTION SPREAD AT LOW WAVE NUMBERS(WAVELENGTH > 731 M) DEGREE 0 0 9 DEGREE 0 3 022101 TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS NUMERIC 0 0 31 NUMERIC 0 10 022120 TIDE STATION AUTOMATED WATER LEVEL CHECK CODE TABLE 22120 0 0 5 CODE TABLE 22120 0 2 022121 TIDE STATION MANUAL WATER LEVEL CHECK CODE TABLE 22121 0 0 5 CODE TABLE 22121 0 2 022122 TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK CODE TABLE 22122 0 0 5 CODE TABLE 22122 0 2 022123 TIDE STATION MANUAL METEOROLOGICAL DATA CHECK CODE TABLE 22123 0 0 5 CODE TABLE 22123 0 2 022141 SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN) K 2 0 15 K 2 5 023001 ACCIDENT EARLY NOTIFICATION - ARTICLE APPLICABLE CODE TABLE 23001 0 0 3 CODE TABLE 23001 0 1 023002 ACTIVITY OR FACILITY INVOLVED IN INCIDENT CODE TABLE 23002 0 0 5 CODE TABLE 23002 0 2 023003 TYPE OF RELEASE CODE TABLE 23003 0 0 3 CODE TABLE 23003 0 1 023004 COUNTERMEASURES TAKEN NEAR BORDER CODE TABLE 23004 0 0 3 CODE TABLE 23004 0 1 023005 CAUSE OF INCIDENT CODE TABLE 23005 0 0 2 CODE TABLE 23005 0 1 023006 INCIDENT SITUATION CODE TABLE 23006 0 0 3 CODE TABLE 23006 0 1 023007 CHARACTERISTICS OF RELEASE CODE TABLE 23007 0 0 3 CODE TABLE 23007 0 1 023008 STATE OF CURRENT RELEASE CODE TABLE 23008 0 0 2 CODE TABLE 23008 0 1 023009 STATE OF EXPECTED RELEASE CODE TABLE 23009 0 0 2 CODE TABLE 23009 0 1 023016 POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT CODE TABLE 23016 0 0 2 CODE TABLE 23016 0 1 023017 FLOW DISCHARGE OF MAJOR RECIPIENT M**3/S 6 0 20 M**3/S 6 7 023018 RELEASE BEHAVIOUR OVER TIME CODE TABLE 23018 0 0 3 CODE TABLE 23018 0 1 023019 ACTUAL RELEASE HEIGHT M 0 -15000 17 M 0 6 023021 EFFECTIVE RELEASE HEIGHT M 0 -15000 17 M 0 6 023022 DISTANCE OF RELEASE POINT OR SITE OF INCIDENT M 0 0 24 M 0 8 023023 MAIN TRANSPORT SPEED IN THE ATMOSPHERE M/S 1 0 12 M/S 1 4 023024 MAIN TRANSPORT SPEED IN WATER M/S 2 0 13 M/S 2 4 023025 MAIN TRANSPORT SPEED IN GROUND WATER M/S 2 0 13 M/S 2 4 023027 MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 023028 MAIN TRANSPORT DIRECTION IN WATER DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 023029 MAIN TRANSPORT DIRECTION IN GROUND WATER DEGREE TRUE 0 0 9 DEGREE TRUE 0 3 023031 POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN CODE TABLE 23031 0 0 2 CODE TABLE 23031 0 1 023032 PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG CODE TABLE 23032 0 0 2 CODE TABLE 23032 0 1 024001 ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM Bq -11 0 28 Bq -11 9 024002 ESTIMATED MAXIMUM POTENTIAL RELEASE Bq -11 0 28 Bq -11 9 024003 COMPOSITION OF RELEASE CODE TABLE 24003 0 0 5 CODE TABLE 24003 0 2 024004 ELEMENT NAME CCITTIA5 0 0 16 CHARACTER 0 2 024005 ISOTOPE MASS NUMERIC 0 0 9 NUMERIC 0 3 024011 DOSE mSv 2 0 32 mSv 2 10 024012 TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL) mSv 2 0 32 mSv 2 10 024013 GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATIO mSv 2 0 32 mSv 2 10 024021 AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA) Bq/M**3 2 0 32 Bq/M**3 2 10 024022 CONCENTRATION IN PRECIPITATION (OF NAMES ISOTOPE TYPE) Bq/L 2 0 32 BQ L-1 2 10 024023 PULSE RATE OF BETA RADIATION 1/S 1 0 14 1/S 1 4 024024 PULSE RATE OF GAMMA RADIATION 1/S 1 0 14 1/S 1 4 025001 RANGE-GATE LENGTH M -1 0 6 M -1 2 025002 NUMBER OF GATES AVERAGED NUMERIC 0 0 4 NUMERIC 0 2 025003 NUMBER OF INTEGRATED PULSES NUMERIC 0 0 8 NUMERIC 0 3 025004 ECHO PROCESSING CODE TABLE 25004 0 0 2 CODE TABLE 25004 0 1 025005 ECHO INTEGRATION CODE TABLE 25005 0 0 2 CODE TABLE 25005 0 1 025006 Z TO R CONVERSION CODE TABLE 25006 0 0 3 CODE TABLE 25006 0 1 025007 Z TO R CONVERSION FACTOR NUMERIC 0 0 12 NUMERIC 0 4 025008 Z TO R CONVERSION EXPONENT NUMERIC 2 0 9 NUMERIC 2 3 025009 CALIBRATION METHOD FLAG TABLE 25009 0 0 4 FLAG TABLE 25009 0 2 025010 CLUTTER TREATMENT CODE TABLE 25010 0 0 4 CODE TABLE 25010 0 2 025011 GROUND OCCULTATION CORRECTION (SCREENING) CODE TABLE 25011 0 0 2 CODE TABLE 25011 0 1 025012 RANGE ATTENUATION CORRECTION CODE TABLE 25012 0 0 2 CODE TABLE 25012 0 1 025013 BRIGHT-BAND CORRECTION FLAG TABLE 25013 0 0 2 FLAG TABLE 25013 0 1 025014 AZIMUTH CLUTTER CUT-OFF (SEE NOTE 1) NUMERIC 0 0 12 NUMERIC 0 4 025015 RADOME ATTENUATION CORRECTION FLAG TABLE 25015 0 0 2 FLAG TABLE 25015 0 1 025016 CLEAR-AIR ATTENUATION CORRECTION dB/M 5 0 6 dB/M 5 2 025017 PRECIPITATION ATTENUATION CORRECTION FLAG TABLE 25017 0 0 2 FLAG TABLE 25017 0 1 025018 A TO Z LAW FOR ATTENUATION FACTOR NUMERIC 7 0 6 NUMERIC 7 2 025019 A TO Z LAW FOR ATTENUATION EXPONENT NUMERIC 2 0 7 NUMERIC 2 3 025020 MEAN SPEED ESTIMATION CODE TABLE 25020 0 0 2 CODE TABLE 25020 0 1 025021 WIND COMPUTATION ENHANCEMENT FLAG TABLE 25021 0 0 8 FLAG TABLE 25021 0 3 025025 BATTERY VOLTAGE V 1 0 9 V 1 3 025026 BATTERY VOLTAGE (LARGE RANGE) V 1 0 12 V 1 4 025028 OPERATOR OR MANUFACTURER DEFINED PARAMETER NUMERIC 1 -16384 15 NUMERIC 1 5 025030 RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE CODE TABLE 25030 0 0 2 CODE TABLE 25030 0 1 025032 WIND PROFILER MODE INFORMATION CODE TABLE 25032 0 0 2 CODE TABLE 25032 0 1 025033 WIND PROFILER SUBMODE INFORMATION* CODE TABLE 25033 0 0 2 CODE TABLE 25033 0 1 025034 WIND PROFILER QUALITY CONTROL TEST RESULTS* FLAG TABLE 25034 0 0 4 FLAG TABLE 25034 0 2 025036 ATMOSPHERICS LOCATION METHOD CODE TABLE 25036 0 0 4 CODE TABLE 25036 0 2 025040 CO2 WIND PRODUCT DERIVATION CODE TABLE 25040 0 0 4 CODE TABLE 25040 0 2 025041 MOVING PLATFORM DIRECTION REPORTING METHOD CODE TABLE 25041 0 0 2 CODE TABLE 25041 0 1 025042 MOVING PLATFORM SPEED REPORTING METHOD CODE TABLE 25042 0 0 2 CODE TABLE 25042 0 1 025043 WAVE SAMPLING INTERVAL (TIME) S 4 0 15 S 4 5 025044 WAVE SAMPLING INTERVAL (SPACE) M 2 0 14 M 2 5 025045 HIRS CHANNEL COMBINATION FLAG TABLE 25045 0 0 21 FLAG TABLE 25045 0 7 025046 MSU CHANNEL COMBINATION FLAG TABLE 25046 0 0 5 FLAG TABLE 25046 0 2 025047 SSU CHANNEL COMBINATION FLAG TABLE 25047 0 0 4 FLAG TABLE 25047 0 2 025048 AMSU-A CHANNEL COMBINATION FLAG TABLE 25048 0 0 16 FLAG TABLE 25048 0 6 025049 AMSU-B CHANNEL COMBINATION FLAG TABLE 25049 0 0 6 FLAG TABLE 25049 0 2 025051 AVHRR CHANNEL COMBINATION FLAG TABLE 25051 0 0 7 FLAG TABLE 25051 0 3 025053 OBSERVATION QUALITY FLAG TABLE 25053 0 0 12 FLAG TABLE 25053 0 4 025054 SSMIS SUBFRAME ID NEMBER NUMERIC 0 0 5 NUMERIC 0 2 025055 MULTIPLEXER HOUSEKEEPING K 2 0 16 K 2 5 025060 SOFTWARE IDENTIFICATION (SEE NOTE 2) NUMERIC 0 0 14 NUMERIC 0 5 025061 SOFTWARE IDENTIFICATION AND VERSION NUMBER CCITTIA5 0 0 96 CHARACTER 0 12 025065 ORIENTATION CORRECTION (AZIMUTH) DEGREE 2 -1000 11 DEGREE 2 4 025066 ORIENTATION CORRECTION (ELEVATION) DEGREE 2 -1000 11 DEGREE 2 4 025067 RADIOSONDE RELEASE POINT PRESSURE CORRECTION PA 0 -8000 14 PA 0 4 025068 NUMBER OF ARCHIVE RECOMPUTES NUMERIC 0 0 7 NUMERIC 0 3 025069 FLIGHT LEVEL PRESSURE CORRECTIONS FLAG TABLE 25069 0 0 8 FLAG TABLE 25069 0 3 025070 MAJOR FRAME COUNT NUMERIC 0 0 4 NUMERIC 0 2 025071 FRAME COUNT NUMERIC 0 0 5 NUMERIC 0 2 025075 SATELLITE ANTENNA CORRECTIONS VERSION NUMBER NUMERIC 0 0 5 NUMERIC 0 2 025076 LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVE NUMBER) FOR ATOVS LOG (1/M) 8 0 30 LOG (1/M) 8 10 025077 BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS NUMERIC 5 -100000 18 NUMERIC 5 7 025078 BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS NUMERIC 5 0 17 NUMERIC 5 6 025079 ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS W/M**2 4 0 24 W/M**2 4 8 025080 ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS M 10 0 14 M 10 5 025085 FRACTION OF CLEAR PIXELS IN HIRS FOV NUMERIC 0 0 7 NUMERIC 0 3 025086 DEPTH CORRECTION INDICATOR CODE TABLE 25086 0 0 2 CODE TABLE 25086 0 1 025091 STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2) dB 3 -18192 13 dB 3 5 025092 ACOUSTIC PROPAGATION VELOCITY M/S 2 28000 14 M/S 2 5 025093 RASS COMPUTATION CORRECTION FLAG TABLE 25093 0 0 8 FLAG TABLE 25093 0 3 025095 ALTIMETER STATE FLAG FLAG TABLE 25095 0 0 2 FLAG TABLE 25095 0 1 025096 RADIOMETER STATE FLAG FLAG TABLE 25096 0 0 5 FLAG TABLE 25096 0 2 025097 THREE DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT CODE TABLE 25097 0 0 4 CODE TABLE 25097 0 2 025100 XBT/XCTD FALL RATE EQUATION COEFFICIENT A NUMERIC 5 0 20 NUMERIC 5 6 025101 XBT/XCTD FALL RATE EQUATION COEFFICIENT B NUMERIC 5 -500000 21 NUMERIC 5 6 026001 PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE HOUR 1 0 12 HOUR 1 3 026002 PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE HOUR 1 0 12 HOUR 1 3 026003 TIME DIFFERENCE MINUTE 0 -1440 12 MINUTE 0 4 026010 HOURS INCLUDED FLAG TABLE 26010 0 0 26 FLAG TABLE 26010 0 9 026020 DURATION OF PRECIPITATION MINUTE 0 0 11 MINUTE 0 4 027001 LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 027002 LATITUDE (COARSE ACCURACY) DEGREE 2 -9000 15 DEGREE 2 4 027003 ALTERNATE LATITUDE (COARSE ACCURACY) DEGREE 2 -9000 15 DEGREE 2 4 027004 ALTERNATE LATITUDE (HIGH ACCURACY) DEGREE 5 -9000000 25 DEGREE 5 7 027020 SATELLITE LOCATION COUNTER NUMERIC 0 0 16 NUMERIC 0 5 027021 SATELLITE SUBLOCATION DIMENSION NUMERIC 0 0 16 NUMERIC 0 5 027031 IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S C M 2 -1073741824 31 M 2 10 028001 LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 028002 LONGITUDE (COARSE ACCURACY) DEGREE 2 -18000 16 DEGREE 2 5 028003 ALTERNATE LONGITUDE (COARSE ACCURACY) DEGREE 2 -18000 16 DEGREE 2 5 028004 ALTERNATE LONGITUDE (HIGH ACCURACY) DEGREE 5 -18000000 26 DEGREE 5 8 028031 IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE M 2 -1073741824 31 M 2 10 029001 PROJECTION TYPE CODE TABLE 29001 0 0 3 CODE TABLE 29001 0 1 029002 CO-ORDINATE GRID TYPE CODE TABLE 29002 0 0 3 CODE TABLE 29002 0 1 030001 PIXEL VALUE (4 BITS) NUMERIC 0 0 4 NUMERIC 0 2 030002 PIXEL VALUE (8 BITS) NUMERIC 0 0 8 NUMERIC 0 3 030004 PIXEL VALUE (16 BITS) NUMERIC 0 0 16 NUMERIC 0 5 030021 NUMBER OF PIXELS PER ROW NUMERIC 0 0 12 NUMERIC 0 4 030022 NUMBER OF PIXELS PER COLUMN NUMERIC 0 0 12 NUMERIC 0 4 030031 PICTURE TYPE CODE TABLE 30031 0 0 4 CODE TABLE 30031 0 2 030032 COMBINATION WITH OTHER DATA FLAG TABLE 30032 0 0 16 FLAG TABLE 30032 0 6 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1 NUMERIC 0 1 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8 NUMERIC 0 3 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16 NUMERIC 0 5 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 31021 0 0 6 CODE TABLE 31021 0 2 031031 DATA PRESENT INDICATOR FLAG TABLE 31031 0 0 1 FLAG TABLE 31031 0 1 033002 QUALITY INFORMATION CODE TABLE 33002 0 0 2 CODE TABLE 33002 0 1 033003 QUALITY INFORMATION CODE TABLE 33003 0 0 3 CODE TABLE 33003 0 1 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 33005 0 0 30 FLAG TABLE 33005 0 10 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 33006 0 0 3 CODE TABLE 33006 0 1 033007 PER CENT CONFIDENCE % 0 0 7 % 0 3 033015 DATA QUALITY CHECK INDICATOR CODE TABLE 33015 0 0 6 CODE TABLE 33015 0 2 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 33020 0 0 3 CODE TABLE 33020 0 1 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 33021 0 0 2 CODE TABLE 33021 0 1 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 33022 0 0 2 CODE TABLE 33022 0 1 033023 QUALITY OF BUOY LOCATION CODE TABLE 33023 0 0 2 CODE TABLE 33023 0 1 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) CODE TABLE 33024 0 0 4 CODE TABLE 33024 0 2 033025 ACARS INTERPOLATED VALUES CODE TABLE 33025 0 0 3 CODE TABLE 33025 0 1 033026 MOISTURE QUALITY CODE TABLE 33026 0 0 6 CODE TABLE 33026 0 2 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) CODE TABLE 33027 0 0 3 CODE TABLE 33027 0 1 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 33030 0 0 24 FLAG TABLE 33030 0 8 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 33031 0 0 24 FLAG TABLE 33031 0 8 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 33032 0 0 24 FLAG TABLE 33032 0 8 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 33033 0 0 24 FLAG TABLE 33033 0 8 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 33035 0 0 4 CODE TABLE 33035 0 2 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 % 0 3 033037 WIND CORRELATION ERROR FLAG TABLE 33037 0 0 20 FLAG TABLE 33037 0 7 033038 QUALITY FLAGS FOR GROUND-BASED GNSS DATA FLAG TABLE 33038 0 0 10 FLAG TABLE 33038 0 4 033040 CONFIDENCE INTERVAL % 0 0 7 PERCENT 0 3 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 33041 0 0 2 CODE TABLE 33041 0 1 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 33050 0 0 4 CODE TABLE 33050 0 2 035000 FM AND REGIONAL CODE NUMBER CODE TABLE 35000 0 0 10 CODE TABLE 35000 0 3 035001 TIME-FRAME FOR MONITORING CODE TABLE 35001 0 0 3 CODE TABLE 35001 0 1 035011 NUMBER OF REPORTS ACTUALLY RECEIVED NUMERIC 0 0 14 NUMERIC 0 4 035021 BULLETIN BEING MONITORED (TTAAII) CCITTIA5 0 0 48 CHARACTER 0 6 035022 BULLETIN BEING MONITORED (YYGGGG) CCITTIA5 0 0 48 CHARACTER 0 6 035023 BULLETIN BEING MONITORED (CCCC) CCITTIA5 0 0 32 CHARACTER 0 4 035024 BULLETIN BEING MONITORED (BBB) CCITTIA5 0 0 24 CHARACTER 0 3 035030 DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA CODE TABLE 35030 0 0 4 CODE TABLE 35030 0 1 035031 QUALIFIER ON MONITORING RESULTS CODE TABLE 35031 0 0 7 CODE TABLE 35031 0 2 035032 CAUSE OF MISSING DATA CODE TABLE 35032 0 0 4 CODE TABLE 35032 0 1 035033 OBSERVATION AND COLLECTION DEFICIENCIES CODE TABLE 35033 0 0 7 CODE TABLE 35033 0 2 035034 STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY P CODE TABLE 35034 0 0 3 CODE TABLE 35034 0 1 035035 REASON FOR TERMINATION CODE TABLE 35035 0 0 5 CODE TABLE 35035 0 2 dballe-7.21/extra/test-repinfo2.csv0000644000175000017500000000031513022043102014132 0000000000000001,synop,report synottico,101,oss,0 201,FIXspnpo,FIX experiment,200,pre,255 210,LCBspnpo,LCB experiment,210,pre,255 220,MODspnpo,MOD experiment,220,pre,255 255,generic,export generici da DB Meteo,-5,?,255 dballe-7.21/extra/csv/0000755000175000017500000000000013022043102011570 500000000000000dballe-7.21/extra/csv/temp1.csv0000644000175000017500000005475113022043102013267 00000000000000Longitude,Latitude,Report,Date,Level1,L1,Level2,L2,Time range,P1,P2,Varcode,Value 9.2833,45.444,temp,2011-01-24 00:00:00,1,,,,254,0,0,B10004,100700 9.2833,45.444,temp,2011-01-24 00:00:00,100,770,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,770,0,5,254,0,0,B12101,228.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,770,0,5,254,0,0,B12103,192.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,1000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,1000,0,2,254,0,0,B10008,302999 9.2833,45.444,temp,2011-01-24 00:00:00,100,1000,0,2,254,0,0,B11001,145 9.2833,45.444,temp,2011-01-24 00:00:00,100,1000,0,2,254,0,0,B11002,9.8 9.2833,45.444,temp,2011-01-24 00:00:00,100,1000,0,2,254,0,0,B12101,229.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,1000,0,2,254,0,0,B12103,193.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,1110,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,1110,0,6,254,0,0,B11001,140 9.2833,45.444,temp,2011-01-24 00:00:00,100,1110,0,6,254,0,0,B11002,6.7 9.2833,45.444,temp,2011-01-24 00:00:00,100,1190,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,1190,0,6,254,0,0,B11001,165 9.2833,45.444,temp,2011-01-24 00:00:00,100,1190,0,6,254,0,0,B11002,9.3 9.2833,45.444,temp,2011-01-24 00:00:00,100,1350,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,1350,0,6,254,0,0,B11001,120 9.2833,45.444,temp,2011-01-24 00:00:00,100,1350,0,6,254,0,0,B11002,8.2 9.2833,45.444,temp,2011-01-24 00:00:00,100,1450,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,1450,0,6,254,0,0,B11001,150 9.2833,45.444,temp,2011-01-24 00:00:00,100,1450,0,6,254,0,0,B11002,10.8 9.2833,45.444,temp,2011-01-24 00:00:00,100,1570,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,1570,0,6,254,0,0,B11001,145 9.2833,45.444,temp,2011-01-24 00:00:00,100,1570,0,6,254,0,0,B11002,10.8 9.2833,45.444,temp,2011-01-24 00:00:00,100,1630,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,1630,0,5,254,0,0,B12101,227.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,1630,0,5,254,0,0,B12103,192.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,1670,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,1670,0,6,254,0,0,B11001,135 9.2833,45.444,temp,2011-01-24 00:00:00,100,1670,0,6,254,0,0,B11002,7.7 9.2833,45.444,temp,2011-01-24 00:00:00,100,1840,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,1840,0,6,254,0,0,B11001,140 9.2833,45.444,temp,2011-01-24 00:00:00,100,1840,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,1850,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,1850,0,5,254,0,0,B12101,222.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,1850,0,5,254,0,0,B12103,188.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,2000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,2000,0,2,254,0,0,B10008,257765 9.2833,45.444,temp,2011-01-24 00:00:00,100,2000,0,2,254,0,0,B11001,70 9.2833,45.444,temp,2011-01-24 00:00:00,100,2000,0,2,254,0,0,B11002,4.6 9.2833,45.444,temp,2011-01-24 00:00:00,100,2000,0,2,254,0,0,B12101,223.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,2000,0,2,254,0,0,B12103,189.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,2210,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,2210,0,6,254,0,0,B11001,115 9.2833,45.444,temp,2011-01-24 00:00:00,100,2210,0,6,254,0,0,B11002,1.0 9.2833,45.444,temp,2011-01-24 00:00:00,100,2230,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,2230,0,5,254,0,0,B12101,224.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,2230,0,5,254,0,0,B12103,190.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,2620,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,2620,0,5,254,0,0,B12101,219.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,2620,0,5,254,0,0,B12103,186.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,3000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,3000,0,2,254,0,0,B10008,231959 9.2833,45.444,temp,2011-01-24 00:00:00,100,3000,0,2,254,0,0,B11001,105 9.2833,45.444,temp,2011-01-24 00:00:00,100,3000,0,2,254,0,0,B11002,1.5 9.2833,45.444,temp,2011-01-24 00:00:00,100,3000,0,2,254,0,0,B12101,222.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,3000,0,2,254,0,0,B12103,188.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,3060,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,3060,0,5,254,0,0,B12101,222.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,3060,0,5,254,0,0,B12103,188.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,3260,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,3260,0,6,254,0,0,B11001,10 9.2833,45.444,temp,2011-01-24 00:00:00,100,3260,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,3510,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,3510,0,6,254,0,0,B11001,25 9.2833,45.444,temp,2011-01-24 00:00:00,100,3510,0,6,254,0,0,B11002,7.7 9.2833,45.444,temp,2011-01-24 00:00:00,100,3690,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,3690,0,6,254,0,0,B11001,360 9.2833,45.444,temp,2011-01-24 00:00:00,100,3690,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,4030,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,4030,0,5,254,0,0,B12101,217.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,4030,0,5,254,0,0,B12103,185.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,4320,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,4320,0,6,254,0,0,B11001,15 9.2833,45.444,temp,2011-01-24 00:00:00,100,4320,0,6,254,0,0,B11002,1.5 9.2833,45.444,temp,2011-01-24 00:00:00,100,5000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,5000,0,2,254,0,0,B10008,199775 9.2833,45.444,temp,2011-01-24 00:00:00,100,5000,0,2,254,0,0,B11001,320 9.2833,45.444,temp,2011-01-24 00:00:00,100,5000,0,2,254,0,0,B11002,4.6 9.2833,45.444,temp,2011-01-24 00:00:00,100,5000,0,2,254,0,0,B12101,219.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,5000,0,2,254,0,0,B12103,186.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,5070,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,5070,0,5,254,0,0,B12101,219.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,5070,0,5,254,0,0,B12103,186.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,7000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,7000,0,2,254,0,0,B10008,178679 9.2833,45.444,temp,2011-01-24 00:00:00,100,7000,0,2,254,0,0,B11001,350 9.2833,45.444,temp,2011-01-24 00:00:00,100,7000,0,2,254,0,0,B11002,3.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,7000,0,2,254,0,0,B12101,218.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,7000,0,2,254,0,0,B12103,186.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,7240,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,7240,0,6,254,0,0,B11001,335 9.2833,45.444,temp,2011-01-24 00:00:00,100,7240,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,7500,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,7500,0,6,254,0,0,B11001,305 9.2833,45.444,temp,2011-01-24 00:00:00,100,7500,0,6,254,0,0,B11002,6.2 9.2833,45.444,temp,2011-01-24 00:00:00,100,7680,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,7680,0,6,254,0,0,B11001,305 9.2833,45.444,temp,2011-01-24 00:00:00,100,7680,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,2,254,0,0,B08042,38 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,2,254,0,0,B10008,156405 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,2,254,0,0,B11001,355 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,2,254,0,0,B11002,3.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,2,254,0,0,B12101,217.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,2,254,0,0,B12103,185.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,5,254,0,0,B08042,38 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,5,254,0,0,B12101,217.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,5,254,0,0,B12103,185.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,6,254,0,0,B08042,38 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,6,254,0,0,B11001,355 9.2833,45.444,temp,2011-01-24 00:00:00,100,10000,0,6,254,0,0,B11002,3.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,10900,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,10900,0,6,254,0,0,B11001,15 9.2833,45.444,temp,2011-01-24 00:00:00,100,10900,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,11400,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,11400,0,5,254,0,0,B12101,219.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,11400,0,5,254,0,0,B12103,186.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,12900,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,12900,0,6,254,0,0,B11001,340 9.2833,45.444,temp,2011-01-24 00:00:00,100,12900,0,6,254,0,0,B11002,5.7 9.2833,45.444,temp,2011-01-24 00:00:00,100,14100,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,14100,0,6,254,0,0,B11001,25 9.2833,45.444,temp,2011-01-24 00:00:00,100,14100,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,14900,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,14900,0,6,254,0,0,B11001,20 9.2833,45.444,temp,2011-01-24 00:00:00,100,14900,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,15000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,15000,0,2,254,0,0,B10008,130894 9.2833,45.444,temp,2011-01-24 00:00:00,100,15000,0,2,254,0,0,B11001,20 9.2833,45.444,temp,2011-01-24 00:00:00,100,15000,0,2,254,0,0,B11002,5.7 9.2833,45.444,temp,2011-01-24 00:00:00,100,15000,0,2,254,0,0,B12101,219.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,15000,0,2,254,0,0,B12103,186.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,16000,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,16000,0,6,254,0,0,B11001,40 9.2833,45.444,temp,2011-01-24 00:00:00,100,16000,0,6,254,0,0,B11002,8.2 9.2833,45.444,temp,2011-01-24 00:00:00,100,17400,0,5,254,0,0,B08042,6 9.2833,45.444,temp,2011-01-24 00:00:00,100,17400,0,5,254,0,0,B12101,216.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,17400,0,5,254,0,0,B12103,186.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,17400,0,6,254,0,0,B08042,6 9.2833,45.444,temp,2011-01-24 00:00:00,100,17400,0,6,254,0,0,B11001,15 9.2833,45.444,temp,2011-01-24 00:00:00,100,17400,0,6,254,0,0,B11002,14.9 9.2833,45.444,temp,2011-01-24 00:00:00,100,20000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,20000,0,2,254,0,0,B10008,112938 9.2833,45.444,temp,2011-01-24 00:00:00,100,20000,0,2,254,0,0,B11001,25 9.2833,45.444,temp,2011-01-24 00:00:00,100,20000,0,2,254,0,0,B11002,13.4 9.2833,45.444,temp,2011-01-24 00:00:00,100,20000,0,2,254,0,0,B12101,217.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,20000,0,2,254,0,0,B12103,189.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,21100,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,21100,0,6,254,0,0,B11001,20 9.2833,45.444,temp,2011-01-24 00:00:00,100,21100,0,6,254,0,0,B11002,11.8 9.2833,45.444,temp,2011-01-24 00:00:00,100,21400,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,21400,0,5,254,0,0,B12101,218.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,21400,0,5,254,0,0,B12103,193.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,23100,0,3,254,0,0,B08042,20 9.2833,45.444,temp,2011-01-24 00:00:00,100,23100,0,3,254,0,0,B11001,40 9.2833,45.444,temp,2011-01-24 00:00:00,100,23100,0,3,254,0,0,B11002,17.0 9.2833,45.444,temp,2011-01-24 00:00:00,100,23100,0,3,254,0,0,B12101,214.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,23100,0,3,254,0,0,B12103,197.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,23100,0,5,254,0,0,B08042,20 9.2833,45.444,temp,2011-01-24 00:00:00,100,23100,0,5,254,0,0,B12101,214.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,23100,0,5,254,0,0,B12103,197.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,24500,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,24500,0,6,254,0,0,B11001,55 9.2833,45.444,temp,2011-01-24 00:00:00,100,24500,0,6,254,0,0,B11002,17.5 9.2833,45.444,temp,2011-01-24 00:00:00,100,25000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,25000,0,2,254,0,0,B10008,99004 9.2833,45.444,temp,2011-01-24 00:00:00,100,25000,0,2,254,0,0,B11001,55 9.2833,45.444,temp,2011-01-24 00:00:00,100,25000,0,2,254,0,0,B11002,19.5 9.2833,45.444,temp,2011-01-24 00:00:00,100,25000,0,2,254,0,0,B12101,217.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,25000,0,2,254,0,0,B12103,200.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,28300,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,28300,0,6,254,0,0,B11001,50 9.2833,45.444,temp,2011-01-24 00:00:00,100,28300,0,6,254,0,0,B11002,37.0 9.2833,45.444,temp,2011-01-24 00:00:00,100,29500,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,29500,0,5,254,0,0,B12101,219.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,29500,0,5,254,0,0,B12103,203.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,30000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,30000,0,2,254,0,0,B10008,87622 9.2833,45.444,temp,2011-01-24 00:00:00,100,30000,0,2,254,0,0,B11001,45 9.2833,45.444,temp,2011-01-24 00:00:00,100,30000,0,2,254,0,0,B11002,35.5 9.2833,45.444,temp,2011-01-24 00:00:00,100,30000,0,2,254,0,0,B12101,220.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,30000,0,2,254,0,0,B12103,202.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,31000,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,31000,0,5,254,0,0,B12101,221.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,31000,0,5,254,0,0,B12103,202.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,32900,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,32900,0,6,254,0,0,B11001,55 9.2833,45.444,temp,2011-01-24 00:00:00,100,32900,0,6,254,0,0,B11002,30.4 9.2833,45.444,temp,2011-01-24 00:00:00,100,34800,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,34800,0,5,254,0,0,B12101,225.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,34800,0,5,254,0,0,B12103,216.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,36000,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,36000,0,6,254,0,0,B11001,60 9.2833,45.444,temp,2011-01-24 00:00:00,100,36000,0,6,254,0,0,B11002,35.5 9.2833,45.444,temp,2011-01-24 00:00:00,100,39700,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,39700,0,5,254,0,0,B12101,233.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,39700,0,5,254,0,0,B12103,217.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,40000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,40000,0,2,254,0,0,B10008,68881 9.2833,45.444,temp,2011-01-24 00:00:00,100,40000,0,2,254,0,0,B11001,60 9.2833,45.444,temp,2011-01-24 00:00:00,100,40000,0,2,254,0,0,B11002,31.4 9.2833,45.444,temp,2011-01-24 00:00:00,100,40000,0,2,254,0,0,B12101,233.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,40000,0,2,254,0,0,B12103,219.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,40200,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,40200,0,5,254,0,0,B12101,233.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,40200,0,5,254,0,0,B12103,220.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,45500,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,45500,0,5,254,0,0,B12101,239.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,45500,0,5,254,0,0,B12103,222.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,46400,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,46400,0,5,254,0,0,B12101,240.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,46400,0,5,254,0,0,B12103,230.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,48800,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,48800,0,6,254,0,0,B11001,55 9.2833,45.444,temp,2011-01-24 00:00:00,100,48800,0,6,254,0,0,B11002,17.0 9.2833,45.444,temp,2011-01-24 00:00:00,100,50000,0,2,254,0,0,B08042,36 9.2833,45.444,temp,2011-01-24 00:00:00,100,50000,0,2,254,0,0,B10008,53574 9.2833,45.444,temp,2011-01-24 00:00:00,100,50000,0,2,254,0,0,B11001,50 9.2833,45.444,temp,2011-01-24 00:00:00,100,50000,0,2,254,0,0,B11002,15.4 9.2833,45.444,temp,2011-01-24 00:00:00,100,50000,0,2,254,0,0,B12101,244.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,50000,0,2,254,0,0,B12103,232.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,50000,0,5,254,0,0,B08042,36 9.2833,45.444,temp,2011-01-24 00:00:00,100,50000,0,5,254,0,0,B12101,244.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,50000,0,5,254,0,0,B12103,231.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,53800,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,53800,0,6,254,0,0,B11001,40 9.2833,45.444,temp,2011-01-24 00:00:00,100,53800,0,6,254,0,0,B11002,10.3 9.2833,45.444,temp,2011-01-24 00:00:00,100,54300,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,54300,0,5,254,0,0,B12101,248.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,54300,0,5,254,0,0,B12103,241.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,57600,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,57600,0,5,254,0,0,B12101,250.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,57600,0,5,254,0,0,B12103,246.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,60000,0,7,254,0,0,B08042,1 9.2833,45.444,temp,2011-01-24 00:00:00,100,60000,0,7,254,0,0,B11001,40 9.2833,45.444,temp,2011-01-24 00:00:00,100,60000,0,7,254,0,0,B11002,8.7 9.2833,45.444,temp,2011-01-24 00:00:00,100,62800,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,62800,0,5,254,0,0,B12101,254.06 9.2833,45.444,temp,2011-01-24 00:00:00,100,62800,0,5,254,0,0,B12103,250.56 9.2833,45.444,temp,2011-01-24 00:00:00,100,64800,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,64800,0,6,254,0,0,B11001,45 9.2833,45.444,temp,2011-01-24 00:00:00,100,64800,0,6,254,0,0,B11002,8.2 9.2833,45.444,temp,2011-01-24 00:00:00,100,68400,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,68400,0,5,254,0,0,B12101,259.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,68400,0,5,254,0,0,B12103,247.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,69500,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,69500,0,6,254,0,0,B11001,60 9.2833,45.444,temp,2011-01-24 00:00:00,100,69500,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,70000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,70000,0,2,254,0,0,B10008,29230 9.2833,45.444,temp,2011-01-24 00:00:00,100,70000,0,2,254,0,0,B11001,60 9.2833,45.444,temp,2011-01-24 00:00:00,100,70000,0,2,254,0,0,B11002,4.6 9.2833,45.444,temp,2011-01-24 00:00:00,100,70000,0,2,254,0,0,B12101,260.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,70000,0,2,254,0,0,B12103,248.46 9.2833,45.444,temp,2011-01-24 00:00:00,100,76400,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,76400,0,5,254,0,0,B12101,266.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,76400,0,5,254,0,0,B12103,248.26 9.2833,45.444,temp,2011-01-24 00:00:00,100,80000,0,7,254,0,0,B08042,1 9.2833,45.444,temp,2011-01-24 00:00:00,100,80000,0,7,254,0,0,B11001,5 9.2833,45.444,temp,2011-01-24 00:00:00,100,80000,0,7,254,0,0,B11002,3.6 9.2833,45.444,temp,2011-01-24 00:00:00,100,85000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,85000,0,2,254,0,0,B10008,14375 9.2833,45.444,temp,2011-01-24 00:00:00,100,85000,0,2,254,0,0,B11001,255 9.2833,45.444,temp,2011-01-24 00:00:00,100,85000,0,2,254,0,0,B11002,2.6 9.2833,45.444,temp,2011-01-24 00:00:00,100,85000,0,2,254,0,0,B12101,270.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,85000,0,2,254,0,0,B12103,247.86 9.2833,45.444,temp,2011-01-24 00:00:00,100,88500,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,88500,0,5,254,0,0,B12101,272.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,88500,0,5,254,0,0,B12103,245.66 9.2833,45.444,temp,2011-01-24 00:00:00,100,88900,0,7,254,0,0,B08042,1 9.2833,45.444,temp,2011-01-24 00:00:00,100,88900,0,7,254,0,0,B11001,230 9.2833,45.444,temp,2011-01-24 00:00:00,100,88900,0,7,254,0,0,B11002,3.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,90700,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,90700,0,5,254,0,0,B12101,274.16 9.2833,45.444,temp,2011-01-24 00:00:00,100,90700,0,5,254,0,0,B12103,254.16 9.2833,45.444,temp,2011-01-24 00:00:00,100,91300,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,91300,0,5,254,0,0,B12101,273.16 9.2833,45.444,temp,2011-01-24 00:00:00,100,91300,0,5,254,0,0,B12103,262.16 9.2833,45.444,temp,2011-01-24 00:00:00,100,96000,0,6,254,0,0,B08042,2 9.2833,45.444,temp,2011-01-24 00:00:00,100,96000,0,6,254,0,0,B11001,275 9.2833,45.444,temp,2011-01-24 00:00:00,100,96000,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,96400,0,5,254,0,0,B08042,4 9.2833,45.444,temp,2011-01-24 00:00:00,100,96400,0,5,254,0,0,B12101,274.56 9.2833,45.444,temp,2011-01-24 00:00:00,100,96400,0,5,254,0,0,B12103,262.56 9.2833,45.444,temp,2011-01-24 00:00:00,100,99500,0,5,254,0,0,B08042,6 9.2833,45.444,temp,2011-01-24 00:00:00,100,99500,0,5,254,0,0,B12101,274.76 9.2833,45.444,temp,2011-01-24 00:00:00,100,99500,0,5,254,0,0,B12103,268.76 9.2833,45.444,temp,2011-01-24 00:00:00,100,99500,0,6,254,0,0,B08042,6 9.2833,45.444,temp,2011-01-24 00:00:00,100,99500,0,6,254,0,0,B11001,280 9.2833,45.444,temp,2011-01-24 00:00:00,100,99500,0,6,254,0,0,B11002,5.1 9.2833,45.444,temp,2011-01-24 00:00:00,100,100000,0,2,254,0,0,B08042,32 9.2833,45.444,temp,2011-01-24 00:00:00,100,100000,0,2,254,0,0,B10008,1599 9.2833,45.444,temp,2011-01-24 00:00:00,100,100000,0,2,254,0,0,B11001,270 9.2833,45.444,temp,2011-01-24 00:00:00,100,100000,0,2,254,0,0,B11002,3.6 9.2833,45.444,temp,2011-01-24 00:00:00,100,100000,0,2,254,0,0,B12101,274.36 9.2833,45.444,temp,2011-01-24 00:00:00,100,100000,0,2,254,0,0,B12103,269.56 9.2833,45.444,temp,2011-01-24 00:00:00,100,100700,0,1,254,0,0,B08042,64 9.2833,45.444,temp,2011-01-24 00:00:00,100,100700,0,1,254,0,0,B11001,250 9.2833,45.444,temp,2011-01-24 00:00:00,100,100700,0,1,254,0,0,B11002,1.0 9.2833,45.444,temp,2011-01-24 00:00:00,100,100700,0,1,254,0,0,B12101,273.56 9.2833,45.444,temp,2011-01-24 00:00:00,100,100700,0,1,254,0,0,B12103,269.56 9.2833,45.444,temp,2011-01-24 00:00:00,103,2000,,,254,0,0,B12101,273.56 9.2833,45.444,temp,2011-01-24 00:00:00,103,2000,,,254,0,0,B12103,269.56 9.2833,45.444,temp,2011-01-24 00:00:00,103,10000,,,254,0,0,B11001,250 9.2833,45.444,temp,2011-01-24 00:00:00,103,10000,,,254,0,0,B11002,2.0 9.2833,45.444,temp,2011-01-24 00:00:00,256,,258,0,254,0,0,B20011,0 9.2833,45.444,temp,2011-01-24 00:00:00,256,,258,0,254,0,0,B20013,2500 9.2833,45.444,temp,2011-01-24 00:00:00,256,,258,1,254,0,0,B20012,30 9.2833,45.444,temp,2011-01-24 00:00:00,256,,258,2,254,0,0,B20012,30 9.2833,45.444,temp,2011-01-24 00:00:00,256,,258,3,254,0,0,B20012,30 9.2833,45.444,temp,,,,,,,,,B01001,16 9.2833,45.444,temp,,,,,,,,,B01002,80 9.2833,45.444,temp,,,,,,,,,B01194,temp 9.2833,45.444,temp,,,,,,,,,B04001,2011 9.2833,45.444,temp,,,,,,,,,B04002,1 9.2833,45.444,temp,,,,,,,,,B04003,24 9.2833,45.444,temp,,,,,,,,,B04004,0 9.2833,45.444,temp,,,,,,,,,B04005,0 9.2833,45.444,temp,,,,,,,,,B04006,0 9.2833,45.444,temp,,,,,,,,,B05001,45.44442 9.2833,45.444,temp,,,,,,,,,B06001,9.28333 9.2833,45.444,temp,,,,,,,,,B07030,102.0 9.2833,45.444,temp,,,,,,,,,B07031,103.0 dballe-7.21/extra/runtest0000755000175000017500000000336113022043102012352 00000000000000#!/bin/bash set -e # Limit to 1G of virtual memory ulimit -v 1000000 TOP_SRCDIR=`pwd`/`dirname $0`/.. PYTHON=${PYTHON:-python} CMD=`pwd`/"$1" ## Run under eatmydata if available libeatmydata="/usr/lib/libeatmydata/libeatmydata.so" if [ -e $libeatmydata ] then if [ -n "$LD_PRELOAD" ]; then export LD_PRELOAD="$libeatmydata $LD_PRELOAD" else export LD_PRELOAD="$libeatmydata" fi fi ## Set up the test environment export WREPORT_EXTRA_TABLES=$TOP_SRCDIR/tables export WREPORT_TESTDATA=$TOP_SRCDIR/extra export DBA_REPINFO=$TOP_SRCDIR/tables/repinfo.csv export DBA_TABLES=$TOP_SRCDIR/tables export DBA_TESTDATA=$TOP_SRCDIR/extra export DBA_INSECURE_SQLITE=1 TESTDIR="`mktemp -d`" cd "$TESTDIR" touch test.sqlite ## Clean up the test environment at exit unless asked otherwise cleanup() { if [ ! -z "$PAUSE" ] then echo "Post-test inspection requested." echo "Exit this shell to cleanup the test environment." bash fi test -z "$PRESERVE" && rm -rf "$TESTDIR" } trap cleanup EXIT #id=`date +%y%m%d%H%M%S` #$DEBUGGER $BIN $ARGS 2>&1 | tee `pwd`/testrun-$id #echo Output saved in `pwd`/testrun-$id # Try to debug the libtool executable, if present DIR=`dirname $CMD` BASE=`basename $CMD` if [ "${BASE##*.}" = "py" ] then CMD="$PYTHON $CMD" fi if [ ! -z "$DEBUGGER" ] then if [ -x $DIR/.libs/lt-$BASE ] then CMD="$DIR/.libs/lt-$BASE" fi echo "Running $DEBUGGER $CMD $ARGS" RES=0 if $DEBUGGER $CMD $ARGS then true else RES=$? echo "Failed with result $RES" fi else echo "Running $CMD $ARGS" RES=0 if $CMD $ARGS then true else RES=$? echo "Failed with result $RES" fi fi exit $RES dballe-7.21/extra/crex/0000755000175000017500000000000013022043102011736 500000000000000dballe-7.21/extra/crex/test-synop1.crex0000644000175000017500000000025013022043102014744 00000000000000CREX++ T000103 A000 D01031 R02005 B07061 B12030++ 10 280 1 2004 11 30 12 00 5355000 01320000 00080 00005 046 00010 042 00020 041 00050 053 00100 066++ 7777 dballe-7.21/extra/crex/test-synop2.crex0000644000175000017500000000041213022043102014745 00000000000000CREX++ T000103 A000 D07005 B13023 B13013++ 10 954 1 2004 11 30 12 00 4783000 01087000 00757 09201 ///// -0021 07 070 0060 017 008 /// 0450 010 02 02 100 01 08 0015 36 61 60 01 08 07 0017 02 // // //// 03 // // //// // // // //// ///// /////++ 7777 dballe-7.21/extra/crex/test-synop3.crex0000644000175000017500000000045113022043102014751 00000000000000CREX++ T000103 A000 D01031 B12013 B12017 B12016 B13031 B14015 B14031 B20062 B20192 B20192 B20192 B20192 B11233 B11041 B11230 B11231 B11232++ 02 945 1 2004 11 30 12 00 6185000 02480000 00145 /// /// /// /// ///// //// // ///// ///// ///// ///// //// //// //// //// ////++ 7777 dballe-7.21/extra/crex/test-temp0.crex0000644000175000017500000000562113022043102014547 00000000000000CREX++ T000103 A002 D09007 R04000 B07004 B08001 B11061 B11062 ++ 06 181 071 04 2004 11 30 12 00 5575000 01252000 00040 /// 01 // //// // // // 0075 10130 106 000039 062 023 215 0020 10000 040 000143 052 008 225 0050 09710 004 000378 032 -028 /// //// 09600 002 ////// /// /// 235 0070 09250 040 000762 -003 -035 240 0070 08790 004 001158 -043 -044 /// //// 08630 004 001300 -053 -054 /// //// 08600 004 001327 -057 -117 /// //// 08570 004 001354 -029 -179 /// //// 08530 004 001390 000 -190 /// //// 08500 040 001419 004 -226 245 0070 08340 004 001567 006 -244 /// //// 07590 004 002307 002 -178 /// //// 07000 040 002939 -033 -243 260 0120 06970 002 ////// /// /// 260 0120 06460 002 ////// /// /// 260 0090 06150 004 003931 -091 -211 /// //// 06010 004 004105 -097 -257 /// //// 05680 002 ////// /// /// 230 0110 05460 004 004823 -153 -343 /// //// 05370 002 ////// /// /// 240 0090 05000 040 005472 -207 -297 275 0070 04930 002 ////// /// /// 280 0070 04900 004 005614 -219 -329 /// //// 04800 002 ////// /// /// 290 0070 04510 004 006207 -263 -309 /// //// 04300 004 006544 -287 -367 /// //// 04050 002 ////// /// /// 295 0090 04000 040 007051 -333 -383 295 0090 03560 002 ////// /// /// 325 0090 03500 004 007952 -409 -447 /// //// 03180 004 008584 -463 -505 /// //// 03000 040 008963 -493 -529 330 0150 02500 040 010120 -565 -625 335 0200 02420 004 010315 -583 -643 /// //// 02000 040 011474 -673 -722 330 0210 01990 002 ////// /// /// 330 0210 01970 004 011555 -681 -729 /// //// 01810 024 012051 -697 -738 325 0200 01500 040 013170 -655 -765 325 0160 01490 004 013202 -647 -757 /// //// 01400 004 013574 -649 -789 /// //// 01180 004 014598 -641 -821 /// //// 01170 002 ////// /// /// 315 0110 01100 004 015017 -663 -853 /// //// 01000 042 015593 -631 -841 335 0110 00906 002 ////// /// /// 305 0120 00831 002 ////// /// /// 330 0190 00795 002 ////// /// /// 340 0180 00714 002 ////// /// /// 330 0160 00700 040 017711 -693 -893 330 0160 00685 024 017806 -697 -887 330 0160 00640 004 018205 -677 -887 /// //// 00599 002 ////// /// /// 335 0130 00500 040 019682 -695 -885 340 0150 00385 004 021178 -709 -899 /// //// 00377 002 ////// /// /// 345 0150 00318 002 ////// /// /// 340 0200 00300 040 022673 -697 -907 335 0190 00274 004 023162 -689 -899 /// //// 00268 002 ////// /// /// 330 0150 00235 002 ////// /// /// 350 0160 00216 002 ////// /// /// 340 0160 00200 040 025036 -701 -911 335 0170 00175 002 ////// /// /// 325 0240 00170 004 025934 -727 -917 /// //// 00155 004 026469 -699 -909 /// //// 00138 002 ////// /// /// 325 0170 00104 004 028776 -737 -927 /// //// 00100 040 029037 -733 -923 325 0260 00090 004 029609 -709 -899 /// //// 00083 002 ////// /// /// 315 0310 00080 004 030290 -725 -915 /// //// 00070 012 ////// /// /// 330 0440 00068 004 031240 -663 -873 /// //// 0001 00070 010 0140 ////++ 7777 dballe-7.21/extra/crex/test-mare0.crex0000644000175000017500000000026413022043102014524 00000000000000CREX++ T000103 A001 D08003++ 44613 010 000 0 2004 11 30 12 00 6827 00968 ///// ///// //// // /// //// /// /// /// //// /// // // /// // // //// // // // 2809++ 7777 dballe-7.21/extra/crex/test-mare1.crex0000644000175000017500000000026513022043102014526 00000000000000CREX++ T000103 A001 D08003++ 44743 010 000 0 2004 11 30 12 00 4302 -01245 10084 10084 0016 07 /// //// /// /// /// //// /// // // /// // // //// // // // 2882++ 7777 dballe-7.21/extra/crex/old/0000755000175000017500000000000013022043102012514 500000000000000dballe-7.21/extra/crex/old/test-buoy.crex0000644000175000017500000000032713022043102015254 00000000000000CREX++ T000103 A001 D08003 E++ 148583 2/// 3/// 40 52003 611 725 815 910 08336 1-14709 2///// 310114 4//// 5// 6/// 7//// 8/// 9/// 0/// 1//// 2/// 3// 4// 5/// 6// 7// 8//// 9// 0// 1// 2////++ 7777 dballe-7.21/extra/crex/old/test-acar.crex0000644000175000017500000000055713022043102015211 00000000000000CREX++ T000103 A004 B01006 B01008 B02061 B02062 B02002 B02005 B02070 B02063 B02001 B04001 B04002 B04003 B04004 B04005 B05002 B06002 B08004 B07004 B08021 B11001 B11002 B11031 B11034 B11035 B12001 B12003 B13003 B20041++ 00001008 JEWEITRA / 03 04 025 10 ///// 0 2003 12 21 21 01 3400 -08501 / 06318 // 296 0093 // //// ///// -035 /// /// //++ 7777 dballe-7.21/extra/crex/old/test-synop-ship.crex0000644000175000017500000000036413022043102016410 00000000000000CREX++ T000103 A001 D08004 B12005 B10197 E++ 1000001009 2315 3009 41 52003 611 705 806 900 0-0800 1-00320 2///// 310134 40001 500 6150 70080 8220 9171 0/// 12000 2003 302 402 5090 601 707 80045 937 025 116 22948 3190 4///++ 7777 dballe-7.21/extra/crex/old/test-synop.crex0000644000175000017500000000047513022043102015452 00000000000000CREX++ T000103 A000 D07005 B13023 B13013 E++ 110 2033 31 42003 512 621 722 800 95483000 000950000 100033 209917 309958 40041 5// 6300 70100 8011 9-005 0/// 12500 2002 301 401 5025 601 702 80175 935 020 110 201 307 406 50152 602 7// 8// 9//// 003 1// 2// 3//// 4// 5// 6// 7//// 8///// 9/////++ 7777 dballe-7.21/extra/crex/old/test-buoy-baddigit.crex0000644000175000017500000000032713022043102017021 00000000000000CREX++ T000103 A001 D08003 E++ 148583 2/// 3/// 40 52003 611 725 815 910 08336 1-14709 2///// 310114 4//// 5// 6/// 1//// 8/// 9/// 0/// 1//// 2/// 3// 4// 5/// 6// 7// 8//// 9// 0// 1// 2////++ 7777 dballe-7.21/extra/crex/old/test-temp.crex0000644000175000017500000000466413022043102015253 00000000000000CREX++ T000103 A002 D09007 R04000 B07004 B08001 B11061 B11062 E++ 161 2052 3/// 4// 52003 612 721 822 900 01348000 100217000 200227 3/// 4// 5// 6//// 7// 8// 9// 00052 110000 2040 3000126 4/// 5/// 6/// 7//// 809890 9100 0000223 1234 2-046 3020 40020 509250 6040 7000792 8228 9-092 0065 10100 208500 3040 4001505 5184 6-216 7080 80060 907000 0040 1003114 2094 3-066 4225 50060 605000 7040 8005766 9-059 0-539 1145 20040 304000 4040 5007443 6-159 7-609 8280 90040 003000 1040 2009493 3-335 4-605 5345 60140 702500 8040 9010719 0-437 1/// 2305 30150 402000 5040 6012160 7-555 8/// 9280 00180 101500 2040 3013896 4-695 5/// 6250 70310 801420 9010 0////// 1/// 2/// 3260 40320 501000 6040 7016240 8-785 9/// 0265 10090 200970 3024 4////// 5-799 6/// 7245 80070 900943 0002 1////// 2/// 3/// 4240 50060 600882 7002 8////// 9/// 0/// 1325 20050 300839 4002 5////// 6/// 7/// 8035 90050 000817 1002 2////// 3/// 4/// 5105 60050 700799 8002 9////// 0/// 1/// 2145 30060 400768 5004 6////// 7-819 8/// 9/// 0//// 100700 2044 3018221 4-757 5/// 6215 70050 800668 9002 0////// 1/// 2/// 3245 40050 500615 6004 7////// 8-717 9/// 0/// 1//// 200586 3002 4////// 5/// 6/// 7150 80020 900575 0002 1////// 2/// 3/// 4055 50030 600539 7002 8////// 9/// 0/// 1065 20070 300511 4002 5////// 6/// 7/// 8120 90100 000500 1040 2020172 3-697 4/// 5115 60100 700494 8002 9////// 0/// 1/// 2110 30100 400474 5004 6////// 7-689 8/// 9/// 0//// 100470 2002 3////// 4/// 5/// 6130 70070 800444 9002 0////// 1/// 2/// 3100 40050 500424 6002 7////// 8/// 9/// 0055 10040 200422 3004 4////// 5-641 6/// 7/// 8//// 900412 0002 1////// 2/// 3/// 4035 50050 600388 7002 8////// 9/// 0/// 1045 20060 300386 4004 5////// 6-657 7/// 8/// 9//// 000369 1002 2////// 3/// 4/// 5075 60070 700356 8004 9////// 0-619 1/// 2/// 3//// 400352 5002 6////// 7/// 8/// 9070 00100 100335 2002 3////// 4/// 5/// 6090 70120 800316 9002 0////// 1/// 2/// 3105 40090 500300 6040 7023232 8-605 9/// 0095 10080 200297 3002 4////// 5/// 6/// 7085 80090 900294 0004 1////// 2-605 3/// 4/// 5//// 600287 7002 8////// 9/// 0/// 1105 20080 300263 4002 5////// 6/// 7/// 8070 90080 000254 1002 2////// 3/// 4/// 5075 60100 700239 8002 9////// 0/// 1/// 2040 30090 400222 5002 6////// 7/// 8/// 9090 00080 100209 2006 3////// 4-523 5/// 6080 70090 800200 9040 0025762 1/// 2/// 3/// 4//// 50001 601420 7010 80070 90220++ 7777 dballe-7.21/extra/crex/old/test-satob.crex0000644000175000017500000000077013022043102015410 00000000000000CREX++ T000103 A005 D01043 D04001++ 0254 01 2003 12 21 23 00 00 3990000 -08950000 02 02600 -495 285 0267+ 0254 01 2003 12 21 23 00 00 3990000 -08950000 02 02600 -495 280 0267+ 0254 01 2003 12 21 23 00 00 3960000 -08890000 02 03100 -395 285 0216+ 0254 01 2003 12 21 23 00 00 3980000 -08790000 02 02800 -473 285 0231+ 0254 01 2003 12 21 23 00 00 3850000 -08960000 02 02600 -511 290 0236+ 0254 01 2003 12 21 23 00 00 3830000 -08970000 02 02200 -519 290 0241++ 7777 dballe-7.21/extra/crex/old/test-amdar.crex0000644000175000017500000000020513022043102015355 00000000000000CREX++ T000103 A004 D11001++ 00001008 0 2003 11 05 00 00 3150500 01311833 3 01005 -482 318 0293 // ///// ///// //++ 7777 dballe-7.21/extra/crex/test-mare2.crex0000644000175000017500000000054713022043102014532 00000000000000CREX++ T000103 A001 D01036 B12015 B12014 D02024 B22001 B22011 B22021 B13031 B14015 B14031 B20063 B20063 B20063 B20063 B20033 B20031 B20032 B20034 B20037 B20038 B20036++ SHIP 270 012 1 2004 11 30 12 00 3390 02900 /// /// /// // //// /// // //// /// // //// /// // //// /// ///// //// //// //// //// //// // /// / // // /// //++ 7777 dballe-7.21/extra/crex/test-synop0.crex0000644000175000017500000000037413022043102014752 00000000000000CREX++ T000103 A000 D07005 B13023 B13013++ 10 837 1 2004 11 30 12 00 4822000 00992000 00550 09434 10094 -0017 07 080 0060 030 007 /// 0500 010 02 02 100 01 08 0045 35 61 60 01 08 06 0035 02 // // //// 03 // // //// // // // //// ///// /////++ 7777 dballe-7.21/libdballef.pc.in0000644000175000017500000000031513022043102012602 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: libdballef Description: DB-All.e Fortran API Version: @VERSION@ Cflags: -I${includedir} Libs: -L${libdir} -ldballef dballe-7.21/run-local0000755000175000017500000000056013022043102011415 00000000000000#!/bin/bash TOP_SRCDIR=$(cd $(dirname $0) && pwd) export LD_LIBRARY_PATH="$TOP_SRCDIR/dballe:$LD_LIBRARY_PATH" export WREPORT_EXTRA_TABLES=$TOP_SRCDIR/tables export DBA_REPINFO=$TOP_SRCDIR/tables/repinfo.csv export DBA_TABLES=$TOP_SRCDIR/tables/ export PYTHONPATH=$TOP_SRCDIR/python export PATH="$TOP_SRCDIR/src:$PATH" exec "$TOP_SRCDIR"/libtool --mode=execute "$@" dballe-7.21/run-check.conf.example0000644000175000017500000000041213022043102013747 00000000000000# Put this file in .git/ to configure access to test databases. # See doc/fapi_connect.md #DBA_DB_SQLITE=sqlite://test.sqlite #DBA_DB_POSTGRESQL=postgresql:///test #DBA_DB_MYSQL=mysql:///test # Default database to use for command line tools #DBA_DB=$DBA_DB_SQLITE dballe-7.21/libdballe.pc.in0000644000175000017500000000035613022043102012441 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: libdballe Description: DB-All.e C library Version: @VERSION@ Requires: libwreport >= 1.0, sqlite3 Cflags: -I${includedir} Libs: -L${libdir} -ldballe dballe-7.21/run-check0000755000175000017500000000060213022043102011375 00000000000000#!/bin/sh TOP_SRCDIR=$(cd $(dirname $0) && pwd) export LD_LIBRARY_PATH="$TOP_SRCDIR/dballe:$LD_LIBRARY_PATH" export WREPORT_EXTRA_TABLES=$TOP_SRCDIR/tables for conffile in ./run-check.conf .git/run-check.conf do if [ -f "$conffile" ] then . "$conffile" export DBA_DB export DBA_DB_SQLITE export DBA_DB_POSTGRESQL export DBA_DB_MYSQL break fi done exec make check "$@" dballe-7.21/Makefile.am0000644000175000017500000000264713022043102011637 00000000000000## Process this file with automake to produce Makefile.in ACLOCAL_AMFLAGS = -I m4 SUBDIRS = tables dballe extra src if DO_DBALLEF SUBDIRS += fortran endif if DO_DOCS SUBDIRS += doc endif if DO_DBALLE_PYTHON SUBDIRS += python endif SUBDIRS += . #examples pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA=libdballe.pc libdballef.pc m4dir = $(datadir)/aclocal m4_DATA = libdballe.m4 libdballef.m4 man_MANS = dbatbl.1 dbamsg.1 dbadb.1 dbaexport.1 dbadb.1: src/dbadb doc/add_templates_to_manpage ( cd src && ./`basename $<` help manpage ) | ( cd $(srcdir) && $(srcdir)/doc/add_templates_to_manpage ) > $@ dbamsg.1: src/dbamsg doc/add_templates_to_manpage ( cd src && ./`basename $<` help manpage ) | ( cd $(srcdir) && $(srcdir)/doc/add_templates_to_manpage ) > $@ dbaexport.1: src/dbaexport COLUMNS=200 help2man --name='export data from DB-All.e' --section=1 --no-info --version-string="$(PACKAGE_VERSION)" $< > $@ %.1: src/% ( cd src && ./`basename $<` help manpage ) > $@ BUILT_SOURCES = dbaexport.1 EXTRA_DIST = README.md LICENSE BENCHMARKS autogen.sh \ libdballe.m4 libdballef.m4 \ libdballe.pc.in libdballef.pc.in \ $(conf_DATA) get_line_no run-check.conf.example \ run-check run-local run-bench bench-plot show_code_notes \ fabfile.py \ $(wildcard bench/*.csv) \ UPGRADE-5.x \ dbaexport.1 \ fedora/SPECS/dballe.spec CLEANFILES = dbatbl.1 dbamsg.1 dbadb.1 fabfile.pyc dballe-7.21/configure.ac0000644000175000017500000001730213022043102012063 00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT(dballe, [7.21], [enrico@enricozini.org]) AC_CONFIG_SRCDIR([configure.ac]) AM_INIT_AUTOMAKE([foreign subdir-objects]) AC_CONFIG_HEADER(config.h) AC_CONFIG_MACRO_DIR([m4]) dnl Use libtool dnl AM_ENABLE_STATIC dnl AM_DISABLE_SHARED LT_INIT() LT_LANG([C++]) AM_PROG_LIBTOOL AC_ARG_ENABLE([dballef], [AS_HELP_STRING( [--enable-dballef], [build DB-All.e Fortran bindings])], [], [enable_dballef="yes"]) AC_ARG_ENABLE([dballe-python], [AS_HELP_STRING( [--enable-dballe-python], [build DB-All.e Python bindings])], [], [enable_dballe_python="yes"]) AC_ARG_ENABLE([docs], [AS_HELP_STRING( [--enable-docs], [enable building of the documentation])], [], [enable_docs="yes"]) AC_CHECK_PROG(have_rst2html, rst2html, yes, no) dnl To use subdirs AC_PROG_MAKE_SET AC_LANG([C++]) AC_ISC_POSIX AC_PROG_CC AC_PROG_CXX AC_PROG_FC([gfortran pgf90 ifort g95 xlf90 f90]) F77=$FC dnl Use c++11 AX_CXX_COMPILE_STDCXX_11 AM_PROG_CC_STDC dnl Needed by subdir-objects AM_PROG_CC_C_O AC_SYS_LARGEFILE dnl See http://www.gossamer-threads.com/lists/xen/devel/275132 FILE_OFFSET_BITS_64= if test $ac_cv_sys_file_offset_bits = 64 then FILE_OFFSET_BITS_64=yes fi AM_CONDITIONAL([FILE_OFFSET_BITS_64], [test x"$FILE_OFFSET_BITS_64" = x"yes"]) dnl We want to invoke pkg-config directly PKG_PROG_PKG_CONFIG if test x$enable_docs = xyes then dnl Check for doxygen AC_CHECK_PROG(have_doxygen, doxygen, true) if test x$have_doxygen != xtrue then AC_MSG_WARN([doxygen was not found: documentation will not be built]) enable_docs=no fi fi dnl Check for gperf AC_CHECK_PROG(have_gperf, gperf, true) if test x$have_gperf != xtrue then AC_MSG_WARN([gperf was not found: relying on prebuilt sources]) has_build_gperf_sources=yes for f in dballe/core/record_keyword.cc dballe/core/aliases.cc dballe/msg/vars.cc do if ! test -f $f then has_build_gperf_sources=no AC_MSG_WARN([please extract $f from the distribution tarball]) fi done if test $has_build_gperf_sources = no then AC_MSG_ERROR([some gperf-generated source files are missing and gperf is not available to rebuild them]) fi fi dnl Check for missing functions in libc AC_CHECK_FUNC(vasprintf, , [ AC_DEFINE([USE_OWN_VASPRINTF], 1, [we need to use our own vasprintf]) ]) AC_CHECK_FUNC(bswap_32, , [ AC_DEFINE([USE_OWN_BSWAP], 1, [we need to use our own bswap_* functions]) ]) AC_CHECK_FUNC(strcasestr, [ AC_DEFINE([HAVE_STRCASESTR], 1, [we can use strcasestr]) ]) if test x$docdir = x then docdir='${datadir}/doc/${PACKAGE_TARNAME}' AC_SUBST(docdir) fi dnl Check for python AM_PATH_PYTHON([], [], [ enable_dballe_python=no ]) if test x$enable_dballe_python = xyes then PYTHON_CFLAGS=`unset CFLAGS; $PYTHON-config --cflags` AC_SUBST(PYTHON_CFLAGS) fi dnl Check for wreport PKG_CHECK_MODULES(WREPORT,libwreport >= 3.6) dnl Check for sqlite3 PKG_CHECK_MODULES(SQLITE3, sqlite3) dnl Check for libpq PKG_CHECK_EXISTS(libpq, [have_libpq=yes], [have_libpq=no]) if test x$have_libpq = xyes then PKG_CHECK_MODULES(LIBPQ, libpq) AC_DEFINE([HAVE_LIBPQ], 1, [PostgreSQL is available]) fi AM_CONDITIONAL([HAVE_LIBPQ], [test x"$have_libpq" = x"yes"]) dnl Check for libmysqlclient AC_PATH_PROG(mysql_config, [mysql_config]) if test x$mysql_config = x then have_mysql=no else have_mysql=yes MYSQL_CFLAGS=`$mysql_config --cflags` MYSQL_LIBS=`$mysql_config --libs_r` AC_SUBST(MYSQL_CFLAGS) AC_SUBST(MYSQL_LIBS) AC_DEFINE([HAVE_MYSQL], 1, [MySQL is available]) fi AM_CONDITIONAL([HAVE_MYSQL], [test x"$have_mysql" = x"yes"]) dnl Check for lua PKG_CHECK_EXISTS([lua5.2], [have_lua=yes], [have_lua=no]) if test x$have_lua = xyes then PKG_CHECK_MODULES(LUA,lua5.2,,[have_lua=no]) else PKG_CHECK_EXISTS([lua5.1], [have_lua=yes], [have_lua=no]) if test x$have_lua = xyes then PKG_CHECK_MODULES(LUA,lua5.1,,[have_lua=no]) else PKG_CHECK_EXISTS([lua], [have_lua=yes], [have_lua=no]) if test x$have_lua = xyes then PKG_CHECK_MODULES(LUA,lua,,[have_lua=no]) else dnl We don't always have the luxury of .pc files for lua, it seems have_lua=yes AC_CHECK_LIB([lua], [lua_gettop], [true], [have_lua=no]) AC_CHECK_HEADER([lua.h], [true], [have_lua=no]) if test x$have_lua = xyes then LUA_CFLAGS= LUA_LIBS="-llua" fi fi fi fi if test x$have_lua = xyes then AC_DEFINE([HAVE_LUA], 1, [lua is available]) fi AM_CONDITIONAL([LUA], [test x"$have_lua" = x"yes"]) dnl Check for popt AC_CHECK_HEADER(popt.h, AC_DEFINE(HAVE_POPT_H, 1, popt.h has been found), AC_MSG_ERROR([*** popt.h not found. Check 'config.log' for more details.]) ) AC_CHECK_LIB(popt, poptGetContext, LIBS="$LIBS -lpopt", AC_MSG_ERROR([*** libpopt not found. Check 'config.log' for more details.]) ) LIBS="$LIBS -lm" confdir='${sysconfdir}'"/$PACKAGE" AC_SUBST(confdir) # tabledir="`$PKG_CONFIG --variable=tabledir libwreport`" tabledir='${datadir}/wreport' AC_SUBST(tabledir) dnl def_tabledir=`echo "${sharedstatedir}/lib/$PACKAGE/tables"` dnl AC_DEFINE_UNQUOTED(TABLE_DIR, "$def_tabledir", "Default location for table files") dnl From libtool's documentation: dnl dnl This flag accepts an argument of the form `CURRENT[:REVISION[:AGE]]'. dnl dnl CURRENT dnl The most recent interface number that this library implements. dnl dnl REVISION dnl The implementation number of the CURRENT interface. dnl dnl AGE dnl The difference between the newest and oldest interfaces that this dnl library implements. In other words, the library implements all the dnl interface numbers in the range from number `CURRENT - AGE' to dnl `CURRENT'. dnl dnl If two libraries have identical CURRENT and AGE numbers, then the dnl dynamic linker chooses the library with the greater REVISION number. dnl dnl 3. If the library source code has changed at all since the last dnl update, then increment REVISION (`C:R:A' becomes `C:r+1:A'). dnl dnl 4. If any interfaces have been added, removed, or changed since the dnl last update, increment CURRENT, and set REVISION to 0. dnl dnl 5. If any interfaces have been added since the last public release, dnl then increment AGE. dnl dnl 6. If any interfaces have been removed since the last public release, dnl then set AGE to 0. LIBDBALLE_VERSION_INFO="7:3:0" LIBDBALLEF_VERSION_INFO="5:0:0" AC_SUBST(LIBDBALLE_VERSION_INFO) AC_SUBST(LIBDBALLEF_VERSION_INFO) dnl Enable extra compiler warnings AX_CXXFLAGS_WARN_ALL dnl warnings="-Wall -Wextra -Werror=return-type -Werror=empty-body" dnl CFLAGS="$warnings $CFLAGS" dnl CXXFLAGS="$warnings $CXXFLAGS" # Enforce dependencies if test x"$enable_dballef" = x"yes"; then AC_DEFINE(HAVE_DBALLEF,[],[Have Fortran bindings]) fi if test x"$enable_dballe_python" = x"yes"; then AC_DEFINE(HAVE_DBALLE_PYTHON,[],[Have Python bindings]) fi AM_CONDITIONAL([DO_DBALLEF], [test x"$enable_dballef" = x"yes"]) AM_CONDITIONAL([DO_DBALLE_PYTHON], [test x"$enable_dballe_python" = x"yes"]) AM_CONDITIONAL([DO_DOCS], [test x"$enable_docs" = x"yes"]) AM_CONDITIONAL([HAVE_RST2HTML], [test x$have_rst2html = xyes]) AC_CONFIG_FILES([ Makefile dballe/Makefile fortran/Makefile src/Makefile tables/Makefile extra/Makefile python/Makefile doc/Makefile doc/libdballe.dox doc/libdballef.dox libdballe.pc libdballef.pc ]) AC_OUTPUT AC_MSG_NOTICE([ =================================================== $PACKAGE_NAME-$PACKAGE_VERSION configuration: AS_HELP_STRING([PostgreSQL:], [$have_libpq]) AS_HELP_STRING([MySQL:], [$have_mysql]) AS_HELP_STRING([Fortran:], [$enable_dballef]) AS_HELP_STRING([Python:], [$enable_dballe_python]) AS_HELP_STRING([documentation:], [$enable_docs]) AS_HELP_STRING([rst2html:], [$have_rst2html]) ===================================================]) dballe-7.21/py-compile0000755000175000017500000001107613022512015011607 00000000000000#!/bin/sh # py-compile - Compile a Python program scriptversion=2011-06-08.12; # UTC # Copyright (C) 2000-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . if [ -z "$PYTHON" ]; then PYTHON=python fi me=py-compile usage_error () { echo "$me: $*" >&2 echo "Try '$me --help' for more information." >&2 exit 1 } basedir= destdir= while test $# -ne 0; do case "$1" in --basedir) if test $# -lt 2; then usage_error "option '--basedir' requires an argument" else basedir=$2 fi shift ;; --destdir) if test $# -lt 2; then usage_error "option '--destdir' requires an argument" else destdir=$2 fi shift ;; -h|--help) cat <<\EOF Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..." Byte compile some python scripts FILES. Use --destdir to specify any leading directory path to the FILES that you don't want to include in the byte compiled file. Specify --basedir for any additional path information you do want to be shown in the byte compiled file. Example: py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py Report bugs to . EOF exit $? ;; -v|--version) echo "$me $scriptversion" exit $? ;; --) shift break ;; -*) usage_error "unrecognized option '$1'" ;; *) break ;; esac shift done files=$* if test -z "$files"; then usage_error "no files given" fi # if basedir was given, then it should be prepended to filenames before # byte compilation. if [ -z "$basedir" ]; then pathtrans="path = file" else pathtrans="path = os.path.join('$basedir', file)" fi # if destdir was given, then it needs to be prepended to the filename to # byte compile but not go into the compiled file. if [ -z "$destdir" ]; then filetrans="filepath = path" else filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)" fi $PYTHON -c " import sys, os, py_compile, imp files = '''$files''' sys.stdout.write('Byte-compiling python modules...\n') for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue sys.stdout.write(file) sys.stdout.flush() if hasattr(imp, 'get_tag'): py_compile.compile(filepath, imp.cache_from_source(filepath), path) else: py_compile.compile(filepath, filepath + 'c', path) sys.stdout.write('\n')" || exit $? # this will fail for python < 1.5, but that doesn't matter ... $PYTHON -O -c " import sys, os, py_compile, imp # pypy does not use .pyo optimization if hasattr(sys, 'pypy_translation_info'): sys.exit(0) files = '''$files''' sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n') for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue sys.stdout.write(file) sys.stdout.flush() if hasattr(imp, 'get_tag'): py_compile.compile(filepath, imp.cache_from_source(filepath, False), path) else: py_compile.compile(filepath, filepath + 'o', path) sys.stdout.write('\n')" 2>/dev/null || : # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: dballe-7.21/run-bench0000755000175000017500000000701313022043102011402 00000000000000#!/usr/bin/env python3 import shutil import os import shlex import subprocess import sys import argparse import datetime class Benchmark: def __init__(self): self.env = dict(os.environ) self.now = datetime.datetime.utcnow() self.db = None def read_conffile(self, fd): for line in fd: line = line.strip() if not line or line.startswith("#"): continue if '=' in line: key, val = line.split("=", 1) val = shlex.split(val)[0] if val.startswith("$"): val = self.env[val[1:]] self.env[key] = val def select_db(self, name): self.db = name if name in ("pg", "postgresql"): self.db = "postgresql" self.env["DBA_DB"] = self.env["DBA_DB_POSTGRESQL"] elif name == "mysql": self.env["DBA_DB"] = self.env["DBA_DB_MYSQL"] elif name == "sqlite": self.env["DBA_DB"] = self.env["DBA_DB_SQLITE"] elif name == "mem": self.db = "mem" self.env["DBA_DB"] = "mem:" elif name == "sqlitev7": self.env["DBA_DB"] = self.env["DBA_DB_SQLITE"] self.env["DBA_DB_FORMAT"] = "V7" elif name in ("pgv7", "postgresqlv7"): self.db = "postgresqlv7" self.env["DBA_DB"] = self.env["DBA_DB_POSTGRESQL"] self.env["DBA_DB_FORMAT"] = "V7" elif name == "mysqlv7": self.db = "mysqlv7" self.env["DBA_DB"] = self.env["DBA_DB_MYSQL"] self.env["DBA_DB_FORMAT"] = "V7" else: raise RuntimeError("unknown database type {}".format(name)) def add_extra_env(self, assignments): for arg in assignments: if '=' in arg: key, val = arg.split("=", 1) self.env[key] = val def build(self): subprocess.check_call(["make", "-C", "dballe"]) subprocess.check_call(["make", "-C", "dballe", "bench-run"]) def run(self): self.env["ARGS"] = self.db csvout = subprocess.check_output(["../extra/runtest", "bench-run"], env=self.env, cwd="dballe", universal_newlines=True) shasum = subprocess.check_output(["git", "rev-parse", "HEAD"], universal_newlines=True).strip() ts = self.now.strftime("%Y%m%d%H%M%S") fname = os.path.join("bench", "_".join((ts, self.db, shasum)) + ".csv") with open(fname, "wt") as fd: # Skip the Running... printed at the beginning by runtest for line in csvout.splitlines()[1:]: print(line, file=fd) def main(): parser = argparse.ArgumentParser(description="Run DB-All.e benchmarks.") parser.add_argument("env", nargs="*", help="Extra env var assignments") parser.add_argument("-d", "--db", default=None, help="Database to use (pg/postgresql, mysql, sqlite, mem, sqlitev7, pgv7/postgresqlv7, mysqlv7)") args = parser.parse_args() bench = Benchmark() for conffile in ("./run-check.conf", ".git/run-check.conf"): if not os.path.exists(conffile): continue with open(conffile, "rt") as fd: bench.read_conffile(fd) bench.add_extra_env(args.env) bench.build() if args.db is None: for db in ("pg", "mysql", "sqlite", "mem", "sqlitev7", "postgresqlv7", "mysqlv7"): print("Running benchmarks for {}...".format(db)) bench.select_db(db) bench.run() else: bench.select_db(args.db) bench.run() if __name__ == "__main__": main() dballe-7.21/README.md0000644000175000017500000001122713022043102011054 00000000000000DB-All.e =============================================================== Introduction ------------ DB-All.e is a fast on-disk database where meteorological observed and forecast data can be stored, searched, retrieved and updated. This framework allows to manage large amounts of data using its simple Application Program Interface, and provides tools to visualise, import and export in the standard formats BUFR, AOF and CREX. The main characteristics of DB-ALL.e are: * Fortran, C, C++ and Python APIs are provided. * To make computation easier, data is stored as physical quantities, that is, as measures of a variable in a specific point of space and time, rather than as a sequence of report. * Internal representation is similar to BUFR and CREX WMO standard (table code driven) and utility for import and export are included (generic and ECMWF template). * Representation is in 7 dimensions: latitude and longitude geographic coordinates, table driven vertical coordinate, reference time, table driven observation and forecast specification, table driven data type. * It allows to store extra information linked to the data, such as confidence intervals for quality control. * It allows to store extra information linked to the stations. * Variables can be represented as real, integer and characters, with appropriate precision for the type of measured value. * It is based on physical principles, that is, the data it contains are defined in terms of homogeneous and consistent physical data. For example, it is impossible for two incompatible values to exist in the same point in space and time. * It can manage fixed stations and moving stations such as airplanes or ships. * It can manage both observational and forecast data. * It can manage data along all three dimensions in space, such as data from soundings and airplanes. * Report information is preserved. It can work based on physical parameters or on report types. * It is temporary, to be used for a limited time and then be deleted. * Does not need backup, since it only contains replicated or derived data. * Write access is enabled for its users. Building DB-All.e ----------------- DB-All.e is already packaged in both .rpm and .deb formats, and that provides easy installation for most Linux distributions. If you want to build and install DB-All.e yourself, you'll need to install the automake/autoconf/libtool packages then you can proceed as in most other Unix software: autoreconf -if ./configure make make install Getting started --------------- DB-All.e requires a database to run. It can create a SQLite database, or access a PostgreSQL or MySQL database. See doc/fapi_connect.md for details about connecting to a database. Once this is set up, you can initialise the DB-All.e database using the command:: dbadb wipe --url=sqlite:dballe.sqlite3 If you do not already have access to datasets to import, some are available from http://www.ncar.ucar.edu/tools/datasets/ after registering (for free) on the website. Documentation ------------- Documentation for all commandline tools can be found in their manpages. All commandline tools also have extensive commandline help that can be accessed using the "--help" option. The Fortran API is documented in the fapi.pdf document. The C API and all the C internals are documented through Doxygen. Administration and maintanance of DB-All.e are covered in the guide.pdf document. Testing DB-All.e ---------------- Unit testing can be run using "make check", but it requires an existing DSN connection to a MySQL database, which should be called 'test'. Please note that unit testing functions will wipe existing DB-All.e tables on the test DSN database. Useful resources ---------------- BUFR decoding: * http://www.knmi.nl/~meulenvd/code/bufr/dmtn1.html AOF decoding: * Reading of Fortran "unformatted sequential" from C/C++: http://astronomy.swin.edu.au/~pbourke/dataformats/fortran/ ECWMF BUFR template codes: * http://www.ecmwf.int/research/ifsdocs/OBSERVATIONS/Chap2_Obs_types3.html Contact and copyright information --------------------------------- The author of DB-ALLe is Enrico Zini DB-ALLe is Copyright (C) 2005-2016 ARPAE-SIMC DB-ALLe is licensed under the terms of the GNU General Public License version 2. Please see the file COPYING for details. Contact informations for ARPAE-SIMC: Agenzia Regionale per la Prevenzione, l'Ambiente e l'Energia (ARPAE) Servizio Idro-Meteo-Climatologico (SIMC) Address: Viale Silvani 6, 40122 Bologna, Italy Tel: + 39 051 6497511 Fax: + 39 051 6497501 Email: urpsim@arpae.it Website: http://www.arpae.it/sim/ dballe-7.21/TODO0000644000175000017500000000012013022043102010253 00000000000000The TODO list for DB-All.e is all at https://github.com/ARPA-SIMC/dballe/issues dballe-7.21/config.sub0000755000175000017500000010676313022512015011576 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-11-04' # 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # 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 # 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 or 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 1992-2016 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-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) 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*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -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 \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | 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 \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-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-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | 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-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | 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-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | 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 ;; asmjs) basic_machine=asmjs-unknown ;; 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 | 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 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; 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*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 ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; 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 ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-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 ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; 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 ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; 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 | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) 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) 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 | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) 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 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; 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 ;; tile*) basic_machine=$basic_machine-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 ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; 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* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -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* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -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* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia*) # 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 ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -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 ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; 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 ;; 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: dballe-7.21/UPGRADE-5.x0000644000175000017500000000713613022043102011223 00000000000000This is a summary of changes from DB-All.e 4.x that might require porting of Fortran code, or scripts using the command line tools, even if the Fortran API and the command line interfaces did not change. Changes in tables: * Tables are now in /usr/share/wreport * Table location can be customized with two environment variables: WREPORT_TABLES=(colon separated list of directories) The primary location(s) of tables. It has a compiled in default if it is not set. WREPORT_EXTRA_TABLES=(colon separated list of directories) Extra location(s) of tables. It is ignored if not set. The reason for having two variables is in their use: if you want to override the compiled in default, set WREPORT_TABLES. If you want to add tables to the compiled-in default, set WREPORT_EXTRA_TABLES. * Generic BUFR messages now use table B000000002001400.txt instead of B000000002001200.txt Local B table changes to follow the new WMO templates: * B12001 is replaced by B12101 * B12003 is replaced by B12103 * B10061 is replaced by B10060 * B10003 is replaced by B10008 Added to local B table: * B02003 TYPE OF MEASURING EQUIPMENT USED * B02004 TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C * B02013 SOLAR AND INFRARED RADIATION CORRECTION * B02014 TRACKING TECHNIQUE/STATUS OF SYSTEM USED * B04086 LONG TIME PERIOD OR DISPLACEMENT * B05015 LATITUDE DISPLACEMENT (HIGH ACCURACY) * B06015 LONGITUDE DISPLACEMENT (HIGH ACCURACY) * B07007 HEIGHT * B08002 VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS) * B08042 EXTENDED VERTICAL SOUNDING SIGNIFICANCE * B11043 MAXIMUM WIND GUST DIRECTION * B11061 ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW * B11062 ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE * B12121 GROUND MINIMUM TEMPERATURE * B13033 EVAPORATION/EVAPOTRANSPIRATION * B14031 TOTAL SUNSHINE * B20017 CLOUD TOP DESCRIPTION Changes in levels and time ranges: * Meaningless level or timerange components now have a proper missing value instead of 0. The station level, for example, is now level 257,-,-,- and time range -,-,- * All cloud levels have been reorganised. For clouds levels, leveltype1 is always 256 and l1 is always missing. The cloud level is identified by leveltype2 and l2, as follows: Leveltype2 Description 258 Cloud Data group, L2 = 1 low clouds, 2 middle clouds, 3 high clouds, 0 others 259 Individual cloud groups, L2 = group number 260 Cloud drift, L2 = group number 261 Cloud elevation, L2 = group number 262 Direction and elevation of clouds, L2 is ignored Command line tools changes: * dbamsg dump does not show attributes trailing at the end of the message dump, but it only shows them attached to their variables. * dbamsg dump now also shows data present bitmaps as a Cxxyyy variable with a string value of '-' when the bitmap has 'missing' and '+' when the bitmap has a value. Miscellaneous changes: * bound checking of variable values now uses the most restrictive range between BUFR and CREX (it used to use the least restrictive) * The minimal MySQL versione should be 5.1, or one that supports subqueries, to adapt to newer MySQLs dropping the old custom semanthics of GROUP BY … HAVING … * vertical significance of synop clouds is now imported as a measured value * importing messages with a sensor, barometer or anemometer height indicators will now by default import the values in the appropriate vertical level. An option will be soon provided for 'simplified' imports, whereby data are imported in standard levels with the correct height added as an attribute. dballe-7.21/fortran/0000755000175000017500000000000013022523411011333 500000000000000dballe-7.21/fortran/check_fdballe.f900000644000175000017500000001677513022043102014333 00000000000000 program check_fdballe ! ***************************************** ! * Test suite for DBALLE Fortran bindings ! ***************************************** use dbtest use dballef integer :: dbahandle, handle,i,i1,i2,i3,i4,i5,i6,ival,saved_id real :: rval double precision :: dval character (len=10) :: param character (len=255) :: cval external :: testcb ! call fdba_error_set_callback(0, testcb, 2, i) ! Database login call dbinit(dbahandle) ! Open a session ierr = idba_preparati(dbahandle, handle, "write", "write", "write") call ensure_no_error("preparati") ! Clear the database ierr = idba_scopa(handle, "") call ensure_no_error("scopa") ! Insert some data ierr = idba_setd(handle, "lat", 30D00) call ensure_no_error("setd 0") ierr = idba_setr(handle, "lon", 10.0) call ensure_no_error("setr 1") ierr = idba_setc(handle, "mobile", "0") call ensure_no_error("setc 2") ! { "year_ident", "2003" }, ! { "month_ident", "3" }, ! { "day_ident", "23" }, ! { "hour_ident", "12" }, ! { "min_ident", "30" }, ! { "height", "42" }, ! { "heightbaro", "234" }, ! { "block", "1" }, ! { "station", "52" }, ! { "name", "Cippo Lippo" }, ierr = idba_seti(handle, "year", 2006) call ensure_no_error("seti 3") ierr = idba_seti(handle, "month", 1) call ensure_no_error("seti 4") ierr = idba_seti(handle, "day", 2) call ensure_no_error("seti 5") ierr = idba_seti(handle, "hour", 3) call ensure_no_error("seti 6") ierr = idba_seti(handle, "min", 4) call ensure_no_error("seti 7") ierr = idba_setc(handle, "leveltype1", "1") call ensure_no_error("setc 8") ierr = idba_seti(handle, "l1", 1) call ensure_no_error("seti 9") ierr = idba_setc(handle, "leveltype2", "1") call ensure_no_error("seti 10") ierr = idba_seti(handle, "l2", 1) call ensure_no_error("seti 11") ierr = idba_seti(handle, "pindicator", 20) call ensure_no_error("seti 12") ierr = idba_seti(handle, "p1", 1) call ensure_no_error("seti 13") ierr = idba_seti(handle, "p2", 1) call ensure_no_error("seti 14") ierr = idba_setc(handle, "rep_memo", "synop") call ensure_no_error("seti 15") ierr = idba_setc(handle, "B01011", "DB-All.e!") call ensure_no_error("setc 16") ! Perform the insert ierr = idba_prendilo(handle) call ensure_no_error("first prendilo") ! Try to read the id of the pseudoana data just inserted ierr = idba_enqi(handle, "ana_id", i) call ensure_no_error("enqi ana_id") ! Try to read the context id of the data just inserted ierr = idba_enqi(handle, "context_id", i) call ensure_no_error("enqi context_id") ! Insert some QC flags ierr = idba_setc(handle, "*B33002", "1") call ensure_no_error("critica setc 0") ierr = idba_setc(handle, "*B33003", "1") call ensure_no_error("critica setc 1") ierr = idba_setc(handle, "*var", "B01011") ierr = idba_critica(handle) ! ierr = idba_critica(handle, "B01011") call ensure_no_error("prima critica") ! Query back the data ! ierr = idba_ricominciamo(handle) ierr = idba_unsetall(handle) call ensure_no_error("ricominciamo") ierr = idba_setr(handle, "latmin", 20.0) call ensure_no_error("query setf 0") ierr = idba_setr(handle, "latmax", 50.0) call ensure_no_error("query setf 1") ierr = idba_setr(handle, "lonmin", 5.0) call ensure_no_error("query setf 2") ierr = idba_setr(handle, "lonmax", 20.0) call ensure_no_error("query setf 3") ierr = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto") call ensure("voglioquesto result", i.eq.1) ! Read the results of the query ! TODO: make a for loop instead do while (i.gt.0) ierr = idba_dammelo(handle, param) call ensure_no_error("dammelo") ierr = idba_enqc(handle, param, cval) call ensure_no_error("dammelo enqc 0") ierr = idba_enqi(handle, "year", ival) call ensure_no_error("dammelo enqi 1") ierr = idba_enqr(handle, "lat", rval) call ensure_no_error("dammelo enqr 2") ierr = idba_enqd(handle, "lon", dval) call ensure_no_error("dammelo enqd 3") ierr = idba_enqc(handle, "lon", cval) call ensure_no_error("dammelo enqc 4") ierr = idba_enqdate(handle, i1, i2, i3, i4, i5, i6) call ensure_no_error("dammelo enqdate") call ensure("enqdate i1", i1.eq.2006) call ensure("enqdate i2", i2.eq.1) call ensure("enqdate i3", i3.eq.2) call ensure("enqdate i4", i4.eq.3) call ensure("enqdate i5", i5.eq.4) call ensure("enqdate i6", i6.eq.0) ierr = idba_enqlevel(handle, i1, i2, i3, i4) call ensure_no_error("dammelo enqlevel") call ensure("enqlevel i1", i1.eq.1) call ensure("enqlevel i2", i2.eq.1) call ensure("enqlevel i3", i3.eq.1) call ensure("enqlevel i4", i4.eq.1) ierr = idba_enqtimerange(handle, i1, i2, i3) call ensure_no_error("dammelo enqtimerange") call ensure("enqdate i1", i1.eq.20) call ensure("enqdate i2", i2.eq.1) call ensure("enqdate i3", i3.eq.1) ierr = idba_enqi(handle, "ana_id", ival) call ensure_no_error("dammelo enqi ana_id") call ensure("ana_id", ival.eq.1) ierr = idba_enqi(handle, "context_id", ival) call ensure_no_error("dammelo enqi context_id") ! Save the id for reusing it later saved_id = ival ierr = idba_voglioancora(handle, i1) call ensure_no_error("voglioancora") do while (i1.gt.0) ierr = idba_ancora(handle, param) call ensure_no_error("ancora") ierr = idba_enqc(handle, param, cval) call ensure_no_error("ancora enqc") i1 = i1 - 1 enddo ! Perform some useless scusa just to test the parser ierr = idba_setc(handle, "*varlist", "*B12345"); call ensure_no_error("scusa setc 1") ierr = idba_scusa(handle); call ensure_no_error("scusa 1") ierr = idba_setc(handle, "*varlist", "*B12345,*B54321"); call ensure_no_error("scusa setc 2") ierr = idba_scusa(handle); call ensure_no_error("scusa 2") i = i - 1 enddo ! Remove the QC data for saved_data ierr = idba_seti(handle, "*context_id", saved_id); call ensure_no_error("scusa seti 3") ierr = idba_setc(handle, "*var", "*B01011") call ensure_no_error("scusa setc 3") ierr = idba_scusa(handle); call ensure_no_error("scusa 3") ierr = idba_unsetall(handle) call ensure_no_error("unsetall quantesono 1") ierr = idba_quantesono(handle, i) call ensure_no_error("quantesono 1") call ensure("quantesono 1", i.eq.1) ierr = idba_setd(handle, "latmax", 20D00) call ensure_no_error("seti quantesono 2") ierr = idba_quantesono(handle, i) call ensure_no_error("quantesono 2") call ensure("quantesono 1", i.eq.0) ierr = idba_fatto(handle) call ensure_no_error("fatto") ierr = idba_arrivederci(dbahandle) call ensure_no_error("arrivederci") ! If we made it so far, exit with no error print*,"check_fdballe: all tests succeed." call exit (0) end program include "check-utils.h" dballe-7.21/fortran/mkmsg.f900000644000175000017500000000634713022043102012715 00000000000000 program mkmsg use dballef ! **************************** ! * Create a test message file ! **************************** integer handle, nstaz, ndata, nattr integer i, i1, i2, tmp integer id,height,codrete character fname*256,encoding*10,cname*20,rete*20,value*255 character btable*10,starbtable*10 real*8 dlat,dlon external errorrep ierr = idba_error_set_callback(0, C_FUNLOC(errorrep), 2, i) ! Open a session call getarg(1,fname) call getarg(2,encoding) ierr = idba_messaggi(handle, fname, "w", encoding) ierr = idba_setd(handle, "lat", 44.D0) ierr = idba_setd(handle, "lon", 11.D0) ierr = idba_setlevel(handle, 102, 2000, 0, 0) ierr = idba_settimerange(handle, 254, 0, 0) ierr = idba_setdate(handle, 2008, 7, 6, 5, 4, 3) ! One without setting 'query' ierr = idba_seti(handle, "B12001", 2731+120) ierr = idba_prendilo(handle) ierr = idba_seti(handle, "*B33192", 74) ierr = idba_seti(handle, "*B33193", 81) ierr = idba_seti(handle, "*B33194", 59) ierr = idba_critica(handle) ierr = idba_seti(handle, "B12003", 2731+100) ierr = idba_prendilo(handle) ! One setting 'query' to subset ierr = idba_setc(handle, "query", "subset") ierr = idba_seti(handle, "B12001", 2731+110) ierr = idba_prendilo(handle) ierr = idba_seti(handle, "*B33192", 47) ierr = idba_seti(handle, "*B33193", 18) ierr = idba_seti(handle, "*B33194", 95) ierr = idba_critica(handle) ierr = idba_seti(handle, "B12003", 2731+100) ierr = idba_prendilo(handle) ! One setting 'query' to message, and making a synop ierr = idba_setc(handle, "query", "message") ierr = idba_setc(handle, "rep_memo", "synop") ierr = idba_seti(handle, "B12001", 2731+90) ierr = idba_prendilo(handle) ierr = idba_seti(handle, "*B33007", 81) ierr = idba_critica(handle) ierr = idba_seti(handle, "B12003", 2731+80) ierr = idba_seti(handle, "B13003", 80) ierr = idba_prendilo(handle) ! One setting 'query' to message, and making a synop ierr = idba_setc(handle, "query", "message synop") ierr = idba_setc(handle, "rep_memo", "synop") ierr = idba_seti(handle, "B12001", 2731+90) ierr = idba_prendilo(handle) ierr = idba_fatto(handle) call exit (0) end ! ******************** ! * Utility functions ! ******************** ! Compute the length of a string integer function istrlen(string) character string*(*) istrlen = len(string) do while ((string(istrlen:istrlen).eq." " .or. & string(istrlen:istrlen).eq."").and. & istrlen.gt.0) istrlen = istrlen - 1 enddo return end subroutine errorrep(val) BIND(C) use dballef integer val character buf*1000 ier = idba_error_code() if (ier.ne.0) then print *,ier," error in ",val call idba_error_message(buf) print *,buf(:istrlen(buf)) call idba_error_context(buf) print *,buf(:istrlen(buf)) call idba_error_details(buf) print *,buf(:istrlen(buf)) call exit (1) end if return end dballe-7.21/fortran/common.h0000644000175000017500000000051513022043102012707 00000000000000#ifndef FDBA_COMMON_H #define FDBA_COMMON_H namespace dballe { namespace fortran { /** * Copy the string str to a fortran string buf of length len. * * If str is nullptr, buf is set to the agreed string missing value of the * DB-All-e API. */ void cstring_to_fortran(const char* str, char* buf, unsigned buf_len); } } #endif dballe-7.21/fortran/fortran.dox0000644000175000017500000000071713022043102013441 00000000000000/** @defgroup fortran Dballe fortran bindings Fortran bindings of Dballe. The bindings offer two different interfaces: a simplified interface and a full interface. The simplified interface allows for writing code quickly, while the full interface exports every part of Dballe, making it possible to write more complex programs, such as programs that run run more queries at the same time, or that perform queries while getting the results of other queries. */ dballe-7.21/fortran/dballeff.h0000644000175000017500000000150513022043102013156 00000000000000 ! ! Interface file for DB-ALLe ! ! Copyright (C) 2005,2006 ARPA-SIM ! ! 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. ! ! 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 St, Fifth Floor, Boston, MA 02110-1301 USA ! ! Author: Enrico Zini ! use dballef dballe-7.21/fortran/handles.h0000644000175000017500000000437113022043102013041 00000000000000/* * Copyright (C) 2005--2010 ARPA-SIM * * 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. * * 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 St, Fifth Floor, Boston, MA 02110-1301 USA * * Author: Enrico Zini */ #ifndef FDBA_HANDLES_H #define FDBA_HANDLES_H #include namespace dballe { struct DB; namespace fortran { struct API; struct HBase { bool used; HBase() : used(false) {} void start() { used = true; } void stop() { used = false; } }; template struct Handler { T* records; int next; const char* name; const char* def; size_t in_use; void init(const char* name, const char* def) { this->name = name; this->def = def; records = new T[MAX]; next = 0; in_use = 0; } T& get(int id) { if (!records[id].used) wreport::error_handles::throwf("Handle %d used after it has been closed, or when it has never been opened", id); return records[id]; } int request() { for (int i = 0; i < MAX && (records[next].used); ++i) next = (next + 1) % MAX; if (records[next].used) wreport::error_handles::throwf("No more handles for %s. The maximum limit is %d: to increase it, recompile DB-All.e setting %s to a higher value", name, MAX, def); /* Setup the new handle */ records[next].start(); ++in_use; return next; } void release(int h) { if (!in_use) wreport::error_handles::throwf("Attempted to close handle %d when no handles are in use", h); if (!records[h].used) wreport::error_handles::throwf("Attempted to close handle %d which was not open", h); records[h].stop(); --in_use; } }; /// Initialise error handlers void error_init(); } } #endif dballe-7.21/fortran/check_spiegab.f900000644000175000017500000000054013022043102014333 00000000000000program test use dballef integer :: handle integer :: error_handle character(len=255) :: prettyvalue ierr = idba_error_set_callback(0, C_FUNLOC(idba_default_error_handler), 42, error_handle) ierr = idba_messaggi(handle,"/dev/null", "w", "BUFR") ierr = idba_spiegab(handle, "B12101", "1234", prettyvalue) ierr = idba_fatto(handle) end program test dballe-7.21/fortran/Makefile.in0000644000175000017500000017053213022517204013333 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @DO_DBALLEF_TRUE@@FILE_OFFSET_BITS_64_TRUE@am__append_1 = -D_FILE_OFFSET_BITS=64 @DO_DBALLEF_TRUE@check_PROGRAMS = check_missing_msg$(EXEEXT) \ @DO_DBALLEF_TRUE@ check_real0$(EXEEXT) check_range$(EXEEXT) \ @DO_DBALLEF_TRUE@ check_fdballe$(EXEEXT) check_attrs$(EXEEXT) \ @DO_DBALLEF_TRUE@ check_missing$(EXEEXT) \ @DO_DBALLEF_TRUE@ check_segfault1$(EXEEXT) \ @DO_DBALLEF_TRUE@ check_multiplehandler$(EXEEXT) \ @DO_DBALLEF_TRUE@ check_spiegab$(EXEEXT) \ @DO_DBALLEF_TRUE@ check_messages$(EXEEXT) @DO_DBALLEF_TRUE@am__append_2 = -O0 @DO_DBALLEF_TRUE@noinst_PROGRAMS = dumpmsg_dballe$(EXEEXT) \ @DO_DBALLEF_TRUE@ mkmsg$(EXEEXT) mkmsg-sca$(EXEEXT) \ @DO_DBALLEF_TRUE@ genattr$(EXEEXT) dump_dballe$(EXEEXT) \ @DO_DBALLEF_TRUE@ check_messages_stdinstdout$(EXEEXT) subdir = fortran ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/m4_ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am \ $(am__dist_dballeinclude_HEADERS_DIST) \ $(am__dist_noinst_HEADERS_DIST) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" \ "$(DESTDIR)$(dballeincludedir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) @DO_DBALLEF_TRUE@libdballef_la_DEPENDENCIES = ../dballe/libdballe.la am__libdballef_la_SOURCES_DIST = common.cc error.cc trace.cc \ binding.cc dballef.f90 @DO_DBALLEF_TRUE@am_libdballef_la_OBJECTS = common.lo error.lo \ @DO_DBALLEF_TRUE@ trace.lo binding.lo dballef.lo libdballef_la_OBJECTS = $(am_libdballef_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libdballef_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(libdballef_la_LDFLAGS) $(LDFLAGS) \ -o $@ @DO_DBALLEF_TRUE@am_libdballef_la_rpath = -rpath $(libdir) PROGRAMS = $(noinst_PROGRAMS) am__check_attrs_SOURCES_DIST = test.f90 dbtest.f90 dballef.mod \ check_attrs.f90 @DO_DBALLEF_TRUE@am__objects_1 = check_attrs-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_attrs-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_attrs_OBJECTS = $(am__objects_1) \ @DO_DBALLEF_TRUE@ check_attrs-check_attrs.$(OBJEXT) check_attrs_OBJECTS = $(am_check_attrs_OBJECTS) @DO_DBALLEF_TRUE@check_attrs_DEPENDENCIES = libdballef.la check_attrs_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(check_attrs_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__check_fdballe_SOURCES_DIST = test.f90 dbtest.f90 dballef.mod \ check_fdballe.f90 @DO_DBALLEF_TRUE@am__objects_2 = check_fdballe-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_fdballe-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_fdballe_OBJECTS = $(am__objects_2) \ @DO_DBALLEF_TRUE@ check_fdballe-check_fdballe.$(OBJEXT) check_fdballe_OBJECTS = $(am_check_fdballe_OBJECTS) @DO_DBALLEF_TRUE@check_fdballe_DEPENDENCIES = libdballef.la check_fdballe_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(check_fdballe_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__check_messages_SOURCES_DIST = test.f90 dbtest.f90 dballef.mod \ check_messages.f90 @DO_DBALLEF_TRUE@am__objects_3 = check_messages-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_messages-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_messages_OBJECTS = $(am__objects_3) \ @DO_DBALLEF_TRUE@ check_messages-check_messages.$(OBJEXT) check_messages_OBJECTS = $(am_check_messages_OBJECTS) @DO_DBALLEF_TRUE@check_messages_DEPENDENCIES = libdballef.la check_messages_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \ $(check_messages_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ am__check_messages_stdinstdout_SOURCES_DIST = test.f90 dbtest.f90 \ dballef.mod check_messages_stdinstdout.f90 @DO_DBALLEF_TRUE@am__objects_4 = \ @DO_DBALLEF_TRUE@ check_messages_stdinstdout-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_messages_stdinstdout-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_messages_stdinstdout_OBJECTS = \ @DO_DBALLEF_TRUE@ $(am__objects_4) \ @DO_DBALLEF_TRUE@ check_messages_stdinstdout-check_messages_stdinstdout.$(OBJEXT) check_messages_stdinstdout_OBJECTS = \ $(am_check_messages_stdinstdout_OBJECTS) @DO_DBALLEF_TRUE@check_messages_stdinstdout_DEPENDENCIES = \ @DO_DBALLEF_TRUE@ libdballef.la check_messages_stdinstdout_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \ $(check_messages_stdinstdout_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am__check_missing_SOURCES_DIST = test.f90 dbtest.f90 dballef.mod \ check_missing.f90 @DO_DBALLEF_TRUE@am__objects_5 = check_missing-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_missing-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_missing_OBJECTS = $(am__objects_5) \ @DO_DBALLEF_TRUE@ check_missing-check_missing.$(OBJEXT) check_missing_OBJECTS = $(am_check_missing_OBJECTS) @DO_DBALLEF_TRUE@check_missing_DEPENDENCIES = libdballef.la check_missing_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(check_missing_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__check_missing_msg_SOURCES_DIST = test.f90 check_missing_msg.f90 @DO_DBALLEF_TRUE@am_check_missing_msg_OBJECTS = \ @DO_DBALLEF_TRUE@ check_missing_msg-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_missing_msg-check_missing_msg.$(OBJEXT) check_missing_msg_OBJECTS = $(am_check_missing_msg_OBJECTS) @DO_DBALLEF_TRUE@check_missing_msg_DEPENDENCIES = libdballef.la check_missing_msg_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \ $(check_missing_msg_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am__check_multiplehandler_SOURCES_DIST = test.f90 dbtest.f90 \ dballef.mod check_multiplehandler.f90 @DO_DBALLEF_TRUE@am__objects_6 = check_multiplehandler-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_multiplehandler-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_multiplehandler_OBJECTS = $(am__objects_6) \ @DO_DBALLEF_TRUE@ check_multiplehandler-check_multiplehandler.$(OBJEXT) check_multiplehandler_OBJECTS = $(am_check_multiplehandler_OBJECTS) @DO_DBALLEF_TRUE@check_multiplehandler_DEPENDENCIES = libdballef.la check_multiplehandler_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \ $(check_multiplehandler_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am__check_range_SOURCES_DIST = test.f90 dbtest.f90 dballef.mod \ check_range.f90 @DO_DBALLEF_TRUE@am__objects_7 = check_range-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_range-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_range_OBJECTS = $(am__objects_7) \ @DO_DBALLEF_TRUE@ check_range-check_range.$(OBJEXT) check_range_OBJECTS = $(am_check_range_OBJECTS) @DO_DBALLEF_TRUE@check_range_DEPENDENCIES = libdballef.la check_range_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(check_range_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__check_real0_SOURCES_DIST = test.f90 dbtest.f90 dballef.mod \ check_real0.f90 @DO_DBALLEF_TRUE@am__objects_8 = check_real0-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_real0-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_real0_OBJECTS = $(am__objects_8) \ @DO_DBALLEF_TRUE@ check_real0-check_real0.$(OBJEXT) check_real0_OBJECTS = $(am_check_real0_OBJECTS) @DO_DBALLEF_TRUE@check_real0_DEPENDENCIES = libdballef.la check_real0_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(check_real0_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__check_segfault1_SOURCES_DIST = test.f90 dbtest.f90 dballef.mod \ check_segfault1.f90 @DO_DBALLEF_TRUE@am__objects_9 = check_segfault1-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_segfault1-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_segfault1_OBJECTS = $(am__objects_9) \ @DO_DBALLEF_TRUE@ check_segfault1-check_segfault1.$(OBJEXT) check_segfault1_OBJECTS = $(am_check_segfault1_OBJECTS) @DO_DBALLEF_TRUE@check_segfault1_DEPENDENCIES = libdballef.la check_segfault1_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \ $(check_segfault1_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ am__check_spiegab_SOURCES_DIST = test.f90 dbtest.f90 dballef.mod \ check_spiegab.f90 @DO_DBALLEF_TRUE@am__objects_10 = check_spiegab-test.$(OBJEXT) \ @DO_DBALLEF_TRUE@ check_spiegab-dbtest.$(OBJEXT) @DO_DBALLEF_TRUE@am_check_spiegab_OBJECTS = $(am__objects_10) \ @DO_DBALLEF_TRUE@ check_spiegab-check_spiegab.$(OBJEXT) check_spiegab_OBJECTS = $(am_check_spiegab_OBJECTS) @DO_DBALLEF_TRUE@check_spiegab_DEPENDENCIES = libdballef.la check_spiegab_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(check_spiegab_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__dump_dballe_SOURCES_DIST = dump_dballe.f90 dballef.mod @DO_DBALLEF_TRUE@am_dump_dballe_OBJECTS = \ @DO_DBALLEF_TRUE@ dump_dballe-dump_dballe.$(OBJEXT) dump_dballe_OBJECTS = $(am_dump_dballe_OBJECTS) @DO_DBALLEF_TRUE@dump_dballe_DEPENDENCIES = libdballef.la dump_dballe_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(dump_dballe_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__dumpmsg_dballe_SOURCES_DIST = dumpmsg_dballe.f90 dballef.mod @DO_DBALLEF_TRUE@am_dumpmsg_dballe_OBJECTS = \ @DO_DBALLEF_TRUE@ dumpmsg_dballe-dumpmsg_dballe.$(OBJEXT) dumpmsg_dballe_OBJECTS = $(am_dumpmsg_dballe_OBJECTS) @DO_DBALLEF_TRUE@dumpmsg_dballe_DEPENDENCIES = libdballef.la dumpmsg_dballe_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \ $(dumpmsg_dballe_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ am__genattr_SOURCES_DIST = genattr.f90 dballef.mod @DO_DBALLEF_TRUE@am_genattr_OBJECTS = genattr-genattr.$(OBJEXT) genattr_OBJECTS = $(am_genattr_OBJECTS) @DO_DBALLEF_TRUE@genattr_DEPENDENCIES = libdballef.la genattr_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(genattr_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__mkmsg_SOURCES_DIST = mkmsg.f90 dballef.mod @DO_DBALLEF_TRUE@am_mkmsg_OBJECTS = mkmsg-mkmsg.$(OBJEXT) mkmsg_OBJECTS = $(am_mkmsg_OBJECTS) @DO_DBALLEF_TRUE@mkmsg_DEPENDENCIES = libdballef.la mkmsg_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(mkmsg_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__mkmsg_sca_SOURCES_DIST = mkmsg-sca.f90 dballef.mod @DO_DBALLEF_TRUE@am_mkmsg_sca_OBJECTS = mkmsg_sca-mkmsg-sca.$(OBJEXT) mkmsg_sca_OBJECTS = $(am_mkmsg_sca_OBJECTS) @DO_DBALLEF_TRUE@mkmsg_sca_DEPENDENCIES = libdballef.la mkmsg_sca_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(mkmsg_sca_FCFLAGS) \ $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libdballef_la_SOURCES) $(check_attrs_SOURCES) \ $(check_fdballe_SOURCES) $(check_messages_SOURCES) \ $(check_messages_stdinstdout_SOURCES) $(check_missing_SOURCES) \ $(check_missing_msg_SOURCES) $(check_multiplehandler_SOURCES) \ $(check_range_SOURCES) $(check_real0_SOURCES) \ $(check_segfault1_SOURCES) $(check_spiegab_SOURCES) \ $(dump_dballe_SOURCES) $(dumpmsg_dballe_SOURCES) \ $(genattr_SOURCES) $(mkmsg_SOURCES) $(mkmsg_sca_SOURCES) DIST_SOURCES = $(am__libdballef_la_SOURCES_DIST) \ $(am__check_attrs_SOURCES_DIST) \ $(am__check_fdballe_SOURCES_DIST) \ $(am__check_messages_SOURCES_DIST) \ $(am__check_messages_stdinstdout_SOURCES_DIST) \ $(am__check_missing_SOURCES_DIST) \ $(am__check_missing_msg_SOURCES_DIST) \ $(am__check_multiplehandler_SOURCES_DIST) \ $(am__check_range_SOURCES_DIST) \ $(am__check_real0_SOURCES_DIST) \ $(am__check_segfault1_SOURCES_DIST) \ $(am__check_spiegab_SOURCES_DIST) \ $(am__dump_dballe_SOURCES_DIST) \ $(am__dumpmsg_dballe_SOURCES_DIST) $(am__genattr_SOURCES_DIST) \ $(am__mkmsg_SOURCES_DIST) $(am__mkmsg_sca_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_dballeinclude_HEADERS_DIST = dballef.h dballeff.h am__dist_noinst_HEADERS_DIST = common.h handles.h error.h trace.h HEADERS = $(dist_dballeinclude_HEADERS) $(dist_noinst_HEADERS) \ $(nodist_include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ $(am__append_2) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDBALLEF_VERSION_INFO = @LIBDBALLEF_VERSION_INFO@ LIBDBALLE_VERSION_INFO = @LIBDBALLE_VERSION_INFO@ LIBOBJS = @LIBOBJS@ LIBPQ_CFLAGS = @LIBPQ_CFLAGS@ LIBPQ_LIBS = @LIBPQ_LIBS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MYSQL_CFLAGS = @MYSQL_CFLAGS@ MYSQL_LIBS = @MYSQL_LIBS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ WREPORT_CFLAGS = @WREPORT_CFLAGS@ WREPORT_LIBS = @WREPORT_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_doxygen = @have_doxygen@ have_gperf = @have_gperf@ have_rst2html = @have_rst2html@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mysql_config = @mysql_config@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ tabledir = @tabledir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @DO_DBALLEF_TRUE@AM_CPPFLAGS = -I$(top_srcdir) $(WREPORT_CFLAGS) \ @DO_DBALLEF_TRUE@ $(am__append_1) # libdballef @DO_DBALLEF_TRUE@dballeincludedir = $(includedir)/dballe # Include the F90 interface file as well @DO_DBALLEF_TRUE@dist_dballeinclude_HEADERS = dballef.h dballeff.h @DO_DBALLEF_TRUE@dist_noinst_HEADERS = common.h handles.h error.h trace.h @DO_DBALLEF_TRUE@nodist_include_HEADERS = dballef.mod @DO_DBALLEF_TRUE@lib_LTLIBRARIES = libdballef.la @DO_DBALLEF_TRUE@libdballef_la_SOURCES = \ @DO_DBALLEF_TRUE@ common.cc \ @DO_DBALLEF_TRUE@ error.cc \ @DO_DBALLEF_TRUE@ trace.cc \ @DO_DBALLEF_TRUE@ binding.cc \ @DO_DBALLEF_TRUE@ dballef.f90 @DO_DBALLEF_TRUE@libdballef_la_LIBADD = ../dballe/libdballe.la @DO_DBALLEF_TRUE@libdballef_la_LDFLAGS = -version-info @LIBDBALLEF_VERSION_INFO@ # # Unit testing # @DO_DBALLEF_TRUE@TESTS_ENVIRONMENT = $(top_srcdir)/extra/runtest #TESTS = $(check_PROGRAMS) @DO_DBALLEF_TRUE@dbtestlib = test.f90 dbtest.f90 dballef.mod @DO_DBALLEF_TRUE@check_missing_msg_SOURCES = test.f90 check_missing_msg.f90 @DO_DBALLEF_TRUE@check_missing_msg_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_missing_msg_FCFLAGS = -g @DO_DBALLEF_TRUE@check_real0_SOURCES = $(dbtestlib) check_real0.f90 @DO_DBALLEF_TRUE@check_real0_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_real0_FCFLAGS = -g @DO_DBALLEF_TRUE@check_range_SOURCES = $(dbtestlib) check_range.f90 @DO_DBALLEF_TRUE@check_range_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_range_FCFLAGS = -g @DO_DBALLEF_TRUE@check_fdballe_SOURCES = $(dbtestlib) check_fdballe.f90 @DO_DBALLEF_TRUE@check_fdballe_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_fdballe_FCFLAGS = -g @DO_DBALLEF_TRUE@check_attrs_SOURCES = $(dbtestlib) check_attrs.f90 @DO_DBALLEF_TRUE@check_attrs_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_attrs_FCFLAGS = -g @DO_DBALLEF_TRUE@check_missing_SOURCES = $(dbtestlib) check_missing.f90 @DO_DBALLEF_TRUE@check_missing_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_missing_FCFLAGS = -g @DO_DBALLEF_TRUE@check_segfault1_SOURCES = $(dbtestlib) check_segfault1.f90 @DO_DBALLEF_TRUE@check_segfault1_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_segfault1_FCFLAGS = -g @DO_DBALLEF_TRUE@check_spiegab_SOURCES = $(dbtestlib) check_spiegab.f90 @DO_DBALLEF_TRUE@check_spiegab_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_spiegab_FCFLAGS = -g @DO_DBALLEF_TRUE@check_messages_SOURCES = $(dbtestlib) check_messages.f90 @DO_DBALLEF_TRUE@check_messages_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_messages_FCFLAGS = -g @DO_DBALLEF_TRUE@check_messages_stdinstdout_SOURCES = $(dbtestlib) check_messages_stdinstdout.f90 @DO_DBALLEF_TRUE@check_messages_stdinstdout_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_messages_stdinstdout_FCFLAGS = -g @DO_DBALLEF_TRUE@check_multiplehandler_SOURCES = $(dbtestlib) check_multiplehandler.f90 @DO_DBALLEF_TRUE@check_multiplehandler_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@check_multiplehandler_FCFLAGS = -g @DO_DBALLEF_TRUE@dumpmsg_dballe_SOURCES = dumpmsg_dballe.f90 dballef.mod @DO_DBALLEF_TRUE@dumpmsg_dballe_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@dumpmsg_dballe_FCFLAGS = -g @DO_DBALLEF_TRUE@mkmsg_SOURCES = mkmsg.f90 dballef.mod @DO_DBALLEF_TRUE@mkmsg_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@mkmsg_FCFLAGS = -g @DO_DBALLEF_TRUE@mkmsg_sca_SOURCES = mkmsg-sca.f90 dballef.mod @DO_DBALLEF_TRUE@mkmsg_sca_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@mkmsg_sca_FCFLAGS = -g @DO_DBALLEF_TRUE@genattr_SOURCES = genattr.f90 dballef.mod @DO_DBALLEF_TRUE@genattr_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@genattr_FCFLAGS = -g @DO_DBALLEF_TRUE@dump_dballe_SOURCES = dump_dballe.f90 dballef.mod @DO_DBALLEF_TRUE@dump_dballe_LDADD = libdballef.la -lpopt @DO_DBALLEF_TRUE@dump_dballe_FCFLAGS = -g @DO_DBALLEF_TRUE@EXTRA_DIST = fortran.dox check-utils.h @DO_DBALLEF_TRUE@CLEANFILES = *.mod all: all-am .SUFFIXES: .SUFFIXES: .cc .f90 .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign fortran/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign fortran/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libdballef.la: $(libdballef_la_OBJECTS) $(libdballef_la_DEPENDENCIES) $(EXTRA_libdballef_la_DEPENDENCIES) $(AM_V_CXXLD)$(libdballef_la_LINK) $(am_libdballef_la_rpath) $(libdballef_la_OBJECTS) $(libdballef_la_LIBADD) $(LIBS) clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list check_attrs$(EXEEXT): $(check_attrs_OBJECTS) $(check_attrs_DEPENDENCIES) $(EXTRA_check_attrs_DEPENDENCIES) @rm -f check_attrs$(EXEEXT) $(AM_V_FCLD)$(check_attrs_LINK) $(check_attrs_OBJECTS) $(check_attrs_LDADD) $(LIBS) check_fdballe$(EXEEXT): $(check_fdballe_OBJECTS) $(check_fdballe_DEPENDENCIES) $(EXTRA_check_fdballe_DEPENDENCIES) @rm -f check_fdballe$(EXEEXT) $(AM_V_FCLD)$(check_fdballe_LINK) $(check_fdballe_OBJECTS) $(check_fdballe_LDADD) $(LIBS) check_messages$(EXEEXT): $(check_messages_OBJECTS) $(check_messages_DEPENDENCIES) $(EXTRA_check_messages_DEPENDENCIES) @rm -f check_messages$(EXEEXT) $(AM_V_FCLD)$(check_messages_LINK) $(check_messages_OBJECTS) $(check_messages_LDADD) $(LIBS) check_messages_stdinstdout$(EXEEXT): $(check_messages_stdinstdout_OBJECTS) $(check_messages_stdinstdout_DEPENDENCIES) $(EXTRA_check_messages_stdinstdout_DEPENDENCIES) @rm -f check_messages_stdinstdout$(EXEEXT) $(AM_V_FCLD)$(check_messages_stdinstdout_LINK) $(check_messages_stdinstdout_OBJECTS) $(check_messages_stdinstdout_LDADD) $(LIBS) check_missing$(EXEEXT): $(check_missing_OBJECTS) $(check_missing_DEPENDENCIES) $(EXTRA_check_missing_DEPENDENCIES) @rm -f check_missing$(EXEEXT) $(AM_V_FCLD)$(check_missing_LINK) $(check_missing_OBJECTS) $(check_missing_LDADD) $(LIBS) check_missing_msg$(EXEEXT): $(check_missing_msg_OBJECTS) $(check_missing_msg_DEPENDENCIES) $(EXTRA_check_missing_msg_DEPENDENCIES) @rm -f check_missing_msg$(EXEEXT) $(AM_V_FCLD)$(check_missing_msg_LINK) $(check_missing_msg_OBJECTS) $(check_missing_msg_LDADD) $(LIBS) check_multiplehandler$(EXEEXT): $(check_multiplehandler_OBJECTS) $(check_multiplehandler_DEPENDENCIES) $(EXTRA_check_multiplehandler_DEPENDENCIES) @rm -f check_multiplehandler$(EXEEXT) $(AM_V_FCLD)$(check_multiplehandler_LINK) $(check_multiplehandler_OBJECTS) $(check_multiplehandler_LDADD) $(LIBS) check_range$(EXEEXT): $(check_range_OBJECTS) $(check_range_DEPENDENCIES) $(EXTRA_check_range_DEPENDENCIES) @rm -f check_range$(EXEEXT) $(AM_V_FCLD)$(check_range_LINK) $(check_range_OBJECTS) $(check_range_LDADD) $(LIBS) check_real0$(EXEEXT): $(check_real0_OBJECTS) $(check_real0_DEPENDENCIES) $(EXTRA_check_real0_DEPENDENCIES) @rm -f check_real0$(EXEEXT) $(AM_V_FCLD)$(check_real0_LINK) $(check_real0_OBJECTS) $(check_real0_LDADD) $(LIBS) check_segfault1$(EXEEXT): $(check_segfault1_OBJECTS) $(check_segfault1_DEPENDENCIES) $(EXTRA_check_segfault1_DEPENDENCIES) @rm -f check_segfault1$(EXEEXT) $(AM_V_FCLD)$(check_segfault1_LINK) $(check_segfault1_OBJECTS) $(check_segfault1_LDADD) $(LIBS) check_spiegab$(EXEEXT): $(check_spiegab_OBJECTS) $(check_spiegab_DEPENDENCIES) $(EXTRA_check_spiegab_DEPENDENCIES) @rm -f check_spiegab$(EXEEXT) $(AM_V_FCLD)$(check_spiegab_LINK) $(check_spiegab_OBJECTS) $(check_spiegab_LDADD) $(LIBS) dump_dballe$(EXEEXT): $(dump_dballe_OBJECTS) $(dump_dballe_DEPENDENCIES) $(EXTRA_dump_dballe_DEPENDENCIES) @rm -f dump_dballe$(EXEEXT) $(AM_V_FCLD)$(dump_dballe_LINK) $(dump_dballe_OBJECTS) $(dump_dballe_LDADD) $(LIBS) dumpmsg_dballe$(EXEEXT): $(dumpmsg_dballe_OBJECTS) $(dumpmsg_dballe_DEPENDENCIES) $(EXTRA_dumpmsg_dballe_DEPENDENCIES) @rm -f dumpmsg_dballe$(EXEEXT) $(AM_V_FCLD)$(dumpmsg_dballe_LINK) $(dumpmsg_dballe_OBJECTS) $(dumpmsg_dballe_LDADD) $(LIBS) genattr$(EXEEXT): $(genattr_OBJECTS) $(genattr_DEPENDENCIES) $(EXTRA_genattr_DEPENDENCIES) @rm -f genattr$(EXEEXT) $(AM_V_FCLD)$(genattr_LINK) $(genattr_OBJECTS) $(genattr_LDADD) $(LIBS) mkmsg$(EXEEXT): $(mkmsg_OBJECTS) $(mkmsg_DEPENDENCIES) $(EXTRA_mkmsg_DEPENDENCIES) @rm -f mkmsg$(EXEEXT) $(AM_V_FCLD)$(mkmsg_LINK) $(mkmsg_OBJECTS) $(mkmsg_LDADD) $(LIBS) mkmsg-sca$(EXEEXT): $(mkmsg_sca_OBJECTS) $(mkmsg_sca_DEPENDENCIES) $(EXTRA_mkmsg_sca_DEPENDENCIES) @rm -f mkmsg-sca$(EXEEXT) $(AM_V_FCLD)$(mkmsg_sca_LINK) $(mkmsg_sca_OBJECTS) $(mkmsg_sca_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binding.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trace.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.lo: $(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $< check_attrs-test.o: test.f90 $(AM_V_FC)$(FC) $(check_attrs_FCFLAGS) $(FCFLAGS) -c -o check_attrs-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_attrs-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_attrs_FCFLAGS) $(FCFLAGS) -c -o check_attrs-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_attrs-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_attrs_FCFLAGS) $(FCFLAGS) -c -o check_attrs-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_attrs-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_attrs_FCFLAGS) $(FCFLAGS) -c -o check_attrs-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_attrs-check_attrs.o: check_attrs.f90 $(AM_V_FC)$(FC) $(check_attrs_FCFLAGS) $(FCFLAGS) -c -o check_attrs-check_attrs.o `test -f 'check_attrs.f90' || echo '$(srcdir)/'`check_attrs.f90 check_attrs-check_attrs.obj: check_attrs.f90 $(AM_V_FC)$(FC) $(check_attrs_FCFLAGS) $(FCFLAGS) -c -o check_attrs-check_attrs.obj `if test -f 'check_attrs.f90'; then $(CYGPATH_W) 'check_attrs.f90'; else $(CYGPATH_W) '$(srcdir)/check_attrs.f90'; fi` check_fdballe-test.o: test.f90 $(AM_V_FC)$(FC) $(check_fdballe_FCFLAGS) $(FCFLAGS) -c -o check_fdballe-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_fdballe-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_fdballe_FCFLAGS) $(FCFLAGS) -c -o check_fdballe-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_fdballe-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_fdballe_FCFLAGS) $(FCFLAGS) -c -o check_fdballe-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_fdballe-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_fdballe_FCFLAGS) $(FCFLAGS) -c -o check_fdballe-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_fdballe-check_fdballe.o: check_fdballe.f90 $(AM_V_FC)$(FC) $(check_fdballe_FCFLAGS) $(FCFLAGS) -c -o check_fdballe-check_fdballe.o `test -f 'check_fdballe.f90' || echo '$(srcdir)/'`check_fdballe.f90 check_fdballe-check_fdballe.obj: check_fdballe.f90 $(AM_V_FC)$(FC) $(check_fdballe_FCFLAGS) $(FCFLAGS) -c -o check_fdballe-check_fdballe.obj `if test -f 'check_fdballe.f90'; then $(CYGPATH_W) 'check_fdballe.f90'; else $(CYGPATH_W) '$(srcdir)/check_fdballe.f90'; fi` check_messages-test.o: test.f90 $(AM_V_FC)$(FC) $(check_messages_FCFLAGS) $(FCFLAGS) -c -o check_messages-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_messages-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_messages_FCFLAGS) $(FCFLAGS) -c -o check_messages-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_messages-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_messages_FCFLAGS) $(FCFLAGS) -c -o check_messages-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_messages-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_messages_FCFLAGS) $(FCFLAGS) -c -o check_messages-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_messages-check_messages.o: check_messages.f90 $(AM_V_FC)$(FC) $(check_messages_FCFLAGS) $(FCFLAGS) -c -o check_messages-check_messages.o `test -f 'check_messages.f90' || echo '$(srcdir)/'`check_messages.f90 check_messages-check_messages.obj: check_messages.f90 $(AM_V_FC)$(FC) $(check_messages_FCFLAGS) $(FCFLAGS) -c -o check_messages-check_messages.obj `if test -f 'check_messages.f90'; then $(CYGPATH_W) 'check_messages.f90'; else $(CYGPATH_W) '$(srcdir)/check_messages.f90'; fi` check_messages_stdinstdout-test.o: test.f90 $(AM_V_FC)$(FC) $(check_messages_stdinstdout_FCFLAGS) $(FCFLAGS) -c -o check_messages_stdinstdout-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_messages_stdinstdout-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_messages_stdinstdout_FCFLAGS) $(FCFLAGS) -c -o check_messages_stdinstdout-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_messages_stdinstdout-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_messages_stdinstdout_FCFLAGS) $(FCFLAGS) -c -o check_messages_stdinstdout-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_messages_stdinstdout-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_messages_stdinstdout_FCFLAGS) $(FCFLAGS) -c -o check_messages_stdinstdout-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_messages_stdinstdout-check_messages_stdinstdout.o: check_messages_stdinstdout.f90 $(AM_V_FC)$(FC) $(check_messages_stdinstdout_FCFLAGS) $(FCFLAGS) -c -o check_messages_stdinstdout-check_messages_stdinstdout.o `test -f 'check_messages_stdinstdout.f90' || echo '$(srcdir)/'`check_messages_stdinstdout.f90 check_messages_stdinstdout-check_messages_stdinstdout.obj: check_messages_stdinstdout.f90 $(AM_V_FC)$(FC) $(check_messages_stdinstdout_FCFLAGS) $(FCFLAGS) -c -o check_messages_stdinstdout-check_messages_stdinstdout.obj `if test -f 'check_messages_stdinstdout.f90'; then $(CYGPATH_W) 'check_messages_stdinstdout.f90'; else $(CYGPATH_W) '$(srcdir)/check_messages_stdinstdout.f90'; fi` check_missing-test.o: test.f90 $(AM_V_FC)$(FC) $(check_missing_FCFLAGS) $(FCFLAGS) -c -o check_missing-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_missing-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_missing_FCFLAGS) $(FCFLAGS) -c -o check_missing-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_missing-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_missing_FCFLAGS) $(FCFLAGS) -c -o check_missing-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_missing-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_missing_FCFLAGS) $(FCFLAGS) -c -o check_missing-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_missing-check_missing.o: check_missing.f90 $(AM_V_FC)$(FC) $(check_missing_FCFLAGS) $(FCFLAGS) -c -o check_missing-check_missing.o `test -f 'check_missing.f90' || echo '$(srcdir)/'`check_missing.f90 check_missing-check_missing.obj: check_missing.f90 $(AM_V_FC)$(FC) $(check_missing_FCFLAGS) $(FCFLAGS) -c -o check_missing-check_missing.obj `if test -f 'check_missing.f90'; then $(CYGPATH_W) 'check_missing.f90'; else $(CYGPATH_W) '$(srcdir)/check_missing.f90'; fi` check_missing_msg-test.o: test.f90 $(AM_V_FC)$(FC) $(check_missing_msg_FCFLAGS) $(FCFLAGS) -c -o check_missing_msg-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_missing_msg-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_missing_msg_FCFLAGS) $(FCFLAGS) -c -o check_missing_msg-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_missing_msg-check_missing_msg.o: check_missing_msg.f90 $(AM_V_FC)$(FC) $(check_missing_msg_FCFLAGS) $(FCFLAGS) -c -o check_missing_msg-check_missing_msg.o `test -f 'check_missing_msg.f90' || echo '$(srcdir)/'`check_missing_msg.f90 check_missing_msg-check_missing_msg.obj: check_missing_msg.f90 $(AM_V_FC)$(FC) $(check_missing_msg_FCFLAGS) $(FCFLAGS) -c -o check_missing_msg-check_missing_msg.obj `if test -f 'check_missing_msg.f90'; then $(CYGPATH_W) 'check_missing_msg.f90'; else $(CYGPATH_W) '$(srcdir)/check_missing_msg.f90'; fi` check_multiplehandler-test.o: test.f90 $(AM_V_FC)$(FC) $(check_multiplehandler_FCFLAGS) $(FCFLAGS) -c -o check_multiplehandler-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_multiplehandler-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_multiplehandler_FCFLAGS) $(FCFLAGS) -c -o check_multiplehandler-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_multiplehandler-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_multiplehandler_FCFLAGS) $(FCFLAGS) -c -o check_multiplehandler-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_multiplehandler-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_multiplehandler_FCFLAGS) $(FCFLAGS) -c -o check_multiplehandler-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_multiplehandler-check_multiplehandler.o: check_multiplehandler.f90 $(AM_V_FC)$(FC) $(check_multiplehandler_FCFLAGS) $(FCFLAGS) -c -o check_multiplehandler-check_multiplehandler.o `test -f 'check_multiplehandler.f90' || echo '$(srcdir)/'`check_multiplehandler.f90 check_multiplehandler-check_multiplehandler.obj: check_multiplehandler.f90 $(AM_V_FC)$(FC) $(check_multiplehandler_FCFLAGS) $(FCFLAGS) -c -o check_multiplehandler-check_multiplehandler.obj `if test -f 'check_multiplehandler.f90'; then $(CYGPATH_W) 'check_multiplehandler.f90'; else $(CYGPATH_W) '$(srcdir)/check_multiplehandler.f90'; fi` check_range-test.o: test.f90 $(AM_V_FC)$(FC) $(check_range_FCFLAGS) $(FCFLAGS) -c -o check_range-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_range-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_range_FCFLAGS) $(FCFLAGS) -c -o check_range-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_range-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_range_FCFLAGS) $(FCFLAGS) -c -o check_range-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_range-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_range_FCFLAGS) $(FCFLAGS) -c -o check_range-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_range-check_range.o: check_range.f90 $(AM_V_FC)$(FC) $(check_range_FCFLAGS) $(FCFLAGS) -c -o check_range-check_range.o `test -f 'check_range.f90' || echo '$(srcdir)/'`check_range.f90 check_range-check_range.obj: check_range.f90 $(AM_V_FC)$(FC) $(check_range_FCFLAGS) $(FCFLAGS) -c -o check_range-check_range.obj `if test -f 'check_range.f90'; then $(CYGPATH_W) 'check_range.f90'; else $(CYGPATH_W) '$(srcdir)/check_range.f90'; fi` check_real0-test.o: test.f90 $(AM_V_FC)$(FC) $(check_real0_FCFLAGS) $(FCFLAGS) -c -o check_real0-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_real0-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_real0_FCFLAGS) $(FCFLAGS) -c -o check_real0-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_real0-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_real0_FCFLAGS) $(FCFLAGS) -c -o check_real0-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_real0-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_real0_FCFLAGS) $(FCFLAGS) -c -o check_real0-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_real0-check_real0.o: check_real0.f90 $(AM_V_FC)$(FC) $(check_real0_FCFLAGS) $(FCFLAGS) -c -o check_real0-check_real0.o `test -f 'check_real0.f90' || echo '$(srcdir)/'`check_real0.f90 check_real0-check_real0.obj: check_real0.f90 $(AM_V_FC)$(FC) $(check_real0_FCFLAGS) $(FCFLAGS) -c -o check_real0-check_real0.obj `if test -f 'check_real0.f90'; then $(CYGPATH_W) 'check_real0.f90'; else $(CYGPATH_W) '$(srcdir)/check_real0.f90'; fi` check_segfault1-test.o: test.f90 $(AM_V_FC)$(FC) $(check_segfault1_FCFLAGS) $(FCFLAGS) -c -o check_segfault1-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_segfault1-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_segfault1_FCFLAGS) $(FCFLAGS) -c -o check_segfault1-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_segfault1-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_segfault1_FCFLAGS) $(FCFLAGS) -c -o check_segfault1-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_segfault1-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_segfault1_FCFLAGS) $(FCFLAGS) -c -o check_segfault1-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_segfault1-check_segfault1.o: check_segfault1.f90 $(AM_V_FC)$(FC) $(check_segfault1_FCFLAGS) $(FCFLAGS) -c -o check_segfault1-check_segfault1.o `test -f 'check_segfault1.f90' || echo '$(srcdir)/'`check_segfault1.f90 check_segfault1-check_segfault1.obj: check_segfault1.f90 $(AM_V_FC)$(FC) $(check_segfault1_FCFLAGS) $(FCFLAGS) -c -o check_segfault1-check_segfault1.obj `if test -f 'check_segfault1.f90'; then $(CYGPATH_W) 'check_segfault1.f90'; else $(CYGPATH_W) '$(srcdir)/check_segfault1.f90'; fi` check_spiegab-test.o: test.f90 $(AM_V_FC)$(FC) $(check_spiegab_FCFLAGS) $(FCFLAGS) -c -o check_spiegab-test.o `test -f 'test.f90' || echo '$(srcdir)/'`test.f90 check_spiegab-test.obj: test.f90 $(AM_V_FC)$(FC) $(check_spiegab_FCFLAGS) $(FCFLAGS) -c -o check_spiegab-test.obj `if test -f 'test.f90'; then $(CYGPATH_W) 'test.f90'; else $(CYGPATH_W) '$(srcdir)/test.f90'; fi` check_spiegab-dbtest.o: dbtest.f90 $(AM_V_FC)$(FC) $(check_spiegab_FCFLAGS) $(FCFLAGS) -c -o check_spiegab-dbtest.o `test -f 'dbtest.f90' || echo '$(srcdir)/'`dbtest.f90 check_spiegab-dbtest.obj: dbtest.f90 $(AM_V_FC)$(FC) $(check_spiegab_FCFLAGS) $(FCFLAGS) -c -o check_spiegab-dbtest.obj `if test -f 'dbtest.f90'; then $(CYGPATH_W) 'dbtest.f90'; else $(CYGPATH_W) '$(srcdir)/dbtest.f90'; fi` check_spiegab-check_spiegab.o: check_spiegab.f90 $(AM_V_FC)$(FC) $(check_spiegab_FCFLAGS) $(FCFLAGS) -c -o check_spiegab-check_spiegab.o `test -f 'check_spiegab.f90' || echo '$(srcdir)/'`check_spiegab.f90 check_spiegab-check_spiegab.obj: check_spiegab.f90 $(AM_V_FC)$(FC) $(check_spiegab_FCFLAGS) $(FCFLAGS) -c -o check_spiegab-check_spiegab.obj `if test -f 'check_spiegab.f90'; then $(CYGPATH_W) 'check_spiegab.f90'; else $(CYGPATH_W) '$(srcdir)/check_spiegab.f90'; fi` dump_dballe-dump_dballe.o: dump_dballe.f90 $(AM_V_FC)$(FC) $(dump_dballe_FCFLAGS) $(FCFLAGS) -c -o dump_dballe-dump_dballe.o `test -f 'dump_dballe.f90' || echo '$(srcdir)/'`dump_dballe.f90 dump_dballe-dump_dballe.obj: dump_dballe.f90 $(AM_V_FC)$(FC) $(dump_dballe_FCFLAGS) $(FCFLAGS) -c -o dump_dballe-dump_dballe.obj `if test -f 'dump_dballe.f90'; then $(CYGPATH_W) 'dump_dballe.f90'; else $(CYGPATH_W) '$(srcdir)/dump_dballe.f90'; fi` dumpmsg_dballe-dumpmsg_dballe.o: dumpmsg_dballe.f90 $(AM_V_FC)$(FC) $(dumpmsg_dballe_FCFLAGS) $(FCFLAGS) -c -o dumpmsg_dballe-dumpmsg_dballe.o `test -f 'dumpmsg_dballe.f90' || echo '$(srcdir)/'`dumpmsg_dballe.f90 dumpmsg_dballe-dumpmsg_dballe.obj: dumpmsg_dballe.f90 $(AM_V_FC)$(FC) $(dumpmsg_dballe_FCFLAGS) $(FCFLAGS) -c -o dumpmsg_dballe-dumpmsg_dballe.obj `if test -f 'dumpmsg_dballe.f90'; then $(CYGPATH_W) 'dumpmsg_dballe.f90'; else $(CYGPATH_W) '$(srcdir)/dumpmsg_dballe.f90'; fi` genattr-genattr.o: genattr.f90 $(AM_V_FC)$(FC) $(genattr_FCFLAGS) $(FCFLAGS) -c -o genattr-genattr.o `test -f 'genattr.f90' || echo '$(srcdir)/'`genattr.f90 genattr-genattr.obj: genattr.f90 $(AM_V_FC)$(FC) $(genattr_FCFLAGS) $(FCFLAGS) -c -o genattr-genattr.obj `if test -f 'genattr.f90'; then $(CYGPATH_W) 'genattr.f90'; else $(CYGPATH_W) '$(srcdir)/genattr.f90'; fi` mkmsg-mkmsg.o: mkmsg.f90 $(AM_V_FC)$(FC) $(mkmsg_FCFLAGS) $(FCFLAGS) -c -o mkmsg-mkmsg.o `test -f 'mkmsg.f90' || echo '$(srcdir)/'`mkmsg.f90 mkmsg-mkmsg.obj: mkmsg.f90 $(AM_V_FC)$(FC) $(mkmsg_FCFLAGS) $(FCFLAGS) -c -o mkmsg-mkmsg.obj `if test -f 'mkmsg.f90'; then $(CYGPATH_W) 'mkmsg.f90'; else $(CYGPATH_W) '$(srcdir)/mkmsg.f90'; fi` mkmsg_sca-mkmsg-sca.o: mkmsg-sca.f90 $(AM_V_FC)$(FC) $(mkmsg_sca_FCFLAGS) $(FCFLAGS) -c -o mkmsg_sca-mkmsg-sca.o `test -f 'mkmsg-sca.f90' || echo '$(srcdir)/'`mkmsg-sca.f90 mkmsg_sca-mkmsg-sca.obj: mkmsg-sca.f90 $(AM_V_FC)$(FC) $(mkmsg_sca_FCFLAGS) $(FCFLAGS) -c -o mkmsg_sca-mkmsg-sca.obj `if test -f 'mkmsg-sca.f90'; then $(CYGPATH_W) 'mkmsg-sca.f90'; else $(CYGPATH_W) '$(srcdir)/mkmsg-sca.f90'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_dballeincludeHEADERS: $(dist_dballeinclude_HEADERS) @$(NORMAL_INSTALL) @list='$(dist_dballeinclude_HEADERS)'; test -n "$(dballeincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dballeincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dballeincludedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(dballeincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(dballeincludedir)" || exit $$?; \ done uninstall-dist_dballeincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(dist_dballeinclude_HEADERS)'; test -n "$(dballeincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(dballeincludedir)'; $(am__uninstall_files_from_dir) install-nodist_includeHEADERS: $(nodist_include_HEADERS) @$(NORMAL_INSTALL) @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-nodist_includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @DO_DBALLEF_FALSE@check-local: check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(dballeincludedir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_dballeincludeHEADERS \ install-nodist_includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_dballeincludeHEADERS \ uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \ clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_dballeincludeHEADERS install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man \ install-nodist_includeHEADERS install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am \ uninstall-dist_dballeincludeHEADERS uninstall-libLTLIBRARIES \ uninstall-nodist_includeHEADERS .PRECIOUS: Makefile # Do not parallel-build this Makefile. # Currently Automake does not mkae the .o sources built from .f90 sources # depend on .mod files, so builds of other sources fail on parallel builds # until libdballef.la is ready @DO_DBALLEF_TRUE@.NOTPARALLEL: @DO_DBALLEF_TRUE@dballef.mod: libdballef.la @DO_DBALLEF_TRUE@check-local: @DO_DBALLEF_TRUE@ for test in $(check_PROGRAMS); do \ @DO_DBALLEF_TRUE@ $(TESTS_ENVIRONMENT) $$test ; \ @DO_DBALLEF_TRUE@ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dballe-7.21/fortran/check_messages_stdinstdout.f900000644000175000017500000000312613022043102017177 00000000000000 program check_fdballe ! ***************************************** ! * Test suite for DBALLE Fortran bindings ! ***************************************** use dbtest use dballef integer :: dbahandle, handle,i,i1,i2,i3,i4,i5,i6,ival,saved_id real :: rval double precision :: dval character (len=10) :: param character (len=255) :: cval character (len=512) :: infile external :: testcb logical :: status ! call fdba_error_set_callback(0, testcb, 2, i) ier = idba_presentati(dbahandle, "mem:") call ensure_no_error("presentati") ier = idba_preparati(dbahandle, handle, "write", "write", "write") call ensure_no_error("preparati") ! Database login ier = idba_messages_open_input(handle, "", "rb", "BUFR", .true.) call ensure_no_error("messages_open_input") ier = idba_messages_open_output(handle, "", "wb", "BUFR") call ensure_no_error("messages_open_output") ! Query the first message/subset ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 1") call ensure("messages_read_next result 1", status) ier = idba_messages_write_next(handle, "") call ensure_no_error("messages_write_next 1") ier = idba_fatto(handle) call ensure_no_error("fatto") ier = idba_arrivederci(dbahandle) call ensure_no_error("arrivederci") ! If we made it so far, exit with no error print*,"check_messages_stdinstdout: all tests succeed." call exit (0) end program include "check-utils.h" dballe-7.21/fortran/dballef.mod0000644000175000017500000001657313022517212013363 00000000000000‹í]]s›Èš¾çWèÎÎÅÙ¢?hàîxlŸY×f씓̞³µU–£:8e2óë÷í ›F²%äЊwMDƒàyÞ¯~»yi~ýÇÝý§û‹Ûɪ˜m–Ùä[V®E>9Côl2-³´Êf“yY¬&³‡t¹Ìæÿ1}ïüüÝä½úË;¾ÂçülšÌ7ùSUžMÎ’d±.’iò°Èg‹üñl‚áP8`Ë^{½³àL²ü+¡ŸMè$˜°I8‰øïÅë¬Òˆ'ÈŸ 4Ax‚H¦þàÉÙåTgg49?¿º¾¿ùýújòùö¿nïþûöo7·Ÿ®o?yõæ‡û»Ëz_ó¯n>&¿ÜÜ^%—üÛeÂv÷aòÎvñé:¹¼ûí'vŽè¸§³Y™­×g“s~à¯×÷“ÎøyÔ6SÈ´¾ð?Þ{&¤ÉsÞÕççÒ6¼š"—D“ßïn®Äõ8©Êú_<¡Îä.»Cg ôÜ9 t¹y{Èm_DÛäV$=bó,±a.6ÄúäµM‚¿Ý]}~½¿åÝ~º¿¹ýxsi»øµímS0‡ Ù.³²ÚïÃÅýÅo× C|£U,lÜ|¼KÚËÿ„³^ò“"Oеm9?¿¼»ýøétÖ¨›*Vºº}sgïzžö3íôJk5®ósù 49ûßϾü/<Óeãá @8‘Îz]L<Œî’àúêóýn^]_¾ïWàäŸo/?ÝÜÝN>ÀI¤€Þßýzsyñ^ÕÛœ8Š9VìO0êš_ð1þNÿ½~J§Ù›Öldi–Áÿ‰PQ,´l4·®+µöÑ~ D qN­ò n¢›™¦e¹H³¤ÌªM™¿i˜Y&ÃÿE¯2ý’îêÙ~ˆ h’9Ž`Ç8»Y±yXþp÷ïò»¿>Ô¾5ßõ5 Q‡-µdZ¬ž–Ù÷±)òTåýõ?‡°Ôˆ¹yоgž<‹¼ÊvÚèЮçãç_îï>º¹½îM#<.ýñ'ñ`Óéz ²¢p—ÅÔ1ì„ ìï:ÀC.Ìj¾,Òž Ïa¨å0˜E 3„£Ó%‡˜bç5ŽÂõëìö ûŽª¶³ô,èO'Ú†tôΣ~Cô§{Ô {¹R$Hå*™g»3îŸ>m™Zi ˜;©ý|“/‹éàÀºsLÙ I¼‹ûû‹%f¯ï“«ë×·W×·—ÿ’3güI½Ý;æú6J&;g‰shS¿^ßžËFË;©l>o§±•ŠdûKQ.þ*ò*]&Uúð¦6î-õAJ"׆d`ì€eR°83¦˜ñ¾ç´é©^Gã‡` AÚ ;q~Ø¢Çõ)zŸ8=Ë:ÏbEѧg ’~ç¾¢wò¾×e½d€¹dž®Êø‚!¾Ø`yêAÆËC ˆÎñä#Í"M@uŽ?_¸Á<Ü:Ç“÷G+¢ò Sç3É2ûI£‚afš4O=ìØ¹M$#ƒäÉÇ;Ãa@26Hþ|Á ŸùÉ“÷I‹#Œ¤Yî¬Òï'ÎÏÒ!§Wç9OUù³ÑƒXÃDŠãØœ”,×x~N*€QI`g™Æ êÒÔÔNþ† ò­[Ð0Ö!øsÜð­»ÜNÆëÏg¬0d"iɳ?’å"Û•+©5ÿ™+ùN¾Y.G©]pJ@¾% èhC¿Ðów†ˆ¨¯tÑÖóå–?ݾüÄ»DãFŠovZÜCú„‰-·’bÅfñ(ôÔ!jäã†púŠ*· ‡¼¦p ú„"K;ñÛRÐå‡Dñ˜-æóŸ-Ý„?ÙÚúKñãËV_yÜÜDº¶^<æÙ̉ú´ãŽõ  ™døWö³™&ŒÕð&WÌpÁ°ú<³Ó yãywRÊ .=æ·¬¬Óÿ¿ƒí?Xw°¹Œx¯)}ññå"_/¦ïžÕ¦1šè}¢Qã]€gša­MÀX÷0Pˆ°x<&™?%3ýI™gôØøÆ17—7Ÿþöñâ÷ë=\Œ ÛÛc¸§zfnsƒR¤!µ>IR´•¤øüÞø¬ö‹†¶ûÕÜ¼Æ ƒ–ÛℹÑ>nLr[}{­™dÜê<ÉÁ³I -ñ‡ó4šÆôµht°¿%¾{{øÉÖÏ#¤~þçŽJ Q-†W—R "ÔO­í ^s oxæÿÇ\ÿ/ú;X—¸æò >×ç]/¶Ì-ŠÅˆ†4"Œöhì×lÊWÕ }©fèÍø'¸Ò‘w9ô>þ×;éi©ÀÃCRƒ/›ÇÌåd0ꈡßý¦ù´(Ó>3ØZÊVb¶ÒéёÄ♂8˜Äò™ªÃ ØIQ. ì'ƒFwZúúŸíöâ½´†_î®þe©w·7H¶LÂLTŒbþœ5ìôåS‡ÀOc‹|\3*ËÅ·l–•ÓE]}çNΚê^À¸vòel„%ä>²C>ÇrvÙ@ñ™– >p²‰6;vŽ÷%i¨uçÒn’l"H†b°ÃY$#Åe–®VÙ²pÇñ/žDBⱤ4à6Áoq¿†šÓþ‡‘|)| à#ã 'ip®#Î,›§›e•deY”É—4Ÿ-³¤*–Y™V0žO ïÏ—Åú0ÊÛû§.»/Š„û¢X ÊŒUØß!¨²ÇJzó^êÛà=ãÚ/€g #a1X>¦Ç¨»ÔÙb•å#)“ã Â×>23õÐ×°o7Òn✑†2á yÑ.Zjàš‰W¨…“eö-[ö’U{\ÎCB&òT‚jC0׋Ôh,4"k©õÎâdž*‹Àµ"p­Hº–‘Q¡HǾÝÄ oZÌúˆkûœ¦5u ¨3OÇ.y•}¯öðJ¯ë•·vM–è OîÎ\c_Lcß\ÞLàÇÍ<£›gš9-ok´y¡zÅFíÍ)=©7“8‘Ä)| úÈ3ƒØ,«ÒŲ÷føˆÊ %‡¨܇§òŽÎ+I«E¾âòˆÄVÙzv¢ëèÊCTrè3>ÄúðïT^ÃÑ}åI«E|{È7S†’X™­ŠoY2Î|¥Åmü»‡¹‘’1åP‡°yZU…M]5;<ÄÄD*"ºWÁH'HêV9/„ç§,OùÓæxi‹’wo7 ÙWè+ ¨€Ú¨(µl²Š·³ÚÂúøïvà—Æ±Wsa*5K¡ ¢|ý7 ”LLMSÖË´ØTϨzW¶»UÕ‡Û+•±™Bl¦±‡‚Õ|§ 3 úmW2z‘šyÇõ,gÄpº Àö°ý@Î^bsV Q—f™¥³$?fÎgä’Æ TË”jcž3Kµ ‘ç«1FžËjeR­ Ôªæù8mC –ËþQ.ªÌ9}2é² \VÍúqè:“fÞ¯‡És Õ8;î¨rV‡|¹J"å`Îâì÷™¿}u5†„ñ%„¾5uª§8nFäwhìÔáãs7”Ç®¸À‘T\ÄW¦„^4—T󃜪Á¼vɧ2Ëg‹eONØîqxÒGâÖ2ŽTeN â(nÉ<¥¼Ä%CeâCâó5”Ae1¨,®Uf&>1ërÙb­W·Í5–ñ6ã ñ}ø ø¨±\lè’ø¤å·ÎòÊ-e_®ÕìðUNÖrÄÐ"°]ƒ C§UHüH²õ!_±6¦n ªgç¿nÒ¼ÊÖEÞkô}G‚ÄÌdš÷…s·Ë]7— áÎs -¡Cëå^#„b€@Á—Œ#c(Gªßnš®Ì‘ d| –Ñqz[-ˆôÌ5;\îјÔ,Í2ì %ŸdüU/ ¦âg`F!™Wé÷­üÅ>—=’ÅÂ#C¹!ˆ!äo‹1„ †ÄªÐÄÌÌ- ;4ùvð}.‹ ”A)„ž'1D †ˆ/šbˆ@ jî†sÖƒ•–2Z7ùÁ*u“$ ákõ‹9޵H»mô+y¹¬b1ÓFbþf6´Ô`06Cs´”¶N¶{\6ÔXcÐm ºã õ}ø¨ÑUl–p£–Û¡•“¯` Ô•“Ô'ð•ÂG%ãwÚ+qðÛ ÔõÒI* š¨Áר£jr†ÓÓÙêªÚQ:iîuØP©œ ¡u(£>²#¡E7Ï®ŸÙcêÐÈ‘"1 ¡¼ ƒ—a¬H]mê[‰m[Stz.ƒÊzŠAi0ħ0ê§ìËž„š5-”ø»¥C $¢w ÃW°DSS¤ÔȘ£7ÈD&™Š|®³]‘DL}PMS Æ £K O £NJAjÔÉIë2 ¦Gîskøµ*\¢<ÆdddT Ȩ9š¤íˆLÙ©ÌÊueÊq…q À#ðH–PÁPUõ@Í1mªªl]©j¥ªè+ÑÙqÔ΢‡q‹©,y Lf}Ô,w ¬Îú69tœY±|²‰2Ð"‹ôÀ„ëзح¢å¶Õ†b€MadICÕw2c0MC¢óé½OÓîq9ç Ńä4”ù,çeÐd:™‡-$Ÿ›`wº„†2› å ÎÉ X[í·âq¹(zVÜéÙë²F#_h4ã”ñ†¦ñFÄ õu1´ç¾ª¹×iÊÒˆ#H"•Df ³¯N¤<–‚Lο¸¿¹øåý5œ®1ZA¢Æ¯ñð®>ÿö›B#o®'°Vr¶#¨/Ž¿øÝ.9â¡(xÆ;•K=‹¿x_êÊÞþWþó­Wuïué]sl)ÅúKú”̽WüºIú“܆$0•ÉýR3•`^ù(ÇÙïõÕÃè0Þ<€´È].bS#ˆ þpÖ‡ÆëE󲕻h@¼Èjut0»Wž|gAj÷äÏHv ÁôûÅûÏׇ‰©ÁÄ—^ëÈi¦«›ß®o?òþçÅ«—BôžqöÎRü4?~þíú*ùxó?×û¬ )—•íX ò‘E²Ìr—T$ó5MñÚµ±œ ñJ¹.6º ø]â.ªxD)!Ôñ­ãÁ98ñÕÞºBBƒLé8ª º¢ê”ãb=qÈ %ñ5€³‡Íc jXg1̽x  £1áXùƒrŽ£è G6ªptTÄŽÔxÌHM¬H}48‡Gj>¤ú&n›¼’„v-oIȶn2¾u“n–?Ô)w$4Íe $š‹5ÖáëŽçà´;Ì9œÃœ¢ŽÆ€dg‡tüăZÙá0P§ìæüñzÝhÞ°$dÀ3²dŒÕ}tÌÐX¡ïhp3A'ô Òî¢X²±Ã]0¾V¸ê”<è„»’8ØPl§ÆŸd ¶?³´<¦†O¯Š¼úâ>=þéöSl\Ñ„½Õ"ßTDzæ¡x à­³i‘ÏÁcOo³AÓÛCñDÝáhpïÂy)’™G•ËrGcá ÉÀ£Äg^Ádêm¨SîÈùŠ4º¹ ”Ä@s±<ÿþUn¾¬þ|ÊБP •xøÒ,|% !ìHv–®`!–5GxL<´öŽçð6V?Gƒ´ûE–lìû1Ñø÷cø2L uÊÒ0”a’8ÔPbÛ©ãA&{C‰¹kó0|$P# ¯9{BŽ`á÷¢°X0/ejWùò÷{V#z¯†…ö`y«óY˜¿ã³^ã\›¸~¹Dzß’{€o{¶¢¢E…ã ê1`ä¿U£á+(õÍ‹%òzFƒ‚Eí]÷|$£é1`ôVóÌ«µzæ¥y=£•[ÝŠV0òªºš F4k^¼ee.GCtxžÇË·ŒÂL<üùä¤ÈvühÌ™^=e™Ó@D'œòðâ-Ê߰(ÓyÞ°$ìÌfüª5þ^¾ž-ñ˜7Zb;¸‹‚[š§óeúx|@‡÷¼Œl–VîáO«ªtWÔk鸠õ\Ü@TÃì¿¢Ò¶÷·ZÂ_ÖÙãfoW¸Ï»ß®8‚ž Â_“:¢ûÂPsS.æàÐËßœÚ'¥O$|;CJouÉFþž×N÷CÐèEò„/±7-6yµÔ˜‹$Èz џpão|µP8ŸNø²Ñeö´ÈçŸØÔ«ÍòÆvE…GŸf'¼L²O`/†ö³ÍŽ»úŒ¿À±Ø#c.°G¬öŽç𮽳ÀÞñ%„ö‘µÀ=b-°7Ô)'ö†Jb ¹Xo2æ{ÄZ`ïxpwðÎ{N@²»õñ×,#Ö{A²›wØ{Ë’°c̰uÚŽb«UóÍ_Ã=^ä p×wŽçð0Óˆi¯eÓø»Â-] º} - »-~Â>DC9VÀ~†Âl§fƒLö(†Â—Ó××s鬲ç(j¬µç¤À\qÏ L¬»îž¨Âîê{.  í 6h|~T¨À„­ˆà(Ò‰@¢Ýˆà¦ÀŽ bvDp•= ÇŽD5xÀÔ]‰× Pæz¼N@ê¬Êë&km^'PY+ô:ʾɸ#‰ºëôÎáS‘¹N︲ë#I<úS$î®Ó;Ô)OÄæ:½C%1Ð\lǯbˆ­uz@e¬Öë"ê[kö:ÊX¹× DVõU1 ó:êw×ï=œƒ»1ê›ë÷Ò^˲Rß*÷ þèåÔï®ß;Ô w`ùCeý^j—&ÒñK)ê®ßë(c_'kù:Èšü c¾|—báe¥¾dbгËiÙOŠE•Gy8 % o ÌK#×[`ü°UP©ýb:þ"3Û^®ÒxÂ}M“}Ã’ˆL¯yÃ’ˆ…$ôµz]p\bÍØP2â”%¤;øÕ‡Ý#c ºî‘ñ0}¨=2–Ð 4&˜×=Së¾6%£ß[£¼R¶ëU Â¦o9€ˆØæ*jú™ˆ‚Ž· {´â„»u^NÜíÖ]P=žó-ÕT¼¥Ú˜˜2¦$ÆÅ‚Ɉq±Ó¯éHƒ\»°˜Ž_XLEa±aÄ.€Š SvQl´ˆø:ŸºY¿ÙzpÊÝ]¹  Ú³ ÝQj¿*šŽù"dj½*úxp¿wZÕý4ôGW]Ø}pg ¨SvûО4ÇŸ{ í›­áø7[#Ûš£ñ­™—W‹Žt@ý€EGhd[Q4¾EÌ’Ì Ô ™wžw~v™Ì7ùSUžA(ë2Qß!¥N’źH¦ÉÃ"Ÿ-òGÞÊoAN“t™••Ø =¾¹^ÓEZñf@[ÄyH§ÿ^?¥ÓLœ‹¦¢XŠ-·¦iY.ø[àʬڔù™;¨Øñ%•`ø»Ï’Y±yXÊ“°v;™«§eö]´‡¼}ž<‹¼ÊJq¢H5•Å´næ”Ä…çË"àIØl"‰–ÈÓZô‹ðÛÕ½™O›AsQ®’y&éS$αɗÅTl î­Œ©ñ¥(y•.“*}í‚ü"ÐhàÉ C¶0µ1Õª‚UC¤U ±:‰:Eà«’yºnÏÌ•Z³:}€=­µ¾F@ôcë To­O[S€¤Í¸\MDµ×× ææ‚‘q–抱q´:5« ®Ò睊ŸƒðU‹P‡Ò #rCÚ6£õ–fuLÐÐuõ3Öü¢9‰à‘g$ËE.Ï (ä›å²1m&à‹¦Ö0B¿i¬[„fê ¡ؘ-æsÉ%ð×`KrSà_/ólÖ\* dã_™ú óÔv1Ûï7ðçÅ´5Fþø@}†H®gšÌŸaàQÛk±Mä~® ùcÚ6,Dƒ\Ò-Y}“ûY½9åÎÊË¥å¦<}ToÊ߯õ¦Ã_ƒ ›Ëe&ÐóµV¿l3~^Ä»à‡¦ù´(S±›M 8P/à”탾e³¬œŠ‹!¸‰ÓrÁ"uô,]­²e!#³±97Bõ9fÙ<Ý,«$+Ë¢Ld”TÄδ‚pš uˆ(¬åÏÂ?ܯn‡,VYÎñ­$lLÔo3 Ak&mñ)Ûó¯Bô¡¶Ý"&¤m*¡Úv{Åm³PU m·‡5ÞœVI ]YêUÛnúío—Ù·l)[µ IÿѶÛG¬ýq*ÓüQ^›‰Ü#d*o÷óö°Ó=Åwî&âu«ö®æbØÇÆþYV¥‹åZîjpè»´Ÿš§nÞ »ñzvµ?EÌøi™­Àˆ +].y+»Zß8Å:«:ûkeÏÓª*dS¬~¢®XŸ²ü÷iSÉ»&Ûs@ ŽôŸ¦ØTõy(ë=<¢=QcAÍae–Î ¨~—§ ¢îišýíI˜u’?À§³ö,ÌÓО¦±HyÔãB¶Ò‰ÙÚþ ªô©Ì m’á7¶ ­|tWÉóDñ¤ÓÜž(fí¾5¸»üG|bµ7?"~mÑ_7)XìºÈÅõ ª=@™ Xwt‚j×ZO‹§TéMí©1nÚ7ky(®Y•=Ȉ3iÚŸ6šEÇkÛò0†j¿V—æòJ4lwÉ,Ó×Ú+´ETh—ãˆvuÚ¹Ì Ãö$2Àjø5adž&Z‘8h[E6ÚÈž74¿¦>k›pEÛ<-²GÑ#{…fc{¢Æ£åž¥Ì2}³±>Ü£$2öÈT‘šgo€6kª”ËW…æÕ”ÕjÛä@E6zS{mëíÜE&KôV™ ‡µt¾ËEÑöé4¬ÃŒÜóu¸ ™“wÞÿ;E"S&2dballe-7.21/fortran/check-utils.h0000644000175000017500000000111513022043102013627 00000000000000!!! ******************** !!! * Utility functions !!! ******************** subroutine testcb(val) USE,INTRINSIC :: iso_c_binding include "dballeff.h" integer :: val character (len=1000) :: buf ier = idba_error_code() if (ier.ne.0) then print *,ier," testcb in ",val call idba_error_message(buf) print *,trim(buf) call idba_error_context(buf) print *,trim(buf) call idba_error_details(buf) print *,trim(buf) call exit (1) end if return endsubroutine testcb dballe-7.21/fortran/genattr.f900000644000175000017500000000375513022043102013243 00000000000000program tmp use dballef integer,parameter :: nvar=5 real :: field(nvar),obsinc(nvar) character(len=6) :: var(nvar) INTEGER :: handle,handle_err,ana_id,debug,i ! gestione degli errori ierr = idba_error_set_callback(0,C_FUNLOC(idba_default_error_handler),debug,handle_err) ierr = idba_messaggi(handle, "tmp.bufr", "w", "BUFR") ! vital statistics data ierr = idba_setcontextana (handle) ierr = idba_set (handle,"rep_memo","generic") ierr = idba_set (handle,"lat",44.5) ierr = idba_set (handle,"lon",10.0) ierr = idba_set (handle,"mobile",0) ierr = idba_set (handle,"block",16) ierr = idba_set (handle,"station",144) !!!! e' cosi' per compatibilita' db ierr = idba_prendilo (handle) ierr = idba_enqi (handle,"ana_id",ana_id) ierr = idba_unsetall (handle) ierr = idba_setc (handle,"rep_memo","generic") ierr = idba_seti (handle,"ana_id",ana_id) !!!! ierr = idba_settimerange (handle,254,0,0) ierr = idba_setdate (handle,2010,04,11,12,0,0) ierr = idba_setlevel (handle,100,50000,0,0) var(1)="B11003" var(2)="B11004" var(3)="B12101" var(4)="B13003" var(5)="B07004" field(1)=5.5 field(2)=6.6 field(3)=273.15 field(4)=50. field(5)=55000 obsinc(1)=.5 obsinc(2)=.6 obsinc(3)=10. obsinc(4)=5. obsinc(5)=100. ierr = idba_set(handle,"B08001",1) ierr = idba_prendilo(handle) !ierr = idba_unset(handle,"B08001") print *,"-------------------" ! cicle on 5 variables to write original data and obsevation increments do i=1,nvar print *,var(i),field(i),obsinc(i) ! add or rewrite new data ierr = idba_set(handle,var(i),field(i)) ierr = idba_prendilo(handle) ierr = idba_set(handle,"*B33198",obsinc(i)) ierr = idba_critica(handle) ierr = idba_unset(handle,"*B33198") ierr = idba_unset(handle,var(i)) end do ierr = idba_set(handle,'query',"message generic") ierr = idba_prendilo (handle) ! end session and connection ierr = idba_fatto(handle) end program tmp dballe-7.21/fortran/dballef.h0000644000175000017500000002111413022043102013006 00000000000000 ! ! Interface file for DB-ALLe ! ! Copyright (C) 2005,2006 ARPA-SIM ! ! 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. ! ! 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 St, Fifth Floor, Boston, MA 02110-1301 USA ! ! Author: Enrico Zini ! use dballef ! TODO: function o subroutine? ! missing value INTEGER, PARAMETER :: & dba_int_b = SELECTED_INT_KIND(1), & ! Byte integer dba_int_s = SELECTED_INT_KIND(4), & ! Short integer dba_int_l = SELECTED_INT_KIND(8) ! Long integer INTEGER, PARAMETER :: & dba_fp_s = SELECTED_REAL_KIND(6), & ! Single precision dba_fp_d = SELECTED_REAL_KIND(15) ! Double precision REAL, PARAMETER :: DBA_MVR = HUGE(1.0) !REAL(dba_kind=dba_fp_s), PARAMETER :: = HUGE(1.0_dba_fp_s) REAL(kind=dba_fp_d), PARAMETER :: DBA_MVD = HUGE(1.0_dba_fp_d) !REAL(kind=dba_fp_d), PARAMETER :: DBA_MVD = 1.79769D308 INTEGER, PARAMETER :: DBA_MVI = HUGE(0) INTEGER(kind=dba_int_b), PARAMETER :: DBA_MVB = HUGE(0_dba_int_b) CHARACTER(len=1), PARAMETER :: DBA_MVC = char(0) ! Get/Set routines interface idba_enq subroutine idba_enqb(handle,param,value) integer, intent(in) :: handle integer (kind=1),intent(out) :: value character (len=*), intent(in) :: param end subroutine idba_enqb subroutine idba_enqi(handle,param,value) integer, intent(in) :: handle integer, intent(out) :: value character (len=*), intent(in) :: param end subroutine idba_enqi subroutine idba_enqr(handle,param,value) integer, intent(in) :: handle real, intent(out) :: value character (len=*), intent(in) :: param end subroutine idba_enqr subroutine idba_enqd(handle,param,value) integer, intent(in) :: handle double precision, intent(out) :: value character (len=*), intent(in) :: param end subroutine idba_enqd subroutine idba_enqc(handle,param,value) integer, intent(in) :: handle character (len=*), intent(in) :: param character (len=*), intent(out) :: value end subroutine idba_enqc end interface interface idba_set subroutine idba_setb(handle,param,value) integer, intent(in) :: handle integer (kind=1), intent(in) :: value character (len=*), intent(in) :: param end subroutine idba_setb subroutine idba_seti(handle,param,value) integer, intent(in) :: handle,value character (len=*), intent(in) :: param end subroutine idba_seti subroutine idba_setr(handle,param,value) integer, intent(in) :: handle real, intent(in) :: value character (len=*), intent(in) :: param end subroutine idba_setr subroutine idba_setd(handle,param,value) integer, intent(in) :: handle double precision, intent(in) :: value character (len=*), intent(in) :: param end subroutine idba_setd subroutine idba_setc(handle,param,value) integer, intent(in) :: handle character (len=*), intent(in) :: param,value end subroutine idba_setc end interface interface ! Error handling routines integer function idba_error_code() end function idba_error_code subroutine idba_error_message(message) character (len=*), intent(out) :: message end subroutine idba_error_message subroutine idba_error_context(message) character (len=*), intent(out) :: message end subroutine idba_error_context subroutine idba_error_details(message) character (len=*), intent(out) :: message end subroutine idba_error_details subroutine idba_error_set_callback(code,func,data,handle) integer, intent(in) :: code external :: func integer, intent(in) :: data integer, intent(out) :: handle end subroutine idba_error_set_callback subroutine idba_error_remove_callback(handle) integer, intent(in) :: handle end subroutine idba_error_remove_callback integer function idba_default_error_handler(debug) logical, intent(in) :: debug end function idba_default_error_handler integer function idba_error_handler_tolerating_overflows(debug) logical, intent(in) :: debug end function idba_error_handler_tolerating_overflows ! Init/Shutdown routines subroutine idba_messaggi(handle, filename, mode, type) integer, intent(out) :: handle character (len=*), intent(in) :: filename,mode,type end subroutine idba_messaggi subroutine idba_fatto(handle) integer, intent(in) :: handle end subroutine idba_fatto subroutine idba_unset(handle,param) integer, intent(in) :: handle character (len=*), intent(in) :: param end subroutine idba_unset subroutine idba_unsetall(handle) integer, intent(in) :: handle end subroutine idba_unsetall subroutine idba_setcontextana(handle) integer, intent(in) :: handle end subroutine idba_setcontextana subroutine idba_enqlevel(handle,ltype1,l1,ltype2,l2) integer, intent(in) :: handle integer, intent(out) :: ltype1,l1,ltype2,l2 end subroutine idba_enqlevel subroutine idba_setlevel(handle,ltype1,l1,ltype2,l2) integer, intent(in) :: handle,ltype1,l1,ltype2,l2 end subroutine idba_setlevel subroutine idba_enqtimerange(handle,ptype,p1,p2) integer, intent(in) :: handle integer, intent(out) :: ptype,p1,p2 end subroutine idba_enqtimerange subroutine idba_settimerange(handle,ptype,p1,p2) integer, intent(in) :: handle,ptype,p1,p2 end subroutine idba_settimerange subroutine idba_enqdate(handle,year,month,day,hour,min,sec) integer, intent(in) :: handle integer, intent(out) :: year,month,day,hour,min,sec end subroutine idba_enqdate subroutine idba_setdate(handle,year,month,day,hour,min,sec) integer, intent(in) :: handle,year,month,day,hour,min,sec end subroutine idba_setdate subroutine idba_setdatemin(handle,year,month,day,hour,min,sec) integer, intent(in) :: handle,year,month,day,hour,min,sec end subroutine idba_setdatemin subroutine idba_setdatemax(handle,year,month,day,hour,min,sec) integer, intent(in) :: handle,year,month,day,hour,min,sec end subroutine idba_setdatemax ! Action routines subroutine idba_scopa(handle, repinfofile) integer, intent(in) :: handle character (len=*), intent(in) :: repinfofile end subroutine idba_scopa subroutine idba_quantesono(handle, count) integer, intent(in) :: handle integer, intent(out) :: count end subroutine idba_quantesono subroutine idba_elencamele(handle) integer, intent(in) :: handle end subroutine idba_elencamele subroutine idba_voglioquesto(handle, count) integer, intent(in) :: handle integer, intent(out) :: count end subroutine idba_voglioquesto subroutine idba_dammelo(handle,param) integer, intent(in) :: handle character (len=*), intent(out) :: param end subroutine idba_dammelo subroutine idba_prendilo(handle) integer, intent(in) :: handle end subroutine idba_prendilo subroutine idba_dimenticami(handle) integer, intent(in) :: handle end subroutine idba_dimenticami subroutine idba_voglioancora(handle, count) integer, intent(in) :: handle integer, intent(out) :: count end subroutine idba_voglioancora subroutine idba_ancora(handle,param) integer, intent(in) :: handle character (len=*), intent(out) :: param end subroutine idba_ancora subroutine idba_critica(handle) integer, intent(in) :: handle end subroutine idba_critica subroutine idba_scusa(handle) integer, intent(in) :: handle end subroutine idba_scusa ! Pretty printing routines subroutine idba_spiegal(handle,ltype1,l1,ltype2,l2,result) integer, intent(in) :: handle,ltype1,l1,ltype2,l2 character (len=*), intent(out) :: result end subroutine idba_spiegal subroutine idba_spiegat(handle,ptype,p1,p2,result) integer, intent(in) :: handle,ptype,p1,p2 character (len=*), intent(out) :: result end subroutine idba_spiegat subroutine idba_spiegab(handle,varcode,var,result) integer, intent(in) :: handle character (len=*), intent(in) :: varcode,var character (len=*), intent(out) :: result end subroutine idba_spiegab end interface dballe-7.21/fortran/check_segfault1.f900000644000175000017500000000204413022043102014615 00000000000000program test use dballef integer :: idbhandle1,handle1 integer :: i,anaid integer :: error_handle ierr = idba_error_set_callback(0, C_FUNLOC(idba_default_error_handler), 42, error_handle) ierr = idba_presentati(idbhandle1,"sqlite:tmp.sqlite") ierr = idba_preparati (idbhandle1,handle1,"write","write","write") ierr = idba_scopa (handle1, "") ierr = idba_fatto(handle1) ierr = idba_arrivederci(idbhandle1) do i = 1, 1030 ierr = idba_presentati(idbhandle1,"sqlite:tmp.sqlite") ! print *,"Presentati",idbhandle1 ierr = idba_preparati (idbhandle1,handle1,"write","write","write") ! print *,"Preparati",handle1 ! Insert data about a station ierr = idba_set (handle1, "rep_memo", "synop") ierr = idba_set (handle1, "lat", 11.345) ierr = idba_set (handle1, "lon", 44.678) ierr = idba_set (handle1, "height", 23.0) ierr = idba_setcontextana (handle1); ierr = idba_prendilo (handle1) ! print *,"Fatto",handle1 ierr = idba_fatto(handle1) ! print *,"Arrivederci",idbhandle1 ierr = idba_arrivederci(idbhandle1) end do end program test dballe-7.21/fortran/error.cc0000644000175000017500000001265613022043102012717 00000000000000#include "handles.h" #include "trace.h" #include "common.h" #include #include #include #include #define MAX_CALLBACKS 50 using namespace wreport; namespace { typedef void (*fdba_error_callback)(int* data); struct HErrcb : public dballe::fortran::HBase { ErrorCode error; fdba_error_callback cb; int data; void start() { dballe::fortran::HBase::start(); } void stop() { dballe::fortran::HBase::stop(); } // Check if this callback should be triggered by this error code // If it should, invoke the callback void check_invoke(ErrorCode code) { if (error == 0 || error == code) cb(&data); } }; struct dballe::fortran::Handler herr; static ErrorCode last_err_code = WR_ERR_NONE; static char last_err_msg[1024]; } namespace dballe { namespace fortran { static int usage_refcount = 0; void error_init() { if (usage_refcount > 0) return; herr.init("Error Handling", "MAX_CALLBACKS"); ++usage_refcount; } int error(wreport::error& e) { IF_TRACING(log_error(e)); last_err_code = e.code(); strncpy(last_err_msg, e.what(), 1024); size_t todo = herr.in_use; for (int i = 0; todo && i < MAX_CALLBACKS; ++i) if (herr.records[i].used) { herr.records[i].check_invoke(last_err_code); --todo; } return 1; } int success() { last_err_code = WR_ERR_NONE; last_err_msg[0] = 0; return 0; } } } using namespace dballe; /**@name Error management routines * * @{ */ extern "C" { /** * Return the error code for the last function that was called. * * This is a list of known codes: * * @li 0: No error * @li 1: Item not found * @li 2: Wrong variable type * @li 3: Cannot allocate memory * @li 4: Database error * @li 5: Handle management error * @li 6: Buffer is too short to fit data * @li 7: Error reported by the system * @li 8: Consistency check failed * @li 9: Parse error * @li 10: Write error * @li 11: Regular expression error * @li 12: Feature not implemented * @li 13: Value outside acceptable domain * * @return * The error code. */ int idba_error_code() { return last_err_code; } /** * Return the error message for the last function that was called. * * The error message is just a description of the error code. To see more * details of the specific condition that caused the error, use * idba_error_context() and idba_error_details() * * @param message * The string holding the error message. If the string is not long enough, it * will be truncated. */ void idba_error_message(char* message, unsigned message_len) { fortran::cstring_to_fortran(last_err_msg, message, message_len); } /** * Return a string describing the error context description for the last * function that was called. * * This string describes what the code that failed was trying to do. * * @param message * The string holding the error context. If the string is not long enough, * it will be truncated. */ void idba_error_context(char* message, unsigned message_len) { fortran::cstring_to_fortran("", message, message_len); } /** * Return a string with additional details about the error for the last * function that was called. * * This string contains additional details about the error in case the code was * able to get extra informations about it, for example by querying the error * functions of an underlying module. * * @param message * The string holding the error details. If the string is not long enough, * it will be truncated. */ void idba_error_details(char* message, unsigned message_len) { fortran::cstring_to_fortran("", message, message_len); } /** * Set a callback to be invoked when an error of a specific kind happens. * * @param code * The error code of the error that triggers this callback. If DBA_ERR_NONE * is used, then the callback is invoked on all errors. * @param[in] func * The function to be called. * @param data * An arbitrary integer data that is passed verbatim to the callback function * when invoked. * @retval handle * A handle that can be used to remove the callback * @return * The error indicator for the function */ int idba_error_set_callback(int code, fdba_error_callback func, int data, int* handle) { // Initialise the error library in case it has not been done yet fortran::error_init(); *handle = herr.request(); HErrcb& h = herr.get(*handle); h.error = (ErrorCode)code; h.cb = func; h.data = data; return fortran::success(); } /** * Remove a previously set callback. * * @param handle * The handle previously returned by idba_error_set_callback * @return * The error indicator for the function */ int idba_error_remove_callback(int* handle) { herr.release(*handle); return fortran::success(); } /** * Predefined error callback that prints a message and exits. * * The message is printed only if a non-zero value is supplied as user data */ void idba_default_error_handler(int* debug) { if (*debug) fprintf(stderr, "DB-All.e error %d: %s\n", last_err_code, last_err_msg); exit(1); } /** * Predefined error callback that prints a message and exists, except in case * of overflow errors. * * In case of overflows it prints a warning and continues execution */ void idba_error_handle_tolerating_overflows(int* debug) { if (last_err_code != WR_ERR_NOTFOUND) { if (*debug) fprintf(stderr, "DB-All.e error %d: %s\n", last_err_code, last_err_msg); exit(1); } } /// @} } dballe-7.21/fortran/Makefile.am0000644000175000017500000000667113022517200013320 00000000000000if DO_DBALLEF # Do not parallel-build this Makefile. # Currently Automake does not mkae the .o sources built from .f90 sources # depend on .mod files, so builds of other sources fail on parallel builds # until libdballef.la is ready .NOTPARALLEL: AM_CPPFLAGS = -I$(top_srcdir) $(WREPORT_CFLAGS) if FILE_OFFSET_BITS_64 AM_CPPFLAGS += -D_FILE_OFFSET_BITS=64 endif # libdballef dballeincludedir = $(includedir)/dballe # Include the F90 interface file as well dist_dballeinclude_HEADERS = dballef.h dballeff.h dist_noinst_HEADERS = common.h handles.h error.h trace.h nodist_include_HEADERS = dballef.mod lib_LTLIBRARIES = libdballef.la libdballef_la_SOURCES = \ common.cc \ error.cc \ trace.cc \ binding.cc \ dballef.f90 libdballef_la_LIBADD = ../dballe/libdballe.la libdballef_la_LDFLAGS = -version-info @LIBDBALLEF_VERSION_INFO@ dballef.mod: libdballef.la # # Unit testing # TESTS_ENVIRONMENT = $(top_srcdir)/extra/runtest check_PROGRAMS = check_missing_msg #TESTS = $(check_PROGRAMS) dbtestlib = test.f90 dbtest.f90 dballef.mod CXXFLAGS += -O0 check_missing_msg_SOURCES = test.f90 check_missing_msg.f90 check_missing_msg_LDADD = libdballef.la -lpopt check_missing_msg_FCFLAGS = -g check_PROGRAMS += check_real0 check_range check_fdballe check_attrs check_missing check_segfault1 check_multiplehandler check_spiegab check_messages check_real0_SOURCES = $(dbtestlib) check_real0.f90 check_real0_LDADD = libdballef.la -lpopt check_real0_FCFLAGS = -g check_range_SOURCES = $(dbtestlib) check_range.f90 check_range_LDADD = libdballef.la -lpopt check_range_FCFLAGS = -g check_fdballe_SOURCES = $(dbtestlib) check_fdballe.f90 check_fdballe_LDADD = libdballef.la -lpopt check_fdballe_FCFLAGS = -g check_attrs_SOURCES = $(dbtestlib) check_attrs.f90 check_attrs_LDADD = libdballef.la -lpopt check_attrs_FCFLAGS = -g check_missing_SOURCES = $(dbtestlib) check_missing.f90 check_missing_LDADD = libdballef.la -lpopt check_missing_FCFLAGS = -g check_segfault1_SOURCES = $(dbtestlib) check_segfault1.f90 check_segfault1_LDADD = libdballef.la -lpopt check_segfault1_FCFLAGS = -g check_spiegab_SOURCES = $(dbtestlib) check_spiegab.f90 check_spiegab_LDADD = libdballef.la -lpopt check_spiegab_FCFLAGS = -g check_messages_SOURCES = $(dbtestlib) check_messages.f90 check_messages_LDADD = libdballef.la -lpopt check_messages_FCFLAGS = -g check_messages_stdinstdout_SOURCES = $(dbtestlib) check_messages_stdinstdout.f90 check_messages_stdinstdout_LDADD = libdballef.la -lpopt check_messages_stdinstdout_FCFLAGS = -g check_multiplehandler_SOURCES = $(dbtestlib) check_multiplehandler.f90 check_multiplehandler_LDADD = libdballef.la -lpopt check_multiplehandler_FCFLAGS = -g noinst_PROGRAMS = dumpmsg_dballe mkmsg mkmsg-sca genattr dumpmsg_dballe_SOURCES = dumpmsg_dballe.f90 dballef.mod dumpmsg_dballe_LDADD = libdballef.la -lpopt dumpmsg_dballe_FCFLAGS = -g mkmsg_SOURCES = mkmsg.f90 dballef.mod mkmsg_LDADD = libdballef.la -lpopt mkmsg_FCFLAGS = -g mkmsg_sca_SOURCES = mkmsg-sca.f90 dballef.mod mkmsg_sca_LDADD = libdballef.la -lpopt mkmsg_sca_FCFLAGS = -g genattr_SOURCES = genattr.f90 dballef.mod genattr_LDADD = libdballef.la -lpopt genattr_FCFLAGS = -g noinst_PROGRAMS += dump_dballe check_messages_stdinstdout dump_dballe_SOURCES = dump_dballe.f90 dballef.mod dump_dballe_LDADD = libdballef.la -lpopt dump_dballe_FCFLAGS = -g EXTRA_DIST = fortran.dox check-utils.h CLEANFILES = *.mod check-local: for test in $(check_PROGRAMS); do \ $(TESTS_ENVIRONMENT) $$test ; \ done endif dballe-7.21/fortran/mkmsg-sca.f900000644000175000017500000000402513022043102013450 00000000000000 program mkmsg use dballef ! **************************** ! * Create a test message file ! **************************** integer handle, nstaz, ndata, nattr integer i, i1, i2, tmp integer id,height,codrete character fname*256,encoding*10,cname*20,rete*20,value*255 character btable*10,starbtable*10 real*8 dlat,dlon external errorrep ierr = idba_error_set_callback(0, C_FUNLOC(errorrep), 2, i) ! Open a session call getarg(1,fname) call getarg(2,encoding) ierr = idba_messaggi(handle, fname, "w", encoding) ! Write a measured value ierr = idba_unsetall(handle) ierr = idba_setlevel(handle, 1, 2, 3, 4) ierr = idba_settimerange(handle, 5, 6, 7) ierr = idba_seti(handle,"B12101",300) ierr = idba_prendilo(handle) ! Write a station value ierr = idba_unsetall(handle) ierr = idba_setcontextana(handle) ierr = idba_setc(handle,"rep_memo","temp") ierr = idba_seti(handle,"block",1) ierr = idba_setc(handle,'query',"message generic") ierr = idba_prendilo(handle) ! Done ierr = idba_fatto(handle) call exit (0) end ! ******************** ! * Utility functions ! ******************** ! Compute the length of a string integer function istrlen(string) character string*(*) istrlen = len(string) do while ((string(istrlen:istrlen).eq." " .or. & string(istrlen:istrlen).eq."").and. & istrlen.gt.0) istrlen = istrlen - 1 enddo return end subroutine errorrep(val) BIND(C) use dballef integer val character buf*1000 ier = idba_error_code() if (ier.ne.0) then print *,ier," error in ",val call idba_error_message(buf) print *,buf(:istrlen(buf)) call idba_error_context(buf) print *,buf(:istrlen(buf)) call idba_error_details(buf) print *,buf(:istrlen(buf)) call exit (1) end if return end dballe-7.21/fortran/common.cc0000644000175000017500000000114213022043102013042 00000000000000#include "common.h" #include namespace dballe { namespace fortran { void cstring_to_fortran(const char* str, char* buf, unsigned buf_len) { // Copy the result values size_t len; if (buf_len == 0) len = 0; else if (str) { len = strlen(str); if (len > buf_len) len = buf_len; memcpy(buf, str, buf_len); } else { // The missing string value has been defined as a // null byte plus blank padding. buf[0] = 0; len = 1; } if (len < buf_len) memset(buf + len, ' ', buf_len - len); } } } dballe-7.21/fortran/dump_dballe.f900000644000175000017500000000621413022043102014040 00000000000000 program dump_dballe use dballef ! ***************************************** ! * Dump the contents of a dballe database ! ***************************************** integer dbahandle, handle, handle_ana, nstaz, ndata, nattr integer i, i1, i2, tmp, ierr integer id,height character cname*20,rete*20,value*255,avalue*255 character btable*10,starbtable*10 real dlat,dlon external errorrep ierr = idba_error_set_callback(0, C_FUNLOC(errorrep), 2, i) ! Database login ierr = idba_presentati(dbahandle, "test") ! Open a session ierr = idba_preparati(dbahandle, handle_ana, "read", "read", "read") ierr = idba_preparati(dbahandle, handle, "read", "read", "read") ! Query all the stations ierr = idba_quantesono(handle_ana, nstaz) write (*,*) nstaz," stazioni:" do i=1, nstaz ierr = idba_elencamele(handle_ana) ierr = idba_enqc(handle_ana, "name", cname) ierr = idba_enqi(handle_ana, "ana_id", id) ierr = idba_enqr(handle_ana, "lat", dlat) ierr = idba_enqr(handle_ana, "lon", dlon) ierr = idba_enqi(handle_ana, "height", height) ierr = idba_enqc(handle_ana,"rep_memo",rete) write (*,*) "Staz ",id," (",dlat,",",dlon,") '", & cname(:istrlen(cname)),"' h:",height, & " ",rep_memo ierr = idba_seti(handle,"ana_id",id) ierr = idba_voglioquesto(handle,ndata) write (*,*) " ",ndata," dati:" do i1=1, ndata ierr = idba_dammelo(handle,btable) ierr = idba_enqc(handle,btable,value) write (*,*) ' var ',btable(:istrlen(btable)),": ", & value(:istrlen(value)) ierr = idba_enqi(handle,"!context_id",tmp) write (*,*) " CTX: ",tmp ierr = idba_voglioancora (handle,nattr) write (*,*) " ",nattr," attributi:" do i2=1, nattr ierr = idba_ancora(handle,starbtable) ierr = idba_enqc(handle,starbtable,avalue) write(*,*) " attr ",starbtable(:istrlen(starbtable)), & ": ",avalue(:istrlen(avalue)) enddo enddo enddo ierr = idba_fatto(handle_ana) ierr = idba_fatto(handle) ierr = idba_arrivederci(dbahandle) call exit (0) end ! ******************** ! * Utility functions ! ******************** ! Compute the length of a string integer function istrlen(string) character string*(*) istrlen = len(string) do while ((string(istrlen:istrlen).eq." " .or. & string(istrlen:istrlen).eq."").and. & istrlen.gt.0) istrlen = istrlen - 1 enddo return end subroutine errorrep(val) BIND(C) use dballef integer val character buf*1000 ier = idba_error_code() if (ier.ne.0) then print *,ier," error in ",val call idba_error_message(buf) print *,buf(:istrlen(buf)) call idba_error_context(buf) print *,buf(:istrlen(buf)) call idba_error_details(buf) print *,buf(:istrlen(buf)) call exit (1) end if return end dballe-7.21/fortran/error.h0000644000175000017500000000057313022043102012554 00000000000000#ifndef FDBA_ERROR_H #define FDBA_ERROR_H #include namespace dballe { struct DB; namespace fortran { struct API; /// Initialise error handlers void error_init(); /// Digest an exception turning it into a fortran API result code int error(wreport::error& e); /// Return a success code, updating the error information accordingly int success(); } } #endif dballe-7.21/fortran/trace.cc0000644000175000017500000001563713022043102012666 00000000000000/* * Copyright (C) 2013--2014 ARPA-SIM * * 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. * * 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 St, Fifth Floor, Boston, MA 02110-1301 USA * * Author: Enrico Zini */ #include "trace.h" #include #include #include using namespace std; namespace { std::string c_escape(const std::string& str) { string res; for (string::const_iterator i = str.begin(); i != str.end(); ++i) if (*i == '\n') res += "\\n"; else if (*i == '\t') res += "\\t"; else if (*i == 0 || iscntrl(*i)) { char buf[5]; snprintf(buf, 5, "\\x%02x", (unsigned int)*i); res += buf; } else if (*i == '"' || *i == '\\') { res += "\\"; res += *i; } else res += *i; return res; } } namespace dballe { namespace fortran { bool do_trace = false; FILE* trace_file = 0; void trace_init() { // Init API tracing if requested const char* tracefile = getenv("DBALLE_TRACE_FORTRAN"); if (!tracefile) tracefile = getenv("DBA_FORTRAN_TRACE"); if (tracefile) { trace_file = fopen(tracefile, "at"); setvbuf(trace_file, nullptr, _IOLBF, 0); do_trace = true; fprintf(trace_file, "// ** Execution begins **\n"); } else { trace_file = 0; do_trace = false; } } void log_presentati_url(int handle, const char* chosen_dsn) { string arg1 = c_escape(chosen_dsn); fprintf(trace_file, "auto_ptr db%d(DB::connect_from_url(\"%s\"));\n", handle, arg1.c_str()); } void log_presentati_dsn(int handle, const char* dsn, const char* user, const char* pwd) { string arg1 = c_escape(dsn); string arg2 = c_escape(user); fprintf(trace_file, "auto_ptr db%d(DB::connect(\"%s\", \"%s\", \"xxx\"));\n", handle, arg1.c_str(), arg2.c_str()); } void log_arrivederci(int handle) { fprintf(trace_file, "// db%d not used anymore\n", handle); } void log_error(wreport::error& e) { fprintf(trace_file, "// error: %s\n", e.what()); } void log_result(int res) { fprintf(trace_file, "wassert(actual(ires) == %d);\n", res); } void log_result(const char* res) { if (res) { string arg = c_escape(res); fprintf(trace_file, "wassert(actual(sres) == \"%s\");\n", arg.c_str()); } else fprintf(trace_file, "wassert(actual(sres) == null);\n"); } void SessionTracer::log_preparati(int dbahandle, int handle, const char* anaflag, const char* dataflag, const char* attrflag) { snprintf(trace_tag, 10, "dbapi%d", handle); fprintf(trace_file, "DbAPI %s(*db%d, \"%s\", \"%s\", \"%s\");\n", trace_tag, dbahandle, anaflag, dataflag, attrflag); } void SessionTracer::log_messaggi(int handle, const char* filename, const char* mode, const char* type) { snprintf(trace_tag, 10, "msgapi%d", handle); string arg1(c_escape(filename)); fprintf(trace_file, "MsgAPI %s(\"%s\", \"%s\", %s);\n", trace_tag, arg1.c_str(), mode, type); } void SessionTracer::log_func(const char* call) { fprintf(trace_file, "%s.%s();\n", trace_tag, call); } void SessionTracer::log_quantesono() { fprintf(trace_file, "ires = %s.quantesono();\n", trace_tag); } void SessionTracer::log_voglioquesto() { fprintf(trace_file, "ires = %s.voglioquesto();\n", trace_tag); } void SessionTracer::log_voglioancora() { fprintf(trace_file, "ires = %s.voglioancora();\n", trace_tag); } void SessionTracer::log_dammelo() { fprintf(trace_file, "sres = %s.dammelo();\n", trace_tag); } void SessionTracer::log_ancora() { fprintf(trace_file, "sres = %s.ancora();\n", trace_tag); } void SessionTracer::log_set(const char* parm, int val) { string arg = c_escape(parm); fprintf(trace_file, "%s.seti(\"%s\", %d);\n", trace_tag, arg.c_str(), val); } void SessionTracer::log_set(const char* parm, double val) { string arg = c_escape(parm); fprintf(trace_file, "%s.setd(\"%s\", %f);\n", trace_tag, arg.c_str(), val); } void SessionTracer::log_set(const char* parm, const char* val) { string arg1 = c_escape(parm); string arg2 = c_escape(val); fprintf(trace_file, "%s.setc(\"%s\", \"%s\");\n", trace_tag, arg1.c_str(), arg2.c_str()); } void SessionTracer::log_setlevel(int ltype1, int l1, int ltype2, int l2) { fprintf(trace_file, "%s.setlevel(%d, %d, %d, %d);\n", trace_tag, ltype1, l1, ltype2, l2); } void SessionTracer::log_settimerange(int pind, int p1, int p2) { fprintf(trace_file, "%s.settimerange(%d, %d, %d);\n", trace_tag, pind, p1, p2); } void SessionTracer::log_setdate(int y, int m, int d, int ho, int mi, int se, const char* what) { fprintf(trace_file, "%s.setdate%s(%d, %d, %d, %d, %d, %d);\n", trace_tag, what, y, m, d, ho, mi, se); } void SessionTracer::log_unset(const char* parm) { string arg = c_escape(parm); fprintf(trace_file, "%s.unset(\"%s\");\n", trace_tag, arg.c_str()); } void SessionTracer::log_scopa(const char* fname) { if (fname) { string arg = c_escape(fname); fprintf(trace_file, "%s.scopa(\"%s\");\n", trace_tag, arg.c_str()); } else fprintf(trace_file, "%s.scopa();\n", trace_tag); } void SessionTracer::log_fatto() { fprintf(trace_file, "// %s not used anymore\n", trace_tag); } void SessionTracer::log_messages_open_input(const char* fname, const char* mode, const char* format, bool simplified) { string arg1 = c_escape(fname); string arg2 = c_escape(mode); fprintf(trace_file, "%s.messages_open_input(\"%s\", \"%s\", %s, %s);\n", trace_tag, arg1.c_str(), arg2.c_str(), format, simplified ? "true" : "false"); } void SessionTracer::log_messages_open_output(const char* fname, const char* mode, const char* format) { string arg1 = c_escape(fname); string arg2 = c_escape(mode); fprintf(trace_file, "%s.messages_open_output(\"%s\", \"%s\", %s);\n", trace_tag, arg1.c_str(), arg2.c_str(), format); } void SessionTracer::log_messages_read_next() { fprintf(trace_file, "ires = %s.messages_read_next();\n", trace_tag); } void SessionTracer::log_messages_write_next(const char* template_name) { string arg = c_escape(template_name); fprintf(trace_file, "%s.messages_write_next(\"%s\");\n", trace_tag, arg.c_str()); } } } void dballe_fortran_debug_flush_trace_log() { if (dballe::fortran::trace_file) fflush(dballe::fortran::trace_file); } dballe-7.21/fortran/dumpmsg_dballe.f900000644000175000017500000000654313022043102014554 00000000000000! Copyright (C) 2011 ARP1-SIM ! ! 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. ! ! 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 St, Fifth Floor, Boston, MA 02110-1301 USA ! ! Author: Paolo Patruno program dump_dballe use dballef ! **************************************************** ! * Dump the contents of a weather messages in a file ! **************************************************** !implicit none integer :: handle, nstaz, ndata, nattr integer :: i, i1, i2, type1, l1, type2, l2 integer :: height, year, month, day, hour, minute, second character(len=255) :: fname,prettyvalue character(len=20) :: cname, rep_memo,value, avalue character(len=10) :: btable, starbtable doubleprecision ::dlat,dlon external errorrep call getarg(1,fname) ierr = idba_error_set_callback(0, C_FUNLOC(errorrep), 0, i) ! Open a session ierr = idba_messaggi(handle, fname, "r", "BUFR") ! Query all the stations do while (.true.) ierr = idba_quantesono(handle, nstaz) if (nstaz .eq. DBA_MVI) exit ierr = idba_elencamele(handle) ierr = idba_enq(handle, "name", cname) ierr = idba_enq(handle, "lat", dlat) ierr = idba_enq(handle, "lon", dlon) ierr = idba_enq(handle, "height", height) ierr = idba_enq(handle,"rep_memo",rep_memo) write (*,*) "Staz: ",trim(cname)," (",dlat,",",dlon,")"," h:",height," network: ",rep_memo !ierr = idba_set(handle,"varlist","B12101,B11002") ! only on DB is valid ierr = idba_voglioquesto(handle,ndata) !write (*,*) " ",ndata," dati:" ! only on DB is valid do i1=1, ndata ierr = idba_dammelo(handle,btable) if (btable /= "B12101" .and. btable /= "B11002") cycle ierr = idba_enqdate(handle, year, month, day, hour, minute, second) ierr = idba_enqlevel(handle, type1, l1, type2, l2) ierr = idba_enq(handle,btable,value) print*,"----" write (*,*) "date time: ",year, month, day, hour, minute ierr = idba_spiegal(handle,type1,l1,type2,l2,prettyvalue) write (*,*) trim(prettyvalue) ierr = idba_spiegab(handle,btable,value,prettyvalue) write (*,*) trim(prettyvalue) ierr = idba_voglioancora (handle,nattr) if (nattr > 0) then write (*,*) " ",nattr," attributi:" do i2=1, nattr ierr = idba_ancora(handle,starbtable) ierr = idba_enq(handle,starbtable,avalue) write(*,*) " attr ",trim(starbtable),": ",avalue enddo end if enddo enddo ierr = idba_fatto(handle) call exit (0) end program dump_dballe SUBROUTINE errorrep(val) BIND(C) use dballef integer :: val character(len=1000) :: buf ier = idba_error_code() if (ier.ne.0) then print *,ier," error in ",val call idba_error_message(buf) print *,trim(buf) call idba_error_context(buf) print *,trim(buf) call idba_error_details(buf) print *,trim(buf) call exit (1) end if return end subroutine errorrep dballe-7.21/fortran/test.f900000644000175000017500000000171113022043102012544 00000000000000 module test use dballef contains ! Continue execution only if there was no error subroutine ensure_no_error(message) character (len=*) :: message integer :: ier character (len=1000) :: buf ! print *,"siamo a ",message ier = idba_error_code() if (ier.ne.0) then print *,ier," in ",message call idba_error_message(buf) print *,trim(buf) call idba_error_context(buf) print *,trim(buf) call idba_error_details(buf) print *,trim(buf) call exit (1) end if return endsubroutine ensure_no_error ! Print an error if the given logical value is false subroutine ensure(message, value) character (len=*) :: message logical :: value if (.not.value) then print *,"Check failed in ",message call exit (1) end if return endsubroutine ensure endmodule test dballe-7.21/fortran/dballef.f900000644000175000017500000006421013022043102013161 00000000000000 ! ! Interface file for DB-ALLe ! ! Copyright (C) 2005,2006 ARPA-SIM ! ! 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. ! ! 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 St, Fifth Floor, Boston, MA 02110-1301 USA ! ! Author: Enrico Zini MODULE dballef USE,INTRINSIC :: iso_c_binding IMPLICIT NONE ! TODO: ! - check the missing value constants ! - decide whether the _orig interfaces should become private ! - restore the intent's in/out ! definition of missing values INTEGER, PARAMETER :: & dba_int_b = c_signed_char, & ! Byte integer dba_int_i = c_int ! Integer INTEGER, PARAMETER :: & dba_fp_s = c_float, & ! Single precision dba_fp_d = c_double ! Double precision REAL(kind=dba_fp_s), PARAMETER :: DBA_MVR = HUGE(1.0_dba_fp_s) REAL(kind=dba_fp_d), PARAMETER :: DBA_MVD = HUGE(1.0_dba_fp_d) INTEGER(kind=dba_int_b), PARAMETER :: DBA_MVB = HUGE(0_dba_int_b) INTEGER(kind=dba_int_i), PARAMETER :: DBA_MVI = HUGE(0_dba_int_i) CHARACTER(kind=c_char,len=1), PARAMETER :: DBA_MVC = CHAR(0) ! interface to generic dba functions INTERFACE FUNCTION idba_presentati_orig(dbahandle, url) BIND(C,name='idba_presentati') IMPORT INTEGER(kind=c_int) :: dbahandle CHARACTER(kind=c_char) :: url(*) INTEGER(kind=c_int) :: idba_presentati_orig END FUNCTION idba_presentati_orig END INTERFACE INTERFACE FUNCTION idba_arrivederci(dbahandle) BIND(C,name='idba_arrivederci') IMPORT INTEGER(kind=c_int) :: dbahandle END FUNCTION idba_arrivederci END INTERFACE INTERFACE FUNCTION idba_preparati_orig(dbahandle, handle, anaflag, dataflag, attrflag) BIND(C,name='idba_preparati') IMPORT INTEGER(kind=c_int),VALUE :: dbahandle INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char) :: anaflag(*) CHARACTER(kind=c_char) :: dataflag(*) CHARACTER(kind=c_char) :: attrflag(*) INTEGER(kind=c_int) :: idba_preparati_orig END FUNCTION idba_preparati_orig END INTERFACE INTERFACE FUNCTION idba_messaggi_orig(handle, filename, mode, typ) BIND(C,name='idba_messaggi') IMPORT INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char) :: filename(*) CHARACTER(kind=c_char) :: mode(*) CHARACTER(kind=c_char) :: typ(*) INTEGER(kind=c_int) :: idba_messaggi_orig END FUNCTION idba_messaggi_orig END INTERFACE INTERFACE FUNCTION idba_fatto(dbahandle) BIND(C,name='idba_fatto') IMPORT INTEGER(kind=c_int) :: dbahandle INTEGER(kind=c_int) :: idba_fatto END FUNCTION idba_fatto END INTERFACE INTERFACE FUNCTION idba_remove_all(handle) BIND(C,name='idba_remove_all') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: idba_remove_all END FUNCTION idba_remove_all END INTERFACE INTERFACE FUNCTION idba_seti_orig(handle, param, val) BIND(C,name='idba_seti') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) INTEGER(kind=c_int) :: val INTEGER(kind=c_int) :: idba_seti_orig END FUNCTION idba_seti_orig END INTERFACE INTERFACE FUNCTION idba_setb_orig(handle, param, val) BIND(C,name='idba_setb') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) INTEGER(kind=c_signed_char) :: val INTEGER(kind=c_int) :: idba_setb_orig END FUNCTION idba_setb_orig END INTERFACE INTERFACE FUNCTION idba_setr_orig(handle, param, val) BIND(C,name='idba_setr') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) REAL(kind=c_float) :: val INTEGER(kind=c_int) :: idba_setr_orig END FUNCTION idba_setr_orig END INTERFACE INTERFACE FUNCTION idba_setd_orig(handle, param, val) BIND(C,name='idba_setd') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) REAL(kind=c_double) :: val INTEGER(kind=c_int) :: idba_setd_orig END FUNCTION idba_setd_orig END INTERFACE INTERFACE FUNCTION idba_setc_orig(handle, param, val) BIND(C,name='idba_setc') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) CHARACTER(kind=c_char) :: val(*) INTEGER(kind=c_int) :: idba_setc_orig END FUNCTION idba_setc_orig END INTERFACE INTERFACE idba_set MODULE PROCEDURE idba_seti, idba_setb, idba_setr, idba_setd, idba_setc END INTERFACE idba_set INTERFACE FUNCTION idba_enqi_orig(handle, param, val) BIND(C,name='idba_enqi') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) INTEGER(kind=c_int) :: val INTEGER(kind=c_int) :: idba_enqi_orig END FUNCTION idba_enqi_orig END INTERFACE INTERFACE FUNCTION idba_enqb_orig(handle, param, val) BIND(C,name='idba_enqb') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) INTEGER(kind=c_signed_char) :: val INTEGER(kind=c_int) :: idba_enqb_orig END FUNCTION idba_enqb_orig END INTERFACE INTERFACE FUNCTION idba_enqr_orig(handle, param, val) BIND(C,name='idba_enqr') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) REAL(kind=c_float) :: val INTEGER(kind=c_int) :: idba_enqr_orig END FUNCTION idba_enqr_orig END INTERFACE INTERFACE FUNCTION idba_enqd_orig(handle, param, val) BIND(C,name='idba_enqd') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) REAL(kind=c_double) :: val INTEGER(kind=c_int) :: idba_enqd_orig END FUNCTION idba_enqd_orig END INTERFACE INTERFACE FUNCTION idba_enqc_orig(handle, param, val, val_len) BIND(C,name='idba_enqc') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) CHARACTER(kind=c_char) :: val(*) INTEGER(kind=c_int),VALUE :: val_len INTEGER(kind=c_int) :: idba_enqc_orig END FUNCTION idba_enqc_orig END INTERFACE INTERFACE idba_enq MODULE PROCEDURE idba_enqi, idba_enqb, idba_enqr, idba_enqd, idba_enqc END INTERFACE idba_enq INTERFACE FUNCTION idba_unset_orig(handle, param) BIND(C,name='idba_unset') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) INTEGER(kind=c_int) :: idba_unset_orig END FUNCTION idba_unset_orig END INTERFACE INTERFACE FUNCTION idba_unsetb(handle) BIND(C,name='idba_unsetb') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: idba_unsetb END FUNCTION idba_unsetb END INTERFACE INTERFACE FUNCTION idba_unsetall(handle) BIND(C,name='idba_unsetall') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: idba_unsetall END FUNCTION idba_unsetall END INTERFACE INTERFACE FUNCTION idba_setcontextana(handle) BIND(C,name='idba_setcontextana') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: idba_setcontextana END FUNCTION idba_setcontextana END INTERFACE INTERFACE FUNCTION idba_setlevel(handle, ltype1, l1, ltype2, l2) BIND(C,name='idba_setlevel') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),VALUE :: ltype1 INTEGER(kind=c_int),VALUE :: l1 INTEGER(kind=c_int),VALUE :: ltype2 INTEGER(kind=c_int),VALUE :: l2 INTEGER(kind=c_int) :: idba_setlevel END FUNCTION idba_setlevel END INTERFACE INTERFACE FUNCTION idba_settimerange(handle, ptype, p1, p2) BIND(C,name='idba_settimerange') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),VALUE :: ptype INTEGER(kind=c_int),VALUE :: p1 INTEGER(kind=c_int),VALUE :: p2 INTEGER(kind=c_int) :: idba_settimerange END FUNCTION idba_settimerange END INTERFACE INTERFACE FUNCTION idba_setdate(handle, year, month, day, hour, minute, second) BIND(C,name='idba_setdate') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),VALUE :: year INTEGER(kind=c_int),VALUE :: month INTEGER(kind=c_int),VALUE :: day INTEGER(kind=c_int),VALUE :: hour INTEGER(kind=c_int),VALUE :: minute INTEGER(kind=c_int),VALUE :: second INTEGER(kind=c_int) :: idba_setdate END FUNCTION idba_setdate END INTERFACE INTERFACE FUNCTION idba_setdatemin(handle, year, month, day, hour, minute, second) BIND(C,name='idba_setdatemin') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),VALUE :: year INTEGER(kind=c_int),VALUE :: month INTEGER(kind=c_int),VALUE :: day INTEGER(kind=c_int),VALUE :: hour INTEGER(kind=c_int),VALUE :: minute INTEGER(kind=c_int),VALUE :: second INTEGER(kind=c_int) :: idba_setdatemin END FUNCTION idba_setdatemin END INTERFACE INTERFACE FUNCTION idba_setdatemax(handle, year, month, day, hour, minute, second) BIND(C,name='idba_setdatemax') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),VALUE :: year INTEGER(kind=c_int),VALUE :: month INTEGER(kind=c_int),VALUE :: day INTEGER(kind=c_int),VALUE :: hour INTEGER(kind=c_int),VALUE :: minute INTEGER(kind=c_int),VALUE :: second INTEGER(kind=c_int) :: idba_setdatemax END FUNCTION idba_setdatemax END INTERFACE INTERFACE FUNCTION idba_enqlevel(handle, ltype1, l1, ltype2, l2) BIND(C,name='idba_enqlevel') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: ltype1 INTEGER(kind=c_int) :: l1 INTEGER(kind=c_int) :: ltype2 INTEGER(kind=c_int) :: l2 INTEGER(kind=c_int) :: idba_enqlevel END FUNCTION idba_enqlevel END INTERFACE INTERFACE FUNCTION idba_enqtimerange(handle, ptype, p1, p2) BIND(C,name='idba_enqtimerange') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: ptype INTEGER(kind=c_int) :: p1 INTEGER(kind=c_int) :: p2 INTEGER(kind=c_int) :: idba_enqtimerange END FUNCTION idba_enqtimerange END INTERFACE INTERFACE FUNCTION idba_enqdate(handle, year, month, day, hour, minute, second) BIND(C,name='idba_enqdate') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: year INTEGER(kind=c_int) :: month INTEGER(kind=c_int) :: day INTEGER(kind=c_int) :: hour INTEGER(kind=c_int) :: minute INTEGER(kind=c_int) :: second INTEGER(kind=c_int) :: idba_enqdate END FUNCTION idba_enqdate END INTERFACE ! interface to action functions INTERFACE FUNCTION idba_scopa_orig(handle, repinfofile) BIND(C,name='idba_scopa') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: repinfofile(*) INTEGER(kind=c_int) :: idba_scopa_orig END FUNCTION idba_scopa_orig END INTERFACE INTERFACE FUNCTION idba_quantesono(handle, count) BIND(C,name='idba_quantesono') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),INTENT(out) :: count INTEGER(kind=c_int) :: idba_quantesono END FUNCTION idba_quantesono END INTERFACE INTERFACE FUNCTION idba_elencamele(handle) BIND(C,name='idba_elencamele') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: idba_elencamele END FUNCTION idba_elencamele END INTERFACE INTERFACE FUNCTION idba_voglioquesto(handle, count) BIND(C,name='idba_voglioquesto') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),INTENT(out) :: count INTEGER(kind=c_int) :: idba_voglioquesto END FUNCTION idba_voglioquesto END INTERFACE INTERFACE FUNCTION idba_dammelo_orig(handle, param, param_len) BIND(C,name='idba_dammelo') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) INTEGER(kind=c_int),VALUE :: param_len INTEGER(kind=c_int) :: idba_dammelo_orig END FUNCTION idba_dammelo_orig END INTERFACE INTERFACE FUNCTION idba_prendilo(handle) BIND(C,name='idba_prendilo') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: idba_prendilo END FUNCTION idba_prendilo END INTERFACE INTERFACE FUNCTION idba_dimenticami(handle) BIND(C,name='idba_dimenticami') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: idba_dimenticami END FUNCTION idba_dimenticami END INTERFACE INTERFACE FUNCTION idba_voglioancora(handle, count) BIND(C,name='idba_voglioancora') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),INTENT(out) :: count INTEGER(kind=c_int) :: idba_voglioancora END FUNCTION idba_voglioancora END INTERFACE INTERFACE FUNCTION idba_ancora_orig(handle, param, param_len) BIND(C,name='idba_ancora') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: param(*) INTEGER(kind=c_int),VALUE :: param_len INTEGER(kind=c_int) :: idba_ancora_orig END FUNCTION idba_ancora_orig END INTERFACE INTERFACE FUNCTION idba_critica(handle) BIND(C,name='idba_critica') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: idba_critica END FUNCTION idba_critica END INTERFACE INTERFACE FUNCTION idba_scusa(handle) BIND(C,name='idba_scusa') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int) :: idba_scusa END FUNCTION idba_scusa END INTERFACE INTERFACE FUNCTION idba_messages_open_input_orig(handle, filename, mode, form, simplified) BIND(C,name='idba_messages_open_input') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: filename(*) CHARACTER(kind=c_char) :: mode(*) CHARACTER(kind=c_char) :: form(*) INTEGER(kind=c_int),VALUE :: simplified INTEGER(kind=c_int) :: idba_messages_open_input_orig END FUNCTION idba_messages_open_input_orig END INTERFACE INTERFACE FUNCTION idba_messages_open_output_orig(handle, filename, mode, form) BIND(C,name='idba_messages_open_output') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: filename(*) CHARACTER(kind=c_char) :: mode(*) CHARACTER(kind=c_char) :: form(*) INTEGER(kind=c_int) :: idba_messages_open_output_orig END FUNCTION idba_messages_open_output_orig END INTERFACE INTERFACE FUNCTION idba_messages_read_next_orig(handle, found) BIND(C,name='idba_messages_read_next') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),INTENT(out) :: found INTEGER(kind=c_int) :: idba_messages_read_next_orig END FUNCTION idba_messages_read_next_orig END INTERFACE INTERFACE FUNCTION idba_messages_write_next_orig(handle, template_name) BIND(C,name='idba_messages_write_next') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: template_name(*) INTEGER(kind=c_int) :: idba_messages_write_next_orig END FUNCTION idba_messages_write_next_orig END INTERFACE ! interface to pretty-printing functions INTERFACE FUNCTION idba_spiegal_orig(handle, ltype1, l1, ltype2, l2, res, res_len) BIND(C,name='idba_spiegal') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),VALUE :: ltype1 INTEGER(kind=c_int),VALUE :: l1 INTEGER(kind=c_int),VALUE :: ltype2 INTEGER(kind=c_int),VALUE :: l2 CHARACTER(kind=c_char) :: res(*) INTEGER(kind=c_int),VALUE :: res_len INTEGER(kind=c_int) :: idba_spiegal_orig END FUNCTION idba_spiegal_orig END INTERFACE INTERFACE FUNCTION idba_spiegat_orig(handle, ptype, p1, p2, res, res_len) BIND(C,name='idba_spiegat') IMPORT INTEGER(kind=c_int),VALUE :: handle INTEGER(kind=c_int),VALUE :: ptype INTEGER(kind=c_int),VALUE :: p1 INTEGER(kind=c_int),VALUE :: p2 CHARACTER(kind=c_char) :: res(*) INTEGER(kind=c_int),VALUE :: res_len INTEGER(kind=c_int) :: idba_spiegat_orig END FUNCTION idba_spiegat_orig END INTERFACE INTERFACE FUNCTION idba_spiegab_orig(handle, varcode, var, res, res_len) BIND(C,name='idba_spiegab') IMPORT INTEGER(kind=c_int),VALUE :: handle CHARACTER(kind=c_char) :: varcode(*) CHARACTER(kind=c_char) :: var(*) CHARACTER(kind=c_char) :: res(*) INTEGER(kind=c_int),VALUE :: res_len INTEGER(kind=c_int) :: idba_spiegab_orig END FUNCTION idba_spiegab_orig END INTERFACE INTERFACE FUNCTION idba_test_input_to_output(dbahandle) BIND(C,name='idba_test_input_to_output') IMPORT INTEGER(kind=c_int),VALUE :: dbahandle INTEGER(kind=c_int) :: idba_test_input_to_output END FUNCTION idba_test_input_to_output END INTERFACE ! interfaces to error handling functions INTERFACE FUNCTION idba_error_set_callback(code, func, dat, handle) BIND(C,name='idba_error_set_callback') IMPORT INTEGER(kind=c_int),VALUE :: code TYPE(c_funptr),VALUE :: func INTEGER(kind=c_int),VALUE :: dat INTEGER(kind=c_int) :: handle END FUNCTION idba_error_set_callback END INTERFACE INTERFACE FUNCTION idba_default_error_handler(debug) BIND(C,name='idba_default_error_handler') IMPORT INTEGER(kind=c_int) :: debug END FUNCTION idba_default_error_handler END INTERFACE INTERFACE FUNCTION idba_default_error_handle_tolerating_overflows(debug) BIND(C,name='idba_default_error_handle_tolerating_overflows') IMPORT INTEGER(kind=c_int) :: debug END FUNCTION idba_default_error_handle_tolerating_overflows END INTERFACE INTERFACE SUBROUTINE idba_error_message_orig(message, message_len) BIND(C,name='idba_error_message') IMPORT CHARACTER(kind=c_char) :: message(*) INTEGER(kind=c_int),VALUE :: message_len END SUBROUTINE idba_error_message_orig END INTERFACE INTERFACE SUBROUTINE idba_error_context_orig(message, message_len) BIND(C,name='idba_error_context') IMPORT CHARACTER(kind=c_char) :: message(*) INTEGER(kind=c_int),VALUE :: message_len END SUBROUTINE idba_error_context_orig END INTERFACE INTERFACE SUBROUTINE idba_error_details_orig(message, message_len) BIND(C,name='idba_error_details') IMPORT CHARACTER(kind=c_char) :: message(*) INTEGER(kind=c_int),VALUE :: message_len END SUBROUTINE idba_error_details_orig END INTERFACE INTERFACE FUNCTION idba_error_remove_callback(dbahandle) BIND(C,name='idba_error_remove_callback') IMPORT INTEGER(kind=c_int) :: dbahandle INTEGER(kind=c_int) :: idba_error_remove_callback END FUNCTION idba_error_remove_callback END INTERFACE INTERFACE FUNCTION idba_error_code() BIND(C,name='idba_error_code') IMPORT INTEGER(kind=c_int) :: idba_error_code END FUNCTION idba_error_code END INTERFACE PUBLIC PRIVATE fchartrimtostr CONTAINS ! helper function for trimming a fortran character and null terminating it ! used for intent(in) string arguments, intent(out) are converted by C code FUNCTION fchartrimtostr(fchar) RESULT(string) CHARACTER(len=*),INTENT(in) :: fchar !< Fortran \a CHARACTER variable to convert CHARACTER(kind=c_char,len=LEN_TRIM(fchar)+1) :: string string = TRIM(fchar)//CHAR(0) END FUNCTION fchartrimtostr ! fortran-style interface to generic dba functions FUNCTION idba_presentati(dbahandle, url) INTEGER(kind=c_int) :: dbahandle CHARACTER(kind=c_char,len=*) :: url INTEGER(kind=c_int) :: idba_presentati idba_presentati = idba_presentati_orig(dbahandle, fchartrimtostr(url)) END FUNCTION idba_presentati FUNCTION idba_preparati(dbahandle, handle, anaflag, dataflag, attrflag) INTEGER(kind=c_int) :: dbahandle INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: anaflag CHARACTER(kind=c_char,len=*) :: dataflag CHARACTER(kind=c_char,len=*) :: attrflag INTEGER(kind=c_int) :: idba_preparati idba_preparati = idba_preparati_orig(dbahandle, handle, fchartrimtostr(anaflag), & fchartrimtostr(dataflag), fchartrimtostr(attrflag)) END FUNCTION idba_preparati FUNCTION idba_messaggi(handle, filename, mode, typ) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: filename CHARACTER(kind=c_char,len=*) :: mode CHARACTER(kind=c_char,len=*) :: typ INTEGER(kind=c_int) :: idba_messaggi idba_messaggi = idba_messaggi_orig(handle, fchartrimtostr(filename), & fchartrimtostr(mode), fchartrimtostr(typ)) END FUNCTION idba_messaggi FUNCTION idba_seti(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param INTEGER(kind=c_int) :: val INTEGER(kind=c_int) :: idba_seti idba_seti = idba_seti_orig(handle, fchartrimtostr(param), val) END FUNCTION idba_seti FUNCTION idba_setb(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param INTEGER(kind=c_signed_char) :: val INTEGER(kind=c_int) :: idba_setb idba_setb = idba_setb_orig(handle, fchartrimtostr(param), val) END FUNCTION idba_setb FUNCTION idba_setr(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param REAL(kind=c_float) :: val INTEGER(kind=c_int) :: idba_setr idba_setr = idba_setr_orig(handle, fchartrimtostr(param), val) END FUNCTION idba_setr FUNCTION idba_setd(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param REAL(kind=c_double) :: val INTEGER(kind=c_int) :: idba_setd idba_setd = idba_setd_orig(handle, fchartrimtostr(param), val) END FUNCTION idba_setd FUNCTION idba_setc(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param CHARACTER(kind=c_char,len=*) :: val INTEGER(kind=c_int) :: idba_setc idba_setc = idba_setc_orig(handle, fchartrimtostr(param), fchartrimtostr(val)) END FUNCTION idba_setc FUNCTION idba_enqi(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param INTEGER(kind=c_int) :: val INTEGER(kind=c_int) :: idba_enqi idba_enqi = idba_enqi_orig(handle, fchartrimtostr(param), val) END FUNCTION idba_enqi FUNCTION idba_enqb(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param INTEGER(kind=c_signed_char) :: val INTEGER(kind=c_int) :: idba_enqb idba_enqb = idba_enqb_orig(handle, fchartrimtostr(param), val) END FUNCTION idba_enqb FUNCTION idba_enqr(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param REAL(kind=c_float) :: val INTEGER(kind=c_int) :: idba_enqr idba_enqr = idba_enqr_orig(handle, fchartrimtostr(param), val) END FUNCTION idba_enqr FUNCTION idba_enqd(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param REAL(kind=c_double) :: val INTEGER(kind=c_int) :: idba_enqd idba_enqd = idba_enqd_orig(handle, fchartrimtostr(param), val) END FUNCTION idba_enqd FUNCTION idba_enqc(handle, param, val) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param CHARACTER(kind=c_char,len=*) :: val INTEGER(kind=c_int) :: idba_enqc idba_enqc = idba_enqc_orig(handle, fchartrimtostr(param), val, LEN(val)) END FUNCTION idba_enqc FUNCTION idba_unset(handle, param) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param INTEGER(kind=c_int) :: idba_unset idba_unset = idba_unset_orig(handle, fchartrimtostr(param)) END FUNCTION idba_unset ! fortran-style interface to action functions FUNCTION idba_scopa(handle, repinfofile) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: repinfofile INTEGER(kind=c_int) :: idba_scopa idba_scopa = idba_scopa_orig(handle, fchartrimtostr(repinfofile)) END FUNCTION idba_scopa FUNCTION idba_dammelo(handle, param) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param INTEGER(kind=c_int) :: idba_dammelo idba_dammelo = idba_dammelo_orig(handle, param, LEN(param)) END FUNCTION idba_dammelo FUNCTION idba_ancora(handle, param) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: param INTEGER(kind=c_int) :: idba_ancora idba_ancora = idba_ancora_orig(handle, param, LEN(param)) END FUNCTION idba_ancora FUNCTION idba_messages_open_input(handle, filename, mode, form, simplified) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: filename CHARACTER(kind=c_char,len=*) :: mode CHARACTER(kind=c_char,len=*) :: form LOGICAL,INTENT(in) :: simplified INTEGER(kind=c_int) :: idba_messages_open_input INTEGER(kind=c_int) :: lsimplified lsimplified = 0 IF (simplified) lsimplified = 1 idba_messages_open_input = idba_messages_open_input_orig(handle, & fchartrimtostr(filename), fchartrimtostr(mode), fchartrimtostr(form), lsimplified) END FUNCTION idba_messages_open_input FUNCTION idba_messages_open_output(handle, filename, mode, form) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: filename CHARACTER(kind=c_char,len=*) :: mode CHARACTER(kind=c_char,len=*) :: form INTEGER(kind=c_int) :: idba_messages_open_output idba_messages_open_output = idba_messages_open_output_orig(handle, & fchartrimtostr(filename), fchartrimtostr(mode), fchartrimtostr(form)) END FUNCTION idba_messages_open_output FUNCTION idba_messages_read_next(handle, found) INTEGER(kind=c_int) :: handle LOGICAL,INTENT(out) :: found INTEGER(kind=c_int) :: idba_messages_read_next INTEGER :: lfound idba_messages_read_next = idba_messages_read_next_orig(handle, lfound) found = lfound /= 0 ! int to logical END FUNCTION idba_messages_read_next FUNCTION idba_messages_write_next(handle, template_name) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*) :: template_name INTEGER(kind=c_int) :: idba_messages_write_next idba_messages_write_next = idba_messages_write_next_orig(handle, & fchartrimtostr(template_name)) END FUNCTION idba_messages_write_next ! fortran-style interface to pretty-printing functions FUNCTION idba_spiegal(handle, ltype1, l1, ltype2, l2, res) INTEGER(kind=c_int) :: handle INTEGER(kind=c_int) :: ltype1 INTEGER(kind=c_int) :: l1 INTEGER(kind=c_int) :: ltype2 INTEGER(kind=c_int) :: l2 CHARACTER(kind=c_char,len=*),INTENT(out) :: res INTEGER(kind=c_int) :: idba_spiegal idba_spiegal = idba_spiegal_orig(handle, ltype1, l1, ltype2, l2, res, LEN(res)) END FUNCTION idba_spiegal FUNCTION idba_spiegat(handle, ptype, p1, p2, res) INTEGER(kind=c_int) :: handle INTEGER(kind=c_int) :: ptype INTEGER(kind=c_int) :: p1 INTEGER(kind=c_int) :: p2 CHARACTER(kind=c_char,len=*),INTENT(out) :: res INTEGER(kind=c_int) :: idba_spiegat idba_spiegat = idba_spiegat_orig(handle, ptype, p1, p2, res, LEN(res)) END FUNCTION idba_spiegat FUNCTION idba_spiegab(handle, varcode, var, res) INTEGER(kind=c_int) :: handle CHARACTER(kind=c_char,len=*),INTENT(in) :: varcode CHARACTER(kind=c_char,len=*),INTENT(in) :: var CHARACTER(kind=c_char,len=*),INTENT(out) :: res INTEGER(kind=c_int) :: idba_spiegab idba_spiegab = idba_spiegab_orig(handle, fchartrimtostr(varcode), & fchartrimtostr(var), res, LEN(res)) END FUNCTION idba_spiegab ! fortran-style interface to error handling functions SUBROUTINE idba_error_message(message) CHARACTER(kind=c_char,len=*),INTENT(out) :: message CALL idba_error_message_orig(message, LEN(message)) END SUBROUTINE idba_error_message SUBROUTINE idba_error_context(message) CHARACTER(kind=c_char,len=*),INTENT(out) :: message CALL idba_error_context_orig(message, LEN(message)) END SUBROUTINE idba_error_context SUBROUTINE idba_error_details(message) CHARACTER(kind=c_char,len=*),INTENT(out) :: message CALL idba_error_details_orig(message, LEN(message)) END SUBROUTINE idba_error_details END MODULE dballef dballe-7.21/fortran/check_multiplehandler.f900000644000175000017500000001575513022043102016130 00000000000000 program check_fdballe ! ***************************************** ! * Test suite for DBALLE Fortran bindings ! ***************************************** use dbtest use dballef integer :: dbahandler, dbahandlew, handler, handlew,i,i1,i2,i3,i4,i5,i6,ival,saved_id real :: rval double precision :: dval character (len=10) :: param character (len=255) :: cval external :: testcb ! call fdba_error_set_callback(0, testcb, 2, i) ! Database login call dbinit(dbahandler) ! if I use different handles it do not work for sqlite !!$! Database login !!$ call dbinit(dbahandlew) dbahandlew=dbahandler ! Open a session ierr = idba_preparati(dbahandler, handler, "read", "read", "read") call ensure_no_error("preparati read") ! Open a session ierr = idba_preparati(dbahandlew, handlew, "write", "write", "write") call ensure_no_error("preparati write") ! Clear the database ierr = idba_scopa(handlew, "") call ensure_no_error("scopa") ! Insert some data ierr = idba_setd(handlew, "lat", 30D00) call ensure_no_error("setd 0") ierr = idba_setr(handlew, "lon", 10.0) call ensure_no_error("setr 1") ierr = idba_setc(handlew, "mobile", "0") call ensure_no_error("setc 2") ierr = idba_seti(handlew, "year", 2006) call ensure_no_error("seti 3") ierr = idba_seti(handlew, "month", 1) call ensure_no_error("seti 4") ierr = idba_seti(handlew, "day", 2) call ensure_no_error("seti 5") ierr = idba_seti(handlew, "hour", 3) call ensure_no_error("seti 6") ierr = idba_seti(handlew, "min", 4) call ensure_no_error("seti 7") ierr = idba_setc(handlew, "leveltype1", "1") call ensure_no_error("setc 8") ierr = idba_seti(handlew, "l1", 1) call ensure_no_error("seti 9") ierr = idba_setc(handlew, "leveltype2", "1") call ensure_no_error("seti 10") ierr = idba_seti(handlew, "l2", 1) call ensure_no_error("seti 11") ierr = idba_seti(handlew, "pindicator", 20) call ensure_no_error("seti 12") ierr = idba_seti(handlew, "p1", 1) call ensure_no_error("seti 13") ierr = idba_seti(handlew, "p2", 1) call ensure_no_error("seti 14") ierr = idba_setc(handlew, "rep_memo", "synop") call ensure_no_error("seti 15") ierr = idba_setc(handlew, "B01011", "DB-All.e!") call ensure_no_error("setc 16") ! Perform the insert ierr = idba_prendilo(handlew) call ensure_no_error("first prendilo") ! Query back the data ! ierr = idba_ricominciamo(handle) ierr = idba_unsetall(handler) call ensure_no_error("ricominciamo") ierr = idba_setr(handler, "latmin", 20.0) call ensure_no_error("query setf 0") ierr = idba_setr(handler, "latmax", 50.0) call ensure_no_error("query setf 1") ierr = idba_setr(handler, "lonmin", 5.0) call ensure_no_error("query setf 2") ierr = idba_setr(handler, "lonmax", 20.0) call ensure_no_error("query setf 3") ierr = idba_voglioquesto(handler, i) call ensure_no_error("voglioquesto") call ensure("voglioquesto result", i.eq.1) ! Read the results of the query ! TODO: make a for loop instead do while (i.gt.0) ierr = idba_dammelo(handler, param) call ensure_no_error("dammelo") ierr = idba_enqc(handler, param, cval) call ensure_no_error("dammelo enqc 0") ierr = idba_enqi(handler, "year", ival) call ensure_no_error("dammelo enqi 1") ierr = idba_enqr(handler, "lat", rval) call ensure_no_error("dammelo enqr 2") ierr = idba_enqd(handler, "lon", dval) call ensure_no_error("dammelo enqd 3") ierr = idba_enqc(handler, "lon", cval) call ensure_no_error("dammelo enqc 4") ierr = idba_enqdate(handler, i1, i2, i3, i4, i5, i6) call ensure_no_error("dammelo enqdate") call ensure("enqdate i1", i1.eq.2006) call ensure("enqdate i2", i2.eq.1) call ensure("enqdate i3", i3.eq.2) call ensure("enqdate i4", i4.eq.3) call ensure("enqdate i5", i5.eq.4) call ensure("enqdate i6", i6.eq.0) ierr = idba_enqlevel(handler, i1, i2, i3, i4) call ensure_no_error("dammelo enqlevel") call ensure("enqlevel i1", i1.eq.1) call ensure("enqlevel i2", i2.eq.1) call ensure("enqlevel i3", i3.eq.1) call ensure("enqlevel i4", i4.eq.1) ierr = idba_enqtimerange(handler, i1, i2, i3) call ensure_no_error("dammelo enqtimerange") call ensure("enqdate i1", i1.eq.20) call ensure("enqdate i2", i2.eq.1) call ensure("enqdate i3", i3.eq.1) i = i - 1 ! Insert some data ierr = idba_setd(handlew, "lat", 30D00) call ensure_no_error("setd 0") ierr = idba_setr(handlew, "lon", 10.0) call ensure_no_error("setr 1") ierr = idba_setc(handlew, "mobile", "0") call ensure_no_error("setc 2") ierr = idba_seti(handlew, "year", 2007) call ensure_no_error("seti 3") ierr = idba_seti(handlew, "month", 1) call ensure_no_error("seti 4") ierr = idba_seti(handlew, "day", 2) call ensure_no_error("seti 5") ierr = idba_seti(handlew, "hour", 3) call ensure_no_error("seti 6") ierr = idba_seti(handlew, "min", 4) call ensure_no_error("seti 7") ierr = idba_setc(handlew, "leveltype1", "1") call ensure_no_error("setc 8") ierr = idba_seti(handlew, "l1", 1) call ensure_no_error("seti 9") ierr = idba_setc(handlew, "leveltype2", "1") call ensure_no_error("seti 10") ierr = idba_seti(handlew, "l2", 1) call ensure_no_error("seti 11") ierr = idba_seti(handlew, "pindicator", 20) call ensure_no_error("seti 12") ierr = idba_seti(handlew, "p1", 1) call ensure_no_error("seti 13") ierr = idba_seti(handlew, "p2", 1) call ensure_no_error("seti 14") ierr = idba_setc(handlew, "rep_memo", "synop") call ensure_no_error("seti 15") ierr = idba_setc(handlew, "B01011", "DB-All.e!") call ensure_no_error("setc 16") ! Perform the insert ierr = idba_prendilo(handlew) call ensure_no_error("first prendilo") enddo ierr = idba_fatto(handlew) call ensure_no_error("fatto") ierr = idba_fatto(handler) call ensure_no_error("fatto") ! use only in multiple dbhandlers case !!$ ierr = idba_arrivederci(dbahandlew) !!$ call ensure_no_error("arrivederci w") ierr = idba_arrivederci(dbahandler) call ensure_no_error("arrivederci r") ! If we made it so far, exit with no error print*,"check_fdballe: all tests succeed." call exit (0) end program include "check-utils.h" dballe-7.21/fortran/check_range.f900000644000175000017500000000271313022043102014021 00000000000000program check_range ! ***************************************** ! * Test suite for DBALLE Fortran bindings ! ***************************************** use dbtest use dballef integer :: handle,idbhandle,handle_err, errcode real :: rval !data var/ "B22070", "B22074", "B22001", "B22071", "B22042"/ integer debug data debug/1/ !call idba_error_set_callback(0,idba_default_error_handler,debug,handle_err) ! Database login call dbinit(idbhandle) ! Open a session ierr = idba_preparati(idbhandle,handle,"write","write","write") call ensure_no_error("preparati") ! Check that NaN values are trapped rval = 0. rval = log(rval) / log(rval) ierr = idba_set(handle, "B12103", log(rval)) errcode = idba_error_code() call ensure("set to NaN", errcode == 13) ! Check that negative reals can be read ierr = idba_set(handle, "lon", -12.3456) call ensure_no_error("set lon negative") ierr = idba_test_input_to_output(handle) call ensure_no_error("input to output") ierr = idba_enqr(handle, "lon", rval) call ensure_no_error("enq lon negative") call ensure("read negative real", rval == -12.3456) ierr = idba_fatto(handle) call ensure_no_error("fatto") ierr = idba_arrivederci(idbhandle) call ensure_no_error("arrivederci") call exit (0) end program check_range include "check-utils.h" dballe-7.21/fortran/check_missing_msg.f900000644000175000017500000001071013022043102015240 00000000000000 program check_missing ! ***************************************** ! * Test suite for DBALLE Fortran bindings ! ***************************************** use test use dballef integer handle, ival, ndata, n, i integer (kind=dba_int_b):: bval real rval real*8 dval character cval*255, btable*8 character(len=1024) :: fname external testcb ! call fdba_error_set_callback(0, testcb, 2, i) call getenv('DBA_TESTDATA', fname) fname = trim(fname) // "/bufr/temp-bad5.bufr" ! Open a session ierr = idba_messaggi(handle, fname, "r", "BUFR") call ensure_no_error("messaggi") ! Try reading 'missing' values ierr = idba_enqb(handle, "latmin", bval) call ensure_no_error("enq key byte") call ensure("enq empty key byte", bval.eq.DBA_MVB) ierr = idba_enqc(handle, "latmin", cval) call ensure_no_error("enq key char") call ensure("enq empty key char", cval.eq.DBA_MVC) ierr = idba_enqi(handle, "latmin", ival) call ensure_no_error("enq key int") call ensure("enq empty key int", ival.eq.DBA_MVI) ierr = idba_enqr(handle, "latmin", rval) call ensure_no_error("enq key real") call ensure("enq empty key real", rval.eq.DBA_MVR) ierr = idba_enqd(handle, "latmin", dval) call ensure_no_error("enq key double") call ensure("enq empty key double", dval.eq.DBA_MVD) ierr = idba_enq(handle, "latmin", dval) call ensure_no_error("enq key auto double") call ensure("enq empty key auto double", dval.eq.DBA_MVD) ierr = idba_enqb(handle, "B05002", bval) call ensure_no_error("enq var byte") call ensure("enq empty var byte", bval.eq.DBA_MVB) ierr = idba_enqc(handle, "B05002", cval) call ensure_no_error("enq var char") call ensure("enq empty var char", cval.eq.DBA_MVC) ierr = idba_enqi(handle, "B05002", ival) call ensure_no_error("enq var int") call ensure("enq empty var int", ival.eq.DBA_MVI) ierr = idba_enqr(handle, "B05002", rval) call ensure_no_error("enq var real") call ensure("enq empty var real", rval.eq.DBA_MVR) ierr = idba_enqd(handle, "B05002", dval) call ensure_no_error("enq var double") call ensure("enq empty var double", dval.eq.DBA_MVD) ierr = idba_enq(handle, "B05002", dval) call ensure_no_error("enq var auto double") call ensure("enq empty var auto double", dval.eq.DBA_MVD) ! Try using the 'missing' values ierr = idba_setb(handle, "lat", DBA_MVB) call ensure_no_error("unset key byte") ierr = idba_setc(handle, "lat", DBA_MVC) call ensure_no_error("unset key char") ierr = idba_seti(handle, "lat", DBA_MVI) call ensure_no_error("unset key int") ierr = idba_setr(handle, "lat", DBA_MVR) call ensure_no_error("unset key real") ierr = idba_setd(handle, "lat", DBA_MVD) call ensure_no_error("unset key double") ierr = idba_setb(handle, "B12001", DBA_MVB) call ensure_no_error("unset var byte") ierr = idba_setc(handle, "B12001", DBA_MVC) call ensure_no_error("unset var char") ierr = idba_seti(handle, "B12001", DBA_MVI) call ensure_no_error("unset var int") ierr = idba_setr(handle, "B12001", DBA_MVR) call ensure_no_error("unset var real") ierr = idba_setd(handle, "B12001", DBA_MVD) call ensure_no_error("unset var double") ierr = idba_unsetall(handle) call ensure_no_error("unsetall") n = 1 do while ( n > 0 ) ierr = idba_voglioquesto (handle,n) call ensure_no_error("voglioquesto") if (n == DBA_MVI) then exit end if do i = 1, n ierr = idba_dammelo (handle,btable) call ensure_no_error("dammelo") ierr = idba_enqd (handle,"B11001",dval) call ensure_no_error("enqd from msg") ierr = idba_enqr (handle,"B11001",rval) call ensure_no_error("enqr from msg") ierr = idba_enqi (handle,"B11001",ival) call ensure_no_error("enqi from msg") ! Value does not fit in a byte !ierr = idba_enqb (handle,"B11001",bval) !call ensure_no_error("enqb from msg") end do end do ierr = idba_fatto(handle) call ensure_no_error("fatto") ! If we made it so far, exit with no error print*,"check_missing: all tests succeed." call exit (0) end program include "check-utils.h" dballe-7.21/fortran/check_real0.f900000644000175000017500000000344113022043102013727 00000000000000 program check_real0 ! ***************************************** ! * Test suite for DBALLE Fortran bindings ! ***************************************** use dbtest use dballef integer :: handle,idbhandle,handle_err, ierr !data var/ "B22070", "B22074", "B22001", "B22071", "B22042"/ !integer debug !data debug/1/ !call idba_error_set_callback(0,idba_default_error_handler,debug,handle_err) ! Database login call dbinit(idbhandle) ! Open a session ierr = idba_preparati(idbhandle,handle,"write","write","write") call ensure_no_error("preparati") ! Clear the database ierr = idba_scopa(handle, "") call ensure_no_error("scopa") ! Insert some data with a 0.0D0 value ierr = idba_unsetall (handle) ierr = idba_set (handle,"lat",44.2) call ensure_no_error("set lat") ierr = idba_set (handle,"lon",11.5) call ensure_no_error("set lon") ierr = idba_set (handle,"mobile",0) call ensure_no_error("set mobile") ierr = idba_set (handle,"rep_memo","synop") call ensure_no_error("set rep_memo") ierr = idba_setlevel (handle,1,0,0,0) call ensure_no_error("set level") ierr = idba_settimerange (handle,0,0,0) call ensure_no_error("set timerange") ierr = idba_setdate (handle,2007,12,11,12,30,00) call ensure_no_error("set date") ierr = idba_set(handle,"B22070",0.0D0) call ensure_no_error("set B22070 to 0.0D0") ierr = idba_prendilo (handle) call ensure_no_error("prendilo") ierr = idba_fatto(handle) call ensure_no_error("fatto") ierr = idba_arrivederci(idbhandle) call ensure_no_error("arrivederci") call exit (0) end program check_real0 include "check-utils.h" dballe-7.21/fortran/check_attrs.f900000644000175000017500000000754213022043102014067 00000000000000 program check_attrs use dbtest use dballef ! ***************************************** ! * Dump the contents of a dballe database ! ***************************************** integer dbahandle, handle, handleinit, nstaz, ndata, nattr integer i, i1, i2, tmp integer id,height,codrete character cname*20,rete*20,value*255,avalue*255 character btable*10,starbtable*10 real dlat,dlon external errorrep ! ierr = idba_error_set_callback(0, errorrep, 2, i) ! Database login call dbinit(dbahandle) ! Open a session ierr = idba_preparati(dbahandle, handle, "read", "read", "read") call ensure_no_error("preparati handle") ierr = idba_preparati(dbahandle, handleinit, & "write", "write", "write") call ensure_no_error("preparati handleinit") ierr = idba_scopa(handleinit, DBA_MVC) call ensure_no_error("scopa") ! Insert test data ierr = idba_setd(handleinit, "lat", 12.345D00) call ensure_no_error("init 1") ierr = idba_setd(handleinit, "lon", 12.345D00) call ensure_no_error("init 2") ierr = idba_setlevel(handleinit, 1, 0, 0, 0) call ensure_no_error("init 3") ierr = idba_settimerange(handleinit, 0, 0, 0) call ensure_no_error("init 4") ierr = idba_setdate(handleinit, 2007, 06, 13, 0, 0, 0) call ensure_no_error("init 5") ierr = idba_setd(handleinit, "B12101", 12.345D0) call ensure_no_error("init 6") ierr = idba_setd(handleinit, "B12103", 23.456D0) call ensure_no_error("init 6") ierr = idba_setc(handleinit, "rep_memo", 'synop') call ensure_no_error("init 6b") ierr = idba_prendilo(handleinit) call ensure_no_error("prendilo") ierr = idba_setr(handleinit, "*B33007", 75.0) call ensure_no_error("init 8") ierr = idba_setc(handleinit, "*var_related", "B12101") call ensure_no_error("init 9") ierr = idba_critica(handleinit) call ensure_no_error("critica 1") ierr = idba_setr(handleinit, "*B33040", 80.0) call ensure_no_error("init 11") ierr = idba_setc(handleinit, "*var_related", "B12101") call ensure_no_error("init 12") ierr = idba_critica(handleinit) call ensure_no_error("critica 2") ierr = idba_setr(handleinit, "*B33036", 90.0) call ensure_no_error("init 14") ierr = idba_setc(handleinit, "*var_related", "B12101") call ensure_no_error("init 15") ierr = idba_critica(handleinit) call ensure_no_error("critica 3") ierr = idba_setc(handle, "var", "B12101") call ensure_no_error("query set 1") ierr = idba_voglioquesto(handle, nattr) call ensure("I need 1 var in output", nattr.eq.1) call ensure_no_error("query voglioquesto 1") ierr = idba_dammelo(handle, btable) call ensure_no_error("query dammelo 1") call ensure_no_error("query set 2") ierr = idba_voglioancora(handle, nattr) call ensure_no_error("query voglioancora 1") call ensure("I need 3 values", nattr.eq.3) ierr = idba_setc(handle, "*var", "*B33040") call ensure_no_error("query set 3") ierr = idba_voglioancora(handle, nattr) call ensure_no_error("query voglioancora 2") call ensure("I need 1 values", nattr.eq.1) ierr = idba_unset(handle, "*var") call ensure_no_error("query set 4") ierr = idba_setc(handle, "*varlist", "*B33007,*B33036") call ensure_no_error("query set 5") ierr = idba_voglioancora(handle, nattr) call ensure_no_error("query voglioancora 3") call ensure("I need 2 values", nattr.eq.2) ierr = idba_fatto(handleinit) ierr = idba_fatto(handle) ierr = idba_arrivederci(dbahandle) ! If we made it so far, exit with no error print*,"check_attrs: all tests succeed." call exit (0) end include "check-utils.h" dballe-7.21/fortran/check_missing.f900000644000175000017500000000650213022043102014376 00000000000000 program check_missing ! ***************************************** ! * Test suite for DBALLE Fortran bindings ! ***************************************** use dbtest use dballef integer dbahandle, handle, ival integer (kind=dba_int_b):: bval real rval real*8 dval character cval*255 external testcb ! call fdba_error_set_callback(0, testcb, 2, i) ! Database login call dbinit(dbahandle) ! Open a session ierr = idba_preparati(dbahandle, handle, "write", "write", "write") call ensure_no_error("preparati") ! Try reading 'missing' values ierr = idba_enqb(handle, "lat", bval) call ensure_no_error("enq key byte") call ensure("enq empty key byte", bval.eq.DBA_MVB) ierr = idba_enqc(handle, "lat", cval) call ensure_no_error("enq key char") call ensure("enq empty key char", cval.eq.DBA_MVC) ierr = idba_enqi(handle, "lat", ival) call ensure_no_error("enq key int") call ensure("enq empty key int", ival.eq.DBA_MVI) ierr = idba_enqr(handle, "lat", rval) call ensure_no_error("enq key real") call ensure("enq empty key real", rval.eq.DBA_MVR) ierr = idba_enqd(handle, "lat", dval) call ensure_no_error("enq key double") call ensure("enq empty key double", dval.eq.DBA_MVD) ierr = idba_enqb(handle, "B12001", bval) call ensure_no_error("enq var byte") call ensure("enq empty var byte", bval.eq.DBA_MVB) ierr = idba_enqc(handle, "B12001", cval) call ensure_no_error("enq var char") call ensure("enq empty var char", cval.eq.DBA_MVC) ierr = idba_enqi(handle, "B12001", ival) call ensure_no_error("enq var int") call ensure("enq empty var int", ival.eq.DBA_MVI) ierr = idba_enqr(handle, "B12001", rval) call ensure_no_error("enq var real") call ensure("enq empty var real", rval.eq.DBA_MVR) ierr = idba_enqd(handle, "B12001", dval) call ensure_no_error("enq var double") call ensure("enq empty var double", dval.eq.DBA_MVD) ! Try using the 'missing' values ierr = idba_setb(handle, "lat", DBA_MVB) call ensure_no_error("unset key byte") ierr = idba_setc(handle, "lat", DBA_MVC) call ensure_no_error("unset key char") ierr = idba_seti(handle, "lat", DBA_MVI) call ensure_no_error("unset key int") ierr = idba_setr(handle, "lat", DBA_MVR) call ensure_no_error("unset key real") ierr = idba_setd(handle, "lat", DBA_MVD) call ensure_no_error("unset key double") ierr = idba_setb(handle, "B12001", DBA_MVB) call ensure_no_error("unset var byte") ierr = idba_setc(handle, "B12001", DBA_MVC) call ensure_no_error("unset var char") ierr = idba_seti(handle, "B12001", DBA_MVI) call ensure_no_error("unset var int") ierr = idba_setr(handle, "B12001", DBA_MVR) call ensure_no_error("unset var real") ierr = idba_setd(handle, "B12001", DBA_MVD) call ensure_no_error("unset var double") ierr = idba_fatto(handle) call ensure_no_error("fatto") ierr = idba_arrivederci(dbahandle) call ensure_no_error("arrivederci") ! If we made it so far, exit with no error print*,"check_missing: all tests succeed." call exit (0) end program include "check-utils.h" dballe-7.21/fortran/check_messages.f900000644000175000017500000001076613022043102014543 00000000000000 program check_fdballe ! ***************************************** ! * Test suite for DBALLE Fortran bindings ! ***************************************** use dbtest use dballef integer :: dbahandle, handle,i,i1,i2,i3,i4,i5,i6,ival,saved_id real :: rval double precision :: dval character (len=10) :: param character (len=255) :: cval character (len=512) :: infile external :: testcb logical :: status ! call fdba_error_set_callback(0, testcb, 2, i) ier = idba_presentati(dbahandle, "mem:") call ensure_no_error("presentati") ier = idba_preparati(dbahandle, handle, "write", "write", "write") call ensure_no_error("preparati") call getenv("DBA_TESTDATA", infile) infile = trim(infile) // "/bufr/db-messages1.bufr"; ! Database login ier = idba_messages_open_input(handle, infile, "rb", "BUFR", .true.) call ensure_no_error("messages_open_input") ! Open a session ier = idba_unsetall(handle) call ensure_no_error("unsetall") ! Query the first message/subset ier = idba_remove_all(handle) ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 1") call ensure("messages_read_next result 1", status) ier = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto msg1") call ensure("voglioquesto result msg1", i.eq.88) ! Querying again gives the same data ier = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto msg1 dup") call ensure("voglioquesto result msg1", i.eq.88) ! Advance to the next message ier = idba_remove_all(handle) ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 2") call ensure("messages_read_next result 2", status) ier = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto 2") call ensure("voglioquesto result msg2", i.eq.9) ! And the other messages ier = idba_remove_all(handle) ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 3") call ensure("messages_read_next result 3", status) ier = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto 3") call ensure("voglioquesto result msg3", i.eq.193) ier = idba_remove_all(handle) ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 4") call ensure("messages_read_next result 4", status) ier = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto 4") call ensure("voglioquesto result msg4", i.eq.182) ier = idba_remove_all(handle) ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 5") call ensure("messages_read_next result 5", status) ier = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto 5") call ensure("voglioquesto result msg5", i.eq.170) ier = idba_remove_all(handle) ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 6") call ensure("messages_read_next result 6", status) ier = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto 6") call ensure("voglioquesto result msg6", i.eq.184) ier = idba_remove_all(handle) ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 7") call ensure("messages_read_next result 7", status) ier = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto 7") call ensure("voglioquesto result msg7", i.eq.256) ier = idba_remove_all(handle) ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 8") call ensure("messages_read_next result 8", status) ier = idba_voglioquesto(handle, i) call ensure_no_error("voglioquesto 8") call ensure("voglioquesto result msg8", i.eq.213) ier = idba_remove_all(handle) ier = idba_messages_read_next(handle, status) call ensure_no_error("messages_read_next 9") call ensure("messages_read_next result 9", .not. status ) ier = idba_fatto(handle) call ensure_no_error("fatto") ier = idba_arrivederci(dbahandle) call ensure_no_error("arrivederci") ! If we made it so far, exit with no error print*,"check_messages: all tests succeed." call exit (0) end program include "check-utils.h" dballe-7.21/fortran/dbtest.f900000644000175000017500000000115213022043102013051 00000000000000 module dbtest use test use dballef contains subroutine dbinit(dbahandle) integer::dbahandle, handle, ierr character (len=160) :: dsn,testname call getenv("DBA_DB", dsn) call getarg(0, testname) if (dsn=="") then dsn = "test:" end if ierr = idba_presentati(dbahandle, dsn) call ensure_no_error("presentati") ierr = idba_preparati(dbahandle, handle, "write", "write", "write") ierr = idba_scopa(handle, char(0)) ierr = idba_fatto(handle) endsubroutine dbinit endmodule dbtest dballe-7.21/fortran/trace.h0000644000175000017500000000471413022043102012522 00000000000000/* * Copyright (C) 2013--2014 ARPA-SIM * * 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. * * 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 St, Fifth Floor, Boston, MA 02110-1301 USA * * Author: Enrico Zini */ #include #ifndef FDBA_TRACE_H #define FDBA_TRACE_H #define IF_TRACING(code) do { if (dballe::fortran::do_trace) { code; } } while(0) namespace dballe { namespace fortran { extern bool do_trace; void trace_init(); void log_presentati_url(int handle, const char* chosen_dsn); void log_presentati_dsn(int handle, const char* dsn, const char* user, const char* pwd); void log_arrivederci(int handle); void log_error(wreport::error& e); void log_result(int res); void log_result(const char* res); struct SessionTracer { char trace_tag[10]; void log_preparati(int dbahandle, int handle, const char* anaflag, const char* dataflag, const char* attrflag); void log_messaggi(int handle, const char* filename, const char* mode, const char* type); void log_func(const char* call); void log_quantesono(); void log_voglioquesto(); void log_voglioancora(); void log_dammelo(); void log_ancora(); void log_set(const char* parm, int val); void log_set(const char* parm, double val); void log_set(const char* parm, const char* val); void log_setlevel(int ltype1, int l1, int ltype2, int l2); void log_settimerange(int pind, int p1, int p2); void log_setdate(int y, int m, int d, int ho, int mi, int se, const char* what=""); void log_unset(const char* parm); void log_scopa(const char* fname=0); void log_fatto(); void log_messages_open_input(const char* fname, const char* mode, const char* format, bool simplified=true); void log_messages_open_output(const char* fname, const char* mode, const char* format); void log_messages_read_next(); void log_messages_write_next(const char* template_name); }; } } #endif dballe-7.21/fortran/binding.cc0000644000175000017500000012435513022043102013200 00000000000000#include "config.h" #include "dballe/simple/msgapi.h" #include "dballe/simple/dbapi.h" #include "dballe/db/db.h" #include // memset #include #include #include "common.h" #include "handles.h" #include "error.h" #include "trace.h" //#define TRACEMISSING(type) fprintf(stderr, "SET TO MISSING (" type ")\n") #define TRACEMISSING(type) do {} while(0) /* * First attempt using constants */ //#define MISSING_STRING "" // Largest signed one byte value #define MISSING_BYTE SCHAR_MAX // integer 2 byte 32767 // Largest signed int value #define MISSING_INT INT_MAX //#define MISSING_REAL (3.4028235E+38f) // Largest positive float value #define MISSING_REAL FLT_MAX // Largest positive double value #define MISSING_DOUBLE DBL_MAX //#define MISSING_DOUBLE (1.79769E+308) //#define MISSING_DOUBLE (1.7976931348623167E+308) //#define MISSING_DOUBLE (1.797693134862316E+308) //#define MISSING_DOUBLE (1.79769313486E+308) //#define MISSING_DOUBLE ((double)0x7FEFFFFFFFFFFFFF) using namespace dballe; using namespace wreport; static inline void tofortran(int& val) { if (val == fortran::API::missing_int) val = MISSING_INT; } static inline int fromfortran(int val) { return val == MISSING_INT ? fortran::API::missing_int : val; } /** @file * @ingroup fortran * Simplified interface for Dballe. * * Every function returns an error indicator, which is 0 if no error happened, * or 1 if there has been an error. * * When an error happens, the functions in error.c can be used * to get detailed informations about it. */ /* Handles to give to Fortran */ #define MAX_SIMPLE 50 #define MAX_SESSION 10 using namespace std; struct HSession : public fortran::HBase { DB* db; void start() { fortran::HBase::start(); db = 0; } void stop() { if (db) delete db; fortran::HBase::stop(); } }; struct fortran::Handler hsess; struct HSimple : public fortran::HBase { fortran::API* api; fortran::SessionTracer trace; void start() { fortran::HBase::start(); api = 0; } void stop() { if (api) delete api; fortran::HBase::stop(); } }; struct fortran::Handler hsimp; static int usage_refcount = 0; static void lib_init() { if (usage_refcount > 0) return; fortran::trace_init(); fortran::error_init(); hsess.init("DB-All.e database sessions", "MAX_CALLBACKS"); hsimp.init("DB-All.e work sessions", "MAX_SIMPLE"); ++usage_refcount; } extern "C" { /**@name Session routines * @anchor idba_enq * * These routines are used to begin and end working sessions with DB-All.e. * @{ */ /** * Connect to the database * * This function can be called more than once once to connect to different * databases at the same time. * * @param url * The URL of the database to use * @param user * Used in the past, now it is ignored. * @param password * Used in the past, now it is ignored. * @retval dbahandle * The database handle that can be passed to idba_preparati to work with the * database. * @return * The error indication for the function. */ int idba_presentati(int* dbahandle, const char* url) { try { /* Initialize the library if needed */ lib_init(); /* Allocate and initialize a new handle */ *dbahandle = hsess.request(); HSession& hs = hsess.get(*dbahandle); /* Open the DB-All.e session */ /* If url is missing, look in the environment */ if (url[0] == 0) { url = getenv("DBA_DB"); if (url == NULL) url = ""; } IF_TRACING(fortran::log_presentati_url(*dbahandle, url)); hs.db = DB::connect_from_url(url).release(); /* Open the database session */ return fortran::success(); } catch (error& e) { hsess.release(*dbahandle); return fortran::error(e); } } /** * Disconnect from the database. * * @param dbahandle * The database handle to close. */ int idba_arrivederci(int *dbahandle) { IF_TRACING(fortran::log_arrivederci(*dbahandle)); // try { hsess.release(*dbahandle); /* dba_shutdown does not exist anymore, but I keep this code commented out here as a placeholder if in the future we'll need to hook actions when the usage refcount goes to 0 if (--usage_refcount == 0) dba_shutdown(); */ // return fortran::success(); // } catch (error& e) { // return fortran::error(e); // } return fortran::success(); } /** * Open a new session. * * You can call idba_preparati() many times and get more handles. This allows * to perform many operations on the database at the same time. * * idba_preparati() has three extra parameters that can be used to limit * write operations on the database, as a limited protection against * programming errors: * * `anaflag` controls access to station value records and can have these values: * * \li \c "read" station records cannot be inserted. * \li \c "write" it is possible to insert and delete pseudoana records. * * `dataflag` controls access to observed data and can have these values: * * \li \c "read" data cannot be modified in any way. * \li \c "add" data can be added to the database, but existing data cannot be * modified. Deletions are disabled. This is used to insert new data in the * database while preserving the data that was already present in it. * \li \c "write" data can freely be added, overwritten and deleted. * * `attrflag` controls access to data attributes and can have these values: * * \li \c "read" attributes cannot be modified in any way. * \li \c "write" attributes can freely be added, overwritten and deleted. * * Note that some combinations of parameters are illegal, such as anaflag=read * and dataflag=add (when adding a new data, it's sometimes necessary to insert * new pseudoana records), or dataflag=rewrite and attrflag=read (when deleting * data, their attributes are deleted as well). * * @param dbahandle * The main DB-ALLe connection handle * @retval handle * The session handle created by the function * @param anaflag station values access level * @param dataflag data values access level * @param attrflag attribute access level * @return * The error indication for the function. */ int idba_preparati(int dbahandle, int* handle, const char* anaflag, const char* dataflag, const char* attrflag) { try { /* Check here to warn users of the introduction of idba_presentati */ /* if (session == NULL) return dba_error_consistency("idba_presentati should be called before idba_preparati"); */ /* Allocate and initialize a new handle */ *handle = hsimp.request(); HSession& hs = hsess.get(dbahandle); HSimple& h = hsimp.get(*handle); IF_TRACING(h.trace.log_preparati(dbahandle, *handle, anaflag, dataflag, attrflag)); h.api = new fortran::DbAPI(*hs.db, anaflag, dataflag, attrflag); return fortran::success(); } catch (error& e) { hsimp.release(*handle); return fortran::error(e); } } /** * Start working with a message file. * * @retval handle * The session handle returned by the function * @param filename * Name of the file to open * @param mode * File open mode. It can be `"r"` for read, `"w"` for write (the old file * is deleted), `"a"` for append * @param type * Format of the data in the file. It can be: `"BUFR"`, `"CREX"`, `"AOF"` * (read only), `"AUTO"` (autodetect, read only) * @return * The error indication for the function. */ int idba_messaggi(int* handle, const char* filename, const char* mode, const char* type) { try { lib_init(); *handle = hsimp.request(); //HSession& hs = hsess.get(*dbahandle); HSimple& h = hsimp.get(*handle); IF_TRACING(h.trace.log_messaggi(*handle, filename, mode, type)); h.api = new fortran::MsgAPI(filename, mode, type); return fortran::success(); } catch (error& e) { hsimp.release(*handle); return fortran::error(e); } } /** * Close a session. * * @param handle * Handle to the session to be closed. */ int idba_fatto(int* handle) { try { HSimple& h = hsimp.get(*handle); IF_TRACING(h.trace.log_fatto()); h.api->fatto(); hsimp.release(*handle); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /*@}*/ /**@name Input/output routines * These routines are used to set the input and read the output of action routines. * @{ */ /** * Set an integer value in input * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to set. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in fapi_parms.md * @param value * The value to assign to the parameter * @return * The error indicator for the function */ int idba_seti(int handle, const char* parameter, const int* value) { try { HSimple& h = hsimp.get(handle); if (*value == MISSING_INT) { TRACEMISSING("int"); IF_TRACING(h.trace.log_unset(parameter)); h.api->unset(parameter); } else { IF_TRACING(h.trace.log_set(parameter, *value)); h.api->seti(parameter, *value); } return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Set a byte value in input * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to set. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in fapi_parms.md * @param value * The value to assign to the parameter * @return * The error indicator for the function */ int idba_setb(int handle, const char* parameter, const unsigned char* value) { try { HSimple& h = hsimp.get(handle); if (*value == MISSING_BYTE) { TRACEMISSING("byte"); IF_TRACING(h.trace.log_unset(parameter)); h.api->unset(parameter); } else { IF_TRACING(h.trace.log_set(parameter, *value)); h.api->setb(parameter, *value); } return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Set a real value in input * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to set. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in * fapi_parms.md * @param value * The value to assign to the parameter * @return * The error indicator for the function */ int idba_setr(int handle, const char* parameter, const float* value) { try { HSimple& h = hsimp.get(handle); if (*value == MISSING_REAL) { TRACEMISSING("real"); IF_TRACING(h.trace.log_unset(parameter)); h.api->unset(parameter); } else { IF_TRACING(h.trace.log_set(parameter, *value)); h.api->setr(parameter, *value); } return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Set a `real*8` value in input * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to set. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in fapi_parms.md * @param value * The value to assign to the parameter * @return * The error indicator for the function */ int idba_setd(int handle, const char* parameter, const double* value) { try { HSimple& h = hsimp.get(handle); if (*value == MISSING_DOUBLE) { TRACEMISSING("double"); IF_TRACING(h.trace.log_unset(parameter)); h.api->unset(parameter); } else { IF_TRACING(h.trace.log_set(parameter, *value)); h.api->setd(parameter, *value); } return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Set a character value in input * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to set. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in fapi_parms.md * @param value * The value to assign to the parameter * @return * The error indicator for the function */ int idba_setc(int handle, const char* parameter, const char* value) { try { HSimple& h = hsimp.get(handle); if (value[0] == 0) { TRACEMISSING("char"); IF_TRACING(h.trace.log_unset(parameter)); h.api->unset(parameter); } else { IF_TRACING(h.trace.log_set(parameter, value)); h.api->setc(parameter, value); } return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Read an integer value from the output * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to query. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in fapi_parms.md * @param value * Where the value will be returned * @return * The error indicator for the function */ int idba_enqi(int handle, const char* parameter, int* value) { try { HSimple& h = hsimp.get(handle); *value = h.api->enqi(parameter); tofortran(*value); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Read a byte value from the output * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to query. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in fapi_parms.md * @param value * Where the value will be returned * @return * The error indicator for the function */ int idba_enqb(int handle, const char* parameter, unsigned char* value) { try { HSimple& h = hsimp.get(handle); *value = h.api->enqb(parameter); if (*value == fortran::API::missing_byte) *value = MISSING_BYTE; return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Read a real value from the output * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to query. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in fapi_parms.md * @param value * Where the value will be returned * @return * The error indicator for the function */ int idba_enqr(int handle, const char* parameter, float* value) { try { HSimple& h = hsimp.get(handle); *value = h.api->enqr(parameter); if (*value == fortran::API::missing_float) *value = MISSING_REAL; return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Read a `real*8` value from the output * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to query. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in fapi_parms.md * @param value * Where the value will be returned * @return * The error indicator for the function */ int idba_enqd(int handle, const char* parameter, double* value) { try { HSimple& h = hsimp.get(handle); *value = h.api->enqd(parameter); if (*value == fortran::API::missing_double) *value = MISSING_DOUBLE; return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Read a character value from the output * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to query. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of an attribute prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in * fapi_parms.md * @param value * Where the value will be returned * @return * The error indicator for the function */ int idba_enqc(int handle, const char* parameter, char* value, unsigned value_len) { try { HSimple& h = hsimp.get(handle); const char* v = h.api->enqc(parameter); // Copy the result values fortran::cstring_to_fortran(v, value, value_len); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Remove one value from the input * * @param handle * Handle to a DB-All.e session * @param parameter * Parameter to remove. It can be the code of a WMO variable prefixed by \c * "B" (such as \c "B01023"); the code of a QC value prefixed by \c "*B" * (such as \c "*B01023") or a keyword among the ones defined in fapi_parms.md * @return * The error indicator for the function */ int idba_unset(int handle, const char* parameter) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_unset(parameter)); h.api->unset(parameter); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Remove all Bxxyyy values from the input * * @param handle * Handle to a DB-All.e session */ int idba_unsetb(int handle) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_func("unsetb")); h.api->unsetb(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Completely clear the input, removing all values. * * @param handle * Handle to a DB-All.e session */ int idba_unsetall(int handle) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_func("unsetall")); h.api->unsetall(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Signal that the input values that are set are related to station values * instead of normal variables. * * @param handle * Handle to a DB-All.e session * @return * The error indicator for the function */ int idba_setcontextana(int handle) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_func("setcontextana")); h.api->setcontextana(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /// @} /**@name Input/output shortcuts * * The following routines are shortcuts for common combinations of Input/Output routines. * @{ */ /** * Set all level information. * * @param handle * Handle to a DB-All.e session * @param ltype1 * Level type to set in the input record * @param l1 * L1 to set in the input record * @param ltype2 * Level type to set in the input record * @param l2 * L2 to set in the input record * @return * The error indicator for the function */ int idba_setlevel(int handle, int ltype1, int l1, int ltype2, int l2) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_setlevel( fromfortran(ltype1), fromfortran(l1), fromfortran(ltype2), fromfortran(l2))); h.api->setlevel( fromfortran(ltype1), fromfortran(l1), fromfortran(ltype2), fromfortran(l2)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Set all time range information. * * @param handle * Handle to a DB-All.e session * @param ptype * P indicator to set in the input record * @param p1 * P1 to set in the input record * @param p2 * P2 to set in the input record * @return * The error indicator for the function */ int idba_settimerange(int handle, int ptype, int p1, int p2) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_settimerange(fromfortran(ptype), fromfortran(p1), fromfortran(p2))); h.api->settimerange(fromfortran(ptype), fromfortran(p1), fromfortran(p2)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Set all date information. * * @param handle * Handle to a DB-All.e session * @param year * Year to set in the input record * @param month * Month to set in the input * @param day * Day to set in the input * @param hour * Hour to set in the input * @param min * Minute to set in the input * @param sec * Second to set in the input * @return * The error indicator for the function */ int idba_setdate(int handle, int year, int month, int day, int hour, int min, int sec) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_setdate( fromfortran(year), fromfortran(month), fromfortran(day), fromfortran(hour), fromfortran(min), fromfortran(sec))); h.api->setdate( fromfortran(year), fromfortran(month), fromfortran(day), fromfortran(hour), fromfortran(min), fromfortran(sec)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Set the minimum date for a query. * * @param handle * Handle to a DB-All.e session * @param year * Minimum year to set in the query * @param month * Minimum month to set in the query * @param day * Minimum day to set in the query * @param hour * Minimum hour to set in the query * @param min * Minimum minute to set in the query * @param sec * Minimum second to set in the query * @return * The error indicator for the function */ int idba_setdatemin(int handle, int year, int month, int day, int hour, int min, int sec) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_setdate( fromfortran(year), fromfortran(month), fromfortran(day), fromfortran(hour), fromfortran(min), fromfortran(sec), "min")); h.api->setdatemin( fromfortran(year), fromfortran(month), fromfortran(day), fromfortran(hour), fromfortran(min), fromfortran(sec)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Set the maximum date for a query. * * @param handle * Handle to a DB-All.e session * @param year * Maximum year to set in the query * @param month * Maximum month to set in the query * @param day * Maximum day to set in the query * @param hour * Maximum hour to set in the query * @param min * Maximum minute to set in the query * @param sec * Maximum second to set in the query * @return * The error indicator for the function */ int idba_setdatemax(int handle, int year, int month, int day, int hour, int min, int sec) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_setdate( fromfortran(year), fromfortran(month), fromfortran(day), fromfortran(hour), fromfortran(min), fromfortran(sec), "max")); h.api->setdatemax( fromfortran(year), fromfortran(month), fromfortran(day), fromfortran(hour), fromfortran(min), fromfortran(sec)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Read all level information. * * @param handle * Handle to a DB-All.e session * @retval ltype1 * Type of the first level from the output record * @retval l1 * L1 from the output record * @retval ltype2 * Type of the second level from the output record * @retval l2 * L2 from the output record * @return * The error indicator for the function */ int idba_enqlevel(int handle, int* ltype1, int* l1, int* ltype2, int* l2) { try { HSimple& h = hsimp.get(handle); h.api->enqlevel(*ltype1, *l1, *ltype2, *l2); tofortran(*ltype1); tofortran(*l1); tofortran(*ltype2); tofortran(*l2); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Read all time range information. * * @param handle * Handle to a DB-All.e session * @retval ptype * P indicator from the output record * @retval p1 * P1 from the output record * @retval p2 * P2 from the output record * @return * The error indicator for the function */ int idba_enqtimerange(int handle, int* ptype, int* p1, int* p2) { try { HSimple& h = hsimp.get(handle); h.api->enqtimerange(*ptype, *p1, *p2); tofortran(*ptype); tofortran(*p1); tofortran(*p2); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Read all date information. * * @param handle * Handle to a DB-All.e session * @retval year * Year from the output record * @retval month * Month the output record * @retval day * Day the output record * @retval hour * Hour the output record * @retval min * Minute the output record * @retval sec * Second the output record * @return * The error indicator for the function */ int idba_enqdate(int handle, int* year, int* month, int* day, int* hour, int* min, int* sec) { try { HSimple& h = hsimp.get(handle); h.api->enqdate(*year, *month, *day, *hour, *min, *sec); tofortran(*year), tofortran(*month), tofortran(*day); tofortran(*hour), tofortran(*min), tofortran(*sec); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /*@}*/ /**@name Action routines * @{ */ /** * Reinitialize the database, removing all data and loading report information. * * It requires the database to be opened in rewrite mode. * * @param handle * Handle to a DB-All.e session * @param repinfofile * CSV file with the default report informations. See dba_reset() * documentation for the format of the file. * @return * The error indicator for the function */ int idba_scopa(int handle, const char* repinfofile) { try { HSimple& h = hsimp.get(handle); if (repinfofile[0] == 0) { IF_TRACING(h.trace.log_scopa()); h.api->scopa(nullptr); } else { IF_TRACING(h.trace.log_scopa(repinfofile)); h.api->scopa(repinfofile); } return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Query the stations in the database. * * Results are retrieved using idba_elencamele(). * * There is no guarantee on the ordering of results of quantesono/elencamele. * * @param handle * Handle to a DB-All.e session * @param count * The count of elements * @return * The error indicator for the function */ int idba_quantesono(int handle, int* count) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_quantesono()); *count = h.api->quantesono(); IF_TRACING(fortran::log_result(*count)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Retrieve the data about one station. * * After invocation, the output record is filled with information about the * station and its station values. * * If there are no more stations to read, the function will fail with * DBA_ERR_NOTFOUND. * * @param handle * Handle to a DB-All.e session * @return * The error indicator for the function */ int idba_elencamele(int handle) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_func("elencamele")); h.api->elencamele(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Query the data in the database. * * Results are retrieved using idba_dammelo(). * * Results are sorted by (in order): ana_id, datetime, level, time range, * varcode. The ana_id changes slowest, and the varcode changes fastest. * * Ordering by ana_id effectively does grouping by station rather than * ordering. * * Note that in V6 databases the ana_id corresponds to (latitude, longitude, * ident), and does not include rep_memo, so in V6 databases the ordering is * effectively: ana_id, rep_memo, datetime, level, time range, varcode. * * Sort order can change in the future, with the invariant that the slowest to * change remains ana_id, followed by datetime, and the fastest to change * remains the varcode. * * @param handle * Handle to a DB-All.e session * @retval count * Number of values returned by the function * @return * The error indicator for the function */ int idba_voglioquesto(int handle, int* count) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_voglioquesto()); *count = h.api->voglioquesto(); IF_TRACING(fortran::log_result(*count)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Retrieve the data about one value. * * After invocation, the output record is filled with information about the * value. * * If there are no more values to read, the function will fail with * DBA_ERR_NOTFOUND. * * @param handle * Handle to a DB-All.e session * @retval parameter * Contains the ID of the parameter retrieved by this fetch * @return * The error indicator for the function */ int idba_dammelo(int handle, char* parameter, int parameter_len) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_dammelo()); const char* res = h.api->dammelo(); IF_TRACING(fortran::log_result(res)); fortran::cstring_to_fortran(res, parameter, parameter_len); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Insert a new value in the database. * * This function will fail if the database is open in data readonly mode, and * it will refuse to overwrite existing values if the database is open in data * add mode. * * If the database is open in station reuse mode, the station values provided * on input will be used to create a station record if it is missing, but will * be ignored if it is already present. If it is open in station rewrite mode * instead, the station values on input will be used to replace all the * existing station values. * * @param handle * Handle to a DB-All.e session * @return * The error indicator for the function */ int idba_prendilo(int handle) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_func("prendilo")); h.api->prendilo(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Remove from the database all values that match the query. * * This function will fail unless the database is open in data rewrite mode. * * @param handle * Handle to a DB-All.e session * @return * The error indicator for the function */ int idba_dimenticami(int handle) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_func("dimenticami")); h.api->dimenticami(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Remove all values from the database. * * The difference with idba_scopa() is that it preserves the existing report * information. * * @param handle * Handle to a DB-All.e session * @return * The error indicator for the function */ int idba_remove_all(int handle) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_func("remove_all")); h.api->remove_all(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Query attributes about a variable. * * The variable queried is either: * * @li the last variable returned by `idba_dammelo()` * @li the last variable inserted by `idba_prendilo()` * @li the variable selected by settings `*context_id` and `*var_related`. * * Results are retrieved using idba_ancora(). * * @param handle * Handle to a DB-All.e session * @retval count * Number of values returned by the function * @return * The error indicator for the function */ int idba_voglioancora(int handle, int* count) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_voglioancora()); *count = h.api->voglioancora(); IF_TRACING(fortran::log_result(*count)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Retrieve one attribute from the result of idba_voglioancora(). * * @param handle * Handle to a DB-All.e session * @retval parameter * Contains the ID of the parameter retrieved by this fetch * @return * The error indicator for the function */ int idba_ancora(int handle, char* parameter, unsigned parameter_len) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_ancora()); const char* res = h.api->ancora(); IF_TRACING(fortran::log_result(res)); fortran::cstring_to_fortran(res, parameter, parameter_len); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Insert new attributes for a variable. * * The variable is either: * * @li the last variable returned by `idba_dammelo()` * @li the last variable inserted by `idba_prendilo()` * @li the variable selected by settings `*context_id` and `*var_related`. * * The attributes that will be inserted are all those set by the functions * idba_seti(), idba_setc(), idba_setr(), idba_setd(), using an asterisk in * front of the variable name. * * Contrarily to idba_prendilo(), this function resets all the attribute * information (and only attribute information) previously set in input, so the * values to be inserted need to be explicitly set every time. * * This function will fail if the database is open in attribute readonly mode, * and it will refuse to overwrite existing values if the database is open in * attribute add mode. * * @param handle * Handle to a DB-All.e session * @return * The error indicator for the function */ int idba_critica(int handle) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_func("critica")); h.api->critica(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Remove attribute information for a variable. * * The variable is either: * * @li the last variable returned by `idba_dammelo()` * @li the last variable inserted by `idba_prendilo()` * @li the variable selected by settings `*context_id` and `*var_related`. * * The attribute informations to be removed are selected with: * \code * idba_setc(handle, "*varlist", "*B33021,*B33003"); * \endcode * * @param handle * Handle to a DB-All.e session * @return * The error indicator for the function */ int idba_scusa(int handle) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_func("scusa")); h.api->scusa(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /// @} /**@name Message routines * @{ */ /** * Open a BUFR, CREX, or AOF file for reading. * * Each session can only have one open input file: if one was previously open, * it is closed before opening the new one. * * @param handle * Handle to a DB-All.e session * @param filename * The file name * @param mode * The opening mode. See the mode parameter of libc's fopen() call for details. * @param format * The file format ("BUFR", "CREX", or "AOF") * @param simplified * true if the file is imported in simplified mode, false if it is imported * in precise mode. This controls approximating levels and time ranges to * standard values. * @return * The error indication for the function. */ int idba_messages_open_input( int handle, const char* filename, const char* mode, const char* format, int simplified) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_messages_open_input(filename, mode, format, simplified)); h.api->messages_open_input(filename, mode, File::parse_encoding(format), simplified); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Open a BUFR, CREX, or AOF file for writing. * * Each session can only have one open input file: if one was previously open, * it is closed before opening the new one. * * @param handle * Handle to a DB-All.e session * @param filename * The file name * @param mode * The opening mode. See the mode parameter of libc's fopen() call for details. * @param format * The file format ("BUFR", "CREX", or "AOF") * @return * The error indication for the function. */ int idba_messages_open_output( int handle, const char* filename, const char* mode, const char* format) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_messages_open_output(filename, mode, format)); h.api->messages_open_output(filename, mode, File::parse_encoding(format)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Read the next message and import it in the database. * * The access mode of the session controls how data is imported: * * @li station and data mode cannot be "read". * @li if data mode is "add", existing data will not be overwritten. * @li if attribute mode is "read", attributes will not be imported. * * @param handle * Handle to a DB-All.e session * @retval found * True if a message has been imported, false if we are at the end of the * input file. * @return * The error indication for the function. */ int idba_messages_read_next(int handle, int *found) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_messages_read_next()); *found = h.api->messages_read_next(); IF_TRACING(fortran::log_result(*found)); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Export the data from the database that match the current query and add them * to the current message. * * @param handle * Handle to a DB-All.e session * @param template_name * The template name used to decide the layout of variables in the messages * that are exported. * @return * The error indication for the function. */ int idba_messages_write_next(int handle, const char* template_name) { try { HSimple& h = hsimp.get(handle); IF_TRACING(h.trace.log_messages_write_next(template_name)); h.api->messages_write_next(template_name); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /// @} /**@name Pretty-printing routines * @{ */ /** * Format the description of a level given its value. * * @param handle * Handle to a DB-All.e session * @param ltype1 * Level type to set in the input record * @param l1 * L1 to set in the input record * @param ltype2 * Level type to set in the input record * @param l2 * L2 to set in the input record * @retval result * The string with the description of the level. * @return * The error indication for the function. */ int idba_spiegal( int handle, int ltype1, int l1, int ltype2, int l2, char* result, unsigned result_len) { try { HSimple& h = hsimp.get(handle); const char* res = h.api->spiegal(ltype1, l1, ltype2, l2); fortran::cstring_to_fortran(res, result, result_len); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Format the description of a time range given its value. * * @param handle * Handle to a DB-All.e session * @param ptype * P indicator to set in the input record * @param p1 * P1 to set in the input record * @param p2 * P2 to set in the input record * @retval result * The string with the description of the time range. * @return * The error indication for the function. */ int idba_spiegat( int handle, int ptype, int p1, int p2, char* result, unsigned result_len) { try { HSimple& h = hsimp.get(handle); const char* res = h.api->spiegat(ptype, p1, p2); fortran::cstring_to_fortran(res, result, result_len); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /** * Format the description of a variable given its varcode and its value. * * @param handle * Handle to a DB-All.e session * @param varcode * B table code of the variable (`"Bxxyyy"`) * @param value * Value of the variable, as read with idba_enqc() * @retval result * The string with the description of the time range. * @return * The error indication for the function. */ int idba_spiegab( int handle, const char* varcode, const char* value, char* result, unsigned result_len) { try { HSimple& h = hsimp.get(handle); const char* res = h.api->spiegab(varcode, value); fortran::cstring_to_fortran(res, result, result_len); return fortran::success(); } catch (error& e) { return fortran::error(e); } } /*@}*/ int idba_test_input_to_output(int handle) { try { HSimple& h = hsimp.get(handle); h.api->test_input_to_output(); return fortran::success(); } catch (error& e) { return fortran::error(e); } } } dballe-7.21/doc/0000755000175000017500000000000013022523411010425 500000000000000dballe-7.21/doc/make_fortran_reference0000755000175000017500000002434613022043102014764 00000000000000#!/usr/bin/python3 import xml.etree.ElementTree as ET import textwrap import argparse import sys import os import re import logging log = logging.getLogger() class Markdown: """ Markdown output writer """ def __init__(self, out): self.out = out def print(self, *args, **kw): print(*args, file=self.out, **kw) def title(self, text, level=1): self.print("{} {}".format("#" * level, text)) self.print() def anchor(self, key): self.print("".format(key=key)) def link_target(self, key, link): self.print("[{key}]: {link}".format(key=key, link=link)) def def_list(self, items): for head, root in items: for idx, node in enumerate(root): if idx == 0: initial_indent = "* {head}: ".format(head=head) else: initial_indent = " " self.print() self.node(node, initial_indent=initial_indent, subsequent_indent=" ") self.print() def node(self, node, **wrap_kw): if node.tag == "para": self.node_para(node, **wrap_kw) else: log.warn("Unknown node to print: %s", node.tag) def node_para(self, node, **wrap_kw): content = [] if node.text: content.append(node.text) def flush_content(): nonlocal content # Flush the current content text = "".join(content).strip() if text: text = re.sub("fapi_parms.md", "[fapi_parms.md](fapi_parms.md)", text) text = re.sub(r"idba_([a-z_]+)(\(\))?", r"[idba_\1()](#idba_\1)", text) for line in textwrap.wrap(text, break_on_hyphens=False, **wrap_kw): self.print(line) content = [] for el in node: if el.tag == "computeroutput": content.append("`{}`".format(el.text)) if el.tail: content.append(el.tail) elif el.tag == "ref": content.append(el.text) if el.tail: content.append(el.tail) elif el.tag == "anchor": if el.tail: content.append(el.tail) elif el.tag == "itemizedlist": # Flush the current content flush_content() self.print() self.node_list(el, **wrap_kw) self.print() if el.tail: content.append(el.tail) elif el.tag == "programlisting": # Flush the current content flush_content() self.print() self.node_programlisting(el, **wrap_kw) self.print() if el.tail: content.append(el.tail) elif el.tag in ("parameterlist", "simplesect"): continue else: log.warn("Invalid tag inside para: %s", el.tag) flush_content() def node_list(self, node, **wrap_kw): if "initial_indent" in wrap_kw or "subsequent_indent" in wrap_kw: log.warn("Nested lists are not supported") return for el in node: if el.tag != "listitem": log.warn("Found unsupported %s inside itemizedlist", el.type) continue for n in el: self.node(n, initial_indent="* ", subsequent_indent=" ") def node_programlisting(self, node, **wrap_kw): if "initial_indent" in wrap_kw or "subsequent_indent" in wrap_kw: log.warn("Code insite lists is not supported") return def harvest_codeline(node): content = [] if node.text: content.append(node.text) for n in node: if n.tag == "sp": content.append(" ") content.extend(harvest_codeline(n)) if n.tail: content.append(n.tail) return content self.print() self.print("```fortran") for node_line in node: if node_line.tag != "codeline": log.warn("Found unsupported %s inside programlisting", node_line.tag) continue content = harvest_codeline(node_line) self.print("".join(content)) self.print("```") self.print() def para(self, text, **wrap_kw): for line in textwrap.wrap(text, break_on_hyphens=False, **wrap_kw): self.print(line) self.print() def raw(self, text): self.print(text) def collect_text(node): return "".join(x for x in node.itertext() if x and not x.isspace()).strip() def collect_desc(node): for para in node.iterfind("para"): if para.find("parameterlist"): continue yield collect_text(para) class Argument: """ Parameter built from a element """ def __init__(self, node): self.name = node.find(".//parametername").text self.desc_node = node.find(".//parameterdescription") class Function: """ Function built from a element """ def __init__(self, node): self.name = node.find("name").text log.debug("Found function %s", self.name) self.summary = collect_text(node.find("briefdescription")) self.params = [] for n in node.iter("param"): type = n.find("type").text if type == "SUBROUTINE(func)": self.params.append("func") else: self.params.append(n.find("declname").text) self.desc_node = node.find("detaileddescription") self.args = [] for paramlist_node in node.findall(".//parameterlist"): if paramlist_node.attrib["kind"] in ("param", "retval"): for n in paramlist_node.findall("parameteritem"): self.args.append(Argument(n)) self.retval_desc = node.find(".//simplesect[@kind='return']") @property def arg_string(self): return ", ".join(self.params) def print_details(self, md): md.anchor(self.name) md.title("{f.name}({f.arg_string})".format(f=self), level=4) if self.args: md.para("Parameters:") dl = [] for a in self.args: dl.append( ("`{a.name}`".format(a=a), a.desc_node) ) md.def_list(dl) if self.retval_desc: md.para("Return value:") for n in self.retval_desc: md.node(n) md.para(self.summary) for node in self.desc_node: md.node(node) class Section: def __init__(self, tree): self.functions = [] bdesc_node = tree.find("header") if bdesc_node is not None: self.summary = bdesc_node.text else: self.summary = None log.debug("Found section %s", self.summary) self.desc_node = tree.find("description") #if self.desc_node is None: #log.warn("Section \"%s\" has no description", self.summary) for node in tree.iter("memberdef"): if node.attrib["kind"] != "function": continue f = Function(node) if not f.name.startswith("idba_"): continue self.functions.append(f) def print_links(self, md): for f in self.functions: md.link_target(f.name, "fapi_reference.md#{f.name}".format(f=f)) def print_summary(self, md): md.title(self.summary, level=3) if self.desc_node: for node in self.desc_node: log.debug("%s SUMMARY %s", self.summary, node.tag) md.node(node) md.raw("""""") for f in self.functions: md.raw("".format(f=f)) md.raw("""
Name Description
{f.name}({f.arg_string}){f.summary}
""") def print_details(self, md): md.title(self.summary, level=3) for f in self.functions: f.print_details(md) class API: def __init__(self, args): self.sections = [] self.load_file(os.path.join(args.xmldir, "error_8cc.xml")) self.load_file(os.path.join(args.xmldir, "binding_8cc.xml")) def load_file(self, pathname): log.info("Loading file %s", pathname) with open(pathname) as fd: etree = ET.fromstring(fd.read()) for node in etree.iter("sectiondef"): if node.attrib["kind"] not in ("define", "user-defined", "func"): continue sec = Section(node) if not sec.functions or not sec.summary: continue self.sections.append(sec) def print_links(self, md): for s in self.sections: s.print_links() def print_reference(self, md): md.title("Fortran API reference", 1) self.print_summary(md) self.print_details(md) def print_summary(self, md): md.title("Summary of routines", 2) for s in self.sections: s.print_summary(md) def print_details(self, md): md.title("Reference of routines", 2) for s in self.sections: s.print_details(md) def main(): parser = argparse.ArgumentParser(description="Build fortran API reference markdown documentation.") parser.add_argument("xmldir", help="doxygen xml directory") parser.add_argument("--links", action="store_true", help="print link shortcuts to the functions in the reference") parser.add_argument("-v", "--verbose", action="store_true", help="verbose output") parser.add_argument("--debug", action="store_true", help="verbose output") args = parser.parse_args() FORMAT = "%(asctime)-15s %(levelname)s %(message)s" if args.debug: logging.basicConfig(level=logging.DEBUG, stream=sys.stderr, format=FORMAT) elif args.verbose: logging.basicConfig(level=logging.INFO, stream=sys.stderr, format=FORMAT) else: logging.basicConfig(level=logging.WARN, stream=sys.stderr, format=FORMAT) api = API(args) md = Markdown(sys.stdout) if args.links: api.print_links(md) else: api.print_reference(md) if __name__ == "__main__": main() dballe-7.21/doc/fapi_reference.md0000644000175000017500000010541013022517423013633 00000000000000# Fortran API reference ## Summary of routines ### Error management routines
Name Description
idba_error_code()Return the error code for the last function that was called.
idba_error_message(message, message_len)Return the error message for the last function that was called.
idba_error_context(message, message_len)Return a string describing the error context description for the last function that was called.
idba_error_details(message, message_len)Return a string with additional details about the error for the last function that was called.
idba_error_set_callback(code, func, data, handle)Set a callback to be invoked when an error of a specific kind happens.
idba_error_remove_callback(handle)Remove a previously set callback.
idba_default_error_handler(debug)Predefined error callback that prints a message and exits.
idba_error_handle_tolerating_overflows(debug)Predefined error callback that prints a message and exists, except in case of overflow errors.
### Session routines These routines are used to begin and end working sessions with DB-All.e.
Name Description
idba_presentati(dbahandle, url)Connect to the database.
idba_arrivederci(dbahandle)Disconnect from the database.
idba_preparati(dbahandle, handle, anaflag, dataflag, attrflag)Open a new session.
idba_messaggi(handle, filename, mode, type)Start working with a message file.
idba_fatto(handle)Close a session.
### Input/output routines These routines are used to set the input and read the output of action routines.
Name Description
idba_seti(handle, parameter, value)Set an integer value in input.
idba_setb(handle, parameter, value)Set a byte value in input.
idba_setr(handle, parameter, value)Set a real value in input.
idba_setd(handle, parameter, value)Set a real*8 value in input.
idba_setc(handle, parameter, value)Set a character value in input.
idba_enqi(handle, parameter, value)Read an integer value from the output.
idba_enqb(handle, parameter, value)Read a byte value from the output.
idba_enqr(handle, parameter, value)Read a real value from the output.
idba_enqd(handle, parameter, value)Read a real*8 value from the output.
idba_enqc(handle, parameter, value, value_len)Read a character value from the output.
idba_unset(handle, parameter)Remove one value from the input.
idba_unsetb(handle)Remove all Bxxyyy values from the input.
idba_unsetall(handle)Completely clear the input, removing all values.
idba_setcontextana(handle)Signal that the input values that are set are related to station values instead of normal variables.
### Input/output shortcuts The following routines are shortcuts for common combinations of Input/Output routines.
Name Description
idba_setlevel(handle, ltype1, l1, ltype2, l2)Set all level information.
idba_settimerange(handle, ptype, p1, p2)Set all time range information.
idba_setdate(handle, year, month, day, hour, min, sec)Set all date information.
idba_setdatemin(handle, year, month, day, hour, min, sec)Set the minimum date for a query.
idba_setdatemax(handle, year, month, day, hour, min, sec)Set the maximum date for a query.
idba_enqlevel(handle, ltype1, l1, ltype2, l2)Read all level information.
idba_enqtimerange(handle, ptype, p1, p2)Read all time range information.
idba_enqdate(handle, year, month, day, hour, min, sec)Read all date information.
### Action routines
Name Description
idba_scopa(handle, repinfofile)Reinitialize the database, removing all data and loading report information.
idba_quantesono(handle, count)Query the stations in the database.
idba_elencamele(handle)Retrieve the data about one station.
idba_voglioquesto(handle, count)Query the data in the database.
idba_dammelo(handle, parameter, parameter_len)Retrieve the data about one value.
idba_prendilo(handle)Insert a new value in the database.
idba_dimenticami(handle)Remove from the database all values that match the query.
idba_remove_all(handle)Remove all values from the database.
idba_voglioancora(handle, count)Query attributes about a variable.
idba_ancora(handle, parameter, parameter_len)Retrieve one attribute from the result of idba_voglioancora().
idba_critica(handle)Insert new attributes for a variable.
idba_scusa(handle)Remove attribute information for a variable.
### Message routines
Name Description
idba_messages_open_input(handle, filename, mode, format, simplified)Open a BUFR, CREX, or AOF file for reading.
idba_messages_open_output(handle, filename, mode, format)Open a BUFR, CREX, or AOF file for writing.
idba_messages_read_next(handle, found)Read the next message and import it in the database.
idba_messages_write_next(handle, template_name)Export the data from the database that match the current query and add them to the current message.
### Pretty-printing routines
Name Description
idba_spiegal(handle, ltype1, l1, ltype2, l2, result, result_len)Format the description of a level given its value.
idba_spiegat(handle, ptype, p1, p2, result, result_len)Format the description of a time range given its value.
idba_spiegab(handle, varcode, value, result, result_len)Format the description of a variable given its varcode and its value.
## Reference of routines ### Error management routines #### idba_error_code() Return value: The error code. Return the error code for the last function that was called. This is a list of known codes: * 0: No error * 1: Item not found * 2: Wrong variable type * 3: Cannot allocate memory * 4: Database error * 5: Handle management error * 6: Buffer is too short to fit data * 7: Error reported by the system * 8: Consistency check failed * 9: Parse error * 10: Write error * 11: Regular expression error * 12: Feature not implemented * 13: Value outside acceptable domain #### idba_error_message(message, message_len) Parameters: * `message`: The string holding the error message. If the string is not long enough, it will be truncated. Return the error message for the last function that was called. The error message is just a description of the error code. To see more details of the specific condition that caused the error, use [idba_error_context()](#idba_error_context) and [idba_error_details()](#idba_error_details) #### idba_error_context(message, message_len) Parameters: * `message`: The string holding the error context. If the string is not long enough, it will be truncated. Return a string describing the error context description for the last function that was called. This string describes what the code that failed was trying to do. #### idba_error_details(message, message_len) Parameters: * `message`: The string holding the error details. If the string is not long enough, it will be truncated. Return a string with additional details about the error for the last function that was called. This string contains additional details about the error in case the code was able to get extra informations about it, for example by querying the error functions of an underlying module. #### idba_error_set_callback(code, func, data, handle) Parameters: * `code`: The error code of the error that triggers this callback. If DBA_ERR_NONE is used, then the callback is invoked on all errors. * `func`: The function to be called. * `data`: An arbitrary integer data that is passed verbatim to the callback function when invoked. * `handle`: A handle that can be used to remove the callback Return value: The error indicator for the function Set a callback to be invoked when an error of a specific kind happens. #### idba_error_remove_callback(handle) Parameters: * `handle`: The handle previously returned by [idba_error_set_callback()](#idba_error_set_callback) Return value: The error indicator for the function Remove a previously set callback. #### idba_default_error_handler(debug) Predefined error callback that prints a message and exits. The message is printed only if a non-zero value is supplied as user data #### idba_error_handle_tolerating_overflows(debug) Predefined error callback that prints a message and exists, except in case of overflow errors. In case of overflows it prints a warning and continues execution ### Session routines #### idba_presentati(dbahandle, url) Parameters: * `url`: The URL of the database to use * `user`: Used in the past, now it is ignored. * `password`: Used in the past, now it is ignored. * `dbahandle`: The database handle that can be passed to [idba_preparati()](#idba_preparati) to work with the database. Return value: The error indication for the function. Connect to the database. This function can be called more than once once to connect to different databases at the same time. #### idba_arrivederci(dbahandle) Parameters: * `dbahandle`: The database handle to close. Disconnect from the database. #### idba_preparati(dbahandle, handle, anaflag, dataflag, attrflag) Parameters: * `dbahandle`: The main DB-ALLe connection handle * `handle`: The session handle created by the function * `anaflag`: station values access level * `dataflag`: data values access level * `attrflag`: attribute access level Return value: The error indication for the function. Open a new session. You can call [idba_preparati()](#idba_preparati) many times and get more handles. This allows to perform many operations on the database at the same time. [idba_preparati()](#idba_preparati) has three extra parameters that can be used to limit write operations on the database, as a limited protection against programming errors: `anaflag` controls access to station value records and can have these values: * `"read"` station records cannot be inserted. * `"write"` it is possible to insert and delete pseudoana records. `dataflag` controls access to observed data and can have these values: * `"read"` data cannot be modified in any way. * `"add"` data can be added to the database, but existing data cannot be modified. Deletions are disabled. This is used to insert new data in the database while preserving the data that was already present in it. * `"write"` data can freely be added, overwritten and deleted. `attrflag` controls access to data attributes and can have these values: * `"read"` attributes cannot be modified in any way. * `"write"` attributes can freely be added, overwritten and deleted. Note that some combinations of parameters are illegal, such as anaflag=read and dataflag=add (when adding a new data, it's sometimes necessary to insert new pseudoana records), or dataflag=rewrite and attrflag=read (when deleting data, their attributes are deleted as well). #### idba_messaggi(handle, filename, mode, type) Parameters: * `handle`: The session handle returned by the function * `filename`: Name of the file to open * `mode`: File open mode. It can be `"r"` for read, `"w"` for write (the old file is deleted), `"a"` for append * `type`: Format of the data in the file. It can be: `"BUFR"`, `"CREX"`, `"AOF"` (read only), `"AUTO"` (autodetect, read only) Return value: The error indication for the function. Start working with a message file. #### idba_fatto(handle) Parameters: * `handle`: Handle to the session to be closed. Close a session. ### Input/output routines #### idba_seti(handle, parameter, value) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to set. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: The value to assign to the parameter Return value: The error indicator for the function Set an integer value in input. #### idba_setb(handle, parameter, value) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to set. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: The value to assign to the parameter Return value: The error indicator for the function Set a byte value in input. #### idba_setr(handle, parameter, value) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to set. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: The value to assign to the parameter Return value: The error indicator for the function Set a real value in input. #### idba_setd(handle, parameter, value) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to set. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: The value to assign to the parameter Return value: The error indicator for the function Set a real*8 value in input. #### idba_setc(handle, parameter, value) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to set. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: The value to assign to the parameter Return value: The error indicator for the function Set a character value in input. #### idba_enqi(handle, parameter, value) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to query. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: Where the value will be returned Return value: The error indicator for the function Read an integer value from the output. #### idba_enqb(handle, parameter, value) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to query. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: Where the value will be returned Return value: The error indicator for the function Read a byte value from the output. #### idba_enqr(handle, parameter, value) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to query. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: Where the value will be returned Return value: The error indicator for the function Read a real value from the output. #### idba_enqd(handle, parameter, value) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to query. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: Where the value will be returned Return value: The error indicator for the function Read a real*8 value from the output. #### idba_enqc(handle, parameter, value, value_len) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to query. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of an attribute prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) * `value`: Where the value will be returned Return value: The error indicator for the function Read a character value from the output. #### idba_unset(handle, parameter) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Parameter to remove. It can be the code of a WMO variable prefixed by `"B"` (such as `"B01023"`); the code of a QC value prefixed by `"*B"` (such as `"*B01023"`) or a keyword among the ones defined in [fapi_parms.md](fapi_parms.md) Return value: The error indicator for the function Remove one value from the input. #### idba_unsetb(handle) Parameters: * `handle`: Handle to a DB-All.e session Remove all Bxxyyy values from the input. #### idba_unsetall(handle) Parameters: * `handle`: Handle to a DB-All.e session Completely clear the input, removing all values. #### idba_setcontextana(handle) Parameters: * `handle`: Handle to a DB-All.e session Return value: The error indicator for the function Signal that the input values that are set are related to station values instead of normal variables. ### Input/output shortcuts #### idba_setlevel(handle, ltype1, l1, ltype2, l2) Parameters: * `handle`: Handle to a DB-All.e session * `ltype1`: Level type to set in the input record * `l1`: L1 to set in the input record * `ltype2`: Level type to set in the input record * `l2`: L2 to set in the input record Return value: The error indicator for the function Set all level information. #### idba_settimerange(handle, ptype, p1, p2) Parameters: * `handle`: Handle to a DB-All.e session * `ptype`: P indicator to set in the input record * `p1`: P1 to set in the input record * `p2`: P2 to set in the input record Return value: The error indicator for the function Set all time range information. #### idba_setdate(handle, year, month, day, hour, min, sec) Parameters: * `handle`: Handle to a DB-All.e session * `year`: Year to set in the input record * `month`: Month to set in the input * `day`: Day to set in the input * `hour`: Hour to set in the input * `min`: Minute to set in the input * `sec`: Second to set in the input Return value: The error indicator for the function Set all date information. #### idba_setdatemin(handle, year, month, day, hour, min, sec) Parameters: * `handle`: Handle to a DB-All.e session * `year`: Minimum year to set in the query * `month`: Minimum month to set in the query * `day`: Minimum day to set in the query * `hour`: Minimum hour to set in the query * `min`: Minimum minute to set in the query * `sec`: Minimum second to set in the query Return value: The error indicator for the function Set the minimum date for a query. #### idba_setdatemax(handle, year, month, day, hour, min, sec) Parameters: * `handle`: Handle to a DB-All.e session * `year`: Maximum year to set in the query * `month`: Maximum month to set in the query * `day`: Maximum day to set in the query * `hour`: Maximum hour to set in the query * `min`: Maximum minute to set in the query * `sec`: Maximum second to set in the query Return value: The error indicator for the function Set the maximum date for a query. #### idba_enqlevel(handle, ltype1, l1, ltype2, l2) Parameters: * `handle`: Handle to a DB-All.e session * `ltype1`: Type of the first level from the output record * `l1`: L1 from the output record * `ltype2`: Type of the second level from the output record * `l2`: L2 from the output record Return value: The error indicator for the function Read all level information. #### idba_enqtimerange(handle, ptype, p1, p2) Parameters: * `handle`: Handle to a DB-All.e session * `ptype`: P indicator from the output record * `p1`: P1 from the output record * `p2`: P2 from the output record Return value: The error indicator for the function Read all time range information. #### idba_enqdate(handle, year, month, day, hour, min, sec) Parameters: * `handle`: Handle to a DB-All.e session * `year`: Year from the output record * `month`: Month the output record * `day`: Day the output record * `hour`: Hour the output record * `min`: Minute the output record * `sec`: Second the output record Return value: The error indicator for the function Read all date information. ### Action routines #### idba_scopa(handle, repinfofile) Parameters: * `handle`: Handle to a DB-All.e session * `repinfofile`: CSV file with the default report informations. See dba_reset() documentation for the format of the file. Return value: The error indicator for the function Reinitialize the database, removing all data and loading report information. It requires the database to be opened in rewrite mode. #### idba_quantesono(handle, count) Parameters: * `handle`: Handle to a DB-All.e session * `count`: The count of elements Return value: The error indicator for the function Query the stations in the database. Results are retrieved using [idba_elencamele()](#idba_elencamele). There is no guarantee on the ordering of results of quantesono/elencamele. #### idba_elencamele(handle) Parameters: * `handle`: Handle to a DB-All.e session Return value: The error indicator for the function Retrieve the data about one station. After invocation, the output record is filled with information about the station and its station values. If there are no more stations to read, the function will fail with DBA_ERR_NOTFOUND. #### idba_voglioquesto(handle, count) Parameters: * `handle`: Handle to a DB-All.e session * `count`: Number of values returned by the function Return value: The error indicator for the function Query the data in the database. Results are retrieved using [idba_dammelo()](#idba_dammelo). Results are sorted by (in order): ana_id, datetime, level, time range, varcode. The ana_id changes slowest, and the varcode changes fastest. Ordering by ana_id effectively does grouping by station rather than ordering. Note that in V6 databases the ana_id corresponds to (latitude, longitude, ident), and does not include rep_memo, so in V6 databases the ordering is effectively: ana_id, rep_memo, datetime, level, time range, varcode. Sort order can change in the future, with the invariant that the slowest to change remains ana_id, followed by datetime, and the fastest to change remains the varcode. #### idba_dammelo(handle, parameter, parameter_len) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Contains the ID of the parameter retrieved by this fetch Return value: The error indicator for the function Retrieve the data about one value. After invocation, the output record is filled with information about the value. If there are no more values to read, the function will fail with DBA_ERR_NOTFOUND. #### idba_prendilo(handle) Parameters: * `handle`: Handle to a DB-All.e session Return value: The error indicator for the function Insert a new value in the database. This function will fail if the database is open in data readonly mode, and it will refuse to overwrite existing values if the database is open in data add mode. If the database is open in station reuse mode, the station values provided on input will be used to create a station record if it is missing, but will be ignored if it is already present. If it is open in station rewrite mode instead, the station values on input will be used to replace all the existing station values. #### idba_dimenticami(handle) Parameters: * `handle`: Handle to a DB-All.e session Return value: The error indicator for the function Remove from the database all values that match the query. This function will fail unless the database is open in data rewrite mode. #### idba_remove_all(handle) Parameters: * `handle`: Handle to a DB-All.e session Return value: The error indicator for the function Remove all values from the database. The difference with [idba_scopa()](#idba_scopa) is that it preserves the existing report information. #### idba_voglioancora(handle, count) Parameters: * `handle`: Handle to a DB-All.e session * `count`: Number of values returned by the function Return value: The error indicator for the function Query attributes about a variable. The variable queried is either: * the last variable returned by `None` * the last variable inserted by `None` * the variable selected by settings `*context_id` and `*var_related`. Results are retrieved using [idba_ancora()](#idba_ancora). #### idba_ancora(handle, parameter, parameter_len) Parameters: * `handle`: Handle to a DB-All.e session * `parameter`: Contains the ID of the parameter retrieved by this fetch Return value: The error indicator for the function Retrieve one attribute from the result of idba_voglioancora(). #### idba_critica(handle) Parameters: * `handle`: Handle to a DB-All.e session Return value: The error indicator for the function Insert new attributes for a variable. The variable is either: * the last variable returned by `None` * the last variable inserted by `None` * the variable selected by settings `*context_id` and `*var_related`. The attributes that will be inserted are all those set by the functions [idba_seti()](#idba_seti), [idba_setc()](#idba_setc), [idba_setr()](#idba_setr), [idba_setd()](#idba_setd), using an asterisk in front of the variable name. Contrarily to [idba_prendilo()](#idba_prendilo), this function resets all the attribute information (and only attribute information) previously set in input, so the values to be inserted need to be explicitly set every time. This function will fail if the database is open in attribute readonly mode, and it will refuse to overwrite existing values if the database is open in attribute add mode. #### idba_scusa(handle) Parameters: * `handle`: Handle to a DB-All.e session Return value: The error indicator for the function Remove attribute information for a variable. The variable is either: * the last variable returned by `None` * the last variable inserted by `None` * the variable selected by settings `*context_id` and `*var_related`. The attribute informations to be removed are selected with: ```fortran idba_setc(handle, "*varlist", "*B33021,*B33003"); ``` ### Message routines #### idba_messages_open_input(handle, filename, mode, format, simplified) Parameters: * `handle`: Handle to a DB-All.e session * `filename`: The file name * `mode`: The opening mode. See the mode parameter of libc's fopen() call for details. * `format`: The file format ("BUFR", "CREX", or "AOF") * `simplified`: true if the file is imported in simplified mode, false if it is imported in precise mode. This controls approximating levels and time ranges to standard values. Return value: The error indication for the function. Open a BUFR, CREX, or AOF file for reading. Each session can only have one open input file: if one was previously open, it is closed before opening the new one. #### idba_messages_open_output(handle, filename, mode, format) Parameters: * `handle`: Handle to a DB-All.e session * `filename`: The file name * `mode`: The opening mode. See the mode parameter of libc's fopen() call for details. * `format`: The file format ("BUFR", "CREX", or "AOF") Return value: The error indication for the function. Open a BUFR, CREX, or AOF file for writing. Each session can only have one open input file: if one was previously open, it is closed before opening the new one. #### idba_messages_read_next(handle, found) Parameters: * `handle`: Handle to a DB-All.e session * `found`: True if a message has been imported, false if we are at the end of the input file. Return value: The error indication for the function. Read the next message and import it in the database. The access mode of the session controls how data is imported: * station and data mode cannot be "read". * if data mode is "add", existing data will not be overwritten. * if attribute mode is "read", attributes will not be imported. #### idba_messages_write_next(handle, template_name) Parameters: * `handle`: Handle to a DB-All.e session * `template_name`: The template name used to decide the layout of variables in the messages that are exported. Return value: The error indication for the function. Export the data from the database that match the current query and add them to the current message. ### Pretty-printing routines #### idba_spiegal(handle, ltype1, l1, ltype2, l2, result, result_len) Parameters: * `handle`: Handle to a DB-All.e session * `ltype1`: Level type to set in the input record * `l1`: L1 to set in the input record * `ltype2`: Level type to set in the input record * `l2`: L2 to set in the input record * `result`: The string with the description of the level. Return value: The error indication for the function. Format the description of a level given its value. #### idba_spiegat(handle, ptype, p1, p2, result, result_len) Parameters: * `handle`: Handle to a DB-All.e session * `ptype`: P indicator to set in the input record * `p1`: P1 to set in the input record * `p2`: P2 to set in the input record * `result`: The string with the description of the time range. Return value: The error indication for the function. Format the description of a time range given its value. #### idba_spiegab(handle, varcode, value, result, result_len) Parameters: * `handle`: Handle to a DB-All.e session * `varcode`: B table code of the variable (`"Bxxyyy"`) * `value`: Value of the variable, as read with [idba_enqc()](#idba_enqc) * `result`: The string with the description of the time range. Return value: The error indication for the function. Format the description of a variable given its varcode and its value. dballe-7.21/doc/fapi_walkthrough.md0000644000175000017500000010511113022043102014216 00000000000000# A walk through the Fortran API ## Including the DB-All.e interface file If you work using Fortran 90, DB-All.e comes with an interface file that you can use to enable type checking on all the DB-All.e API. To make use of the interface file, just include it at the beginning of your program: ```fortran include "dballe/dballeff.h" ``` The Fortran 90 interface also allows to replace all the functions [idba_enqi][], [idba_enqr][], [idba_enqd][] and [idba_enqc][] with [idba_enq][] and to replace all the functions [idba_seti][], [idba_setr][], [idba_setd][] and [idba_setc][] with [idba_set][]. ## Error management * All errors are reported as function return values * All results are reported as output parameters * All functions `idba_set*` set the input of action routines * All functions `idba_enq*` get the output of action routines Errors can be handled by checking the return value of every function: ```fortran ! Example error handling ierr = idba_presentati(dbhandle, "dsn", "user", "password") if (ierr.ne.0) then ! handle the error... end if ``` Or they can be handled by installing a callback function that is automatically called in case of error: ```fortran ! How to set a callback ! * the first parameter is the error code that triggers the callback (0 ! means 'trigger on all errors') ! * the second parameter is the routine to call when the error happens ! (remember to declare the function as 'external' ! * the third parameter is a convenience arbitrary integer that will be ! passed to the function ! * the fourth parameter is used to return a handle that can be used to ! remove the callback ierr = idba_error_set_callback(0, error_handler, 42, cb_handle) ``` The previous code will setup DB-ALLe to call `error_handler` after any error, passing it the integer value 42. The callback can be removed at any time by calling [idba_error_remove_callback][]: ```fortran ! How to remove a callback ierr = idba_error_remove_callback(cb_handle) ``` This is a useful error handling function: ```fortran ! The error handler needs to be declared 'external' external error_handler ! Compute the length of a string ! (this is an utility function that is used by the error handler ! to print nicer error messages) integer function istrlen(string) character string*(*) istrlen = len(string) do while ((string(istrlen:istrlen).eq." " .or. $ string(istrlen:istrlen).eq."").and. $ istrlen.gt.0) istrlen = istrlen - 1 enddo return end ! Generic error handler: print all available information ! about the error, then exit subroutine error_handler(val) integer val character buf*1000 print *,ier," testcb in ",val call idba_error_message(buf) print *,buf(:istrlen(buf)) call idba_error_context(buf) print *,buf(:istrlen(buf)) call idba_error_details(buf) print *,buf(:istrlen(buf)) call exit (1) return end ``` This code introduces three new functions: * [idba_error_message][]: returns a string describing what type of error has happened. * [idba_error_context][]: returns a string describing what DB-All.e was trying to do when the error happened. * [idba_error_details][]: returns a detailed description of the error, when available. If no detailed description is available, it returns an empty string. A similar error handling behaviour can be obtained by using the predefined convenience function [idba_default_error_handler][]: ```fortran ! Declare the external function (not necessary if you include dballeff.h) external idba_default_error_handler ! Use it as the error handling callback ierr = idba_error_set_callback(0, idba_default_error_handler, 1, cb_handle) ``` An alternative error handler called [idba_error_handler_tolerating_overflows][] is available: it exists on all errors instead of value overflows, in what case it prints a warning to standard error and allows the program to continue. The overflow error can then be catched, if needed, by inspecting the error code returned by the DB-All.e function that causes the error. This is how to use it: ```fortran ! Declare the external function (not necessary if you include dballeff.h) external idba_error_handler_tolerating_overflows ! Use it as the error handling callback ierr = idba_error_set_callback(0, idba_error_handler_tolerating_overflows, 1, cb_handle) ``` ## Starting the work Before any action routine, you need to connect to the database. Connecting to the database will give you a *handle* that you can use to open sessions. This code will open a connection with DB-All.e, then it will start a session: ```fortran ! Connect to the database and get a handle to work with it ierr = idba_presentati(dbhandle, "url", "ignored", "ignored") ierr = idba_preparati(dbhandle, handle, "read", "read", "read") ! ...do your work... ! End of the work ierr = idba_fatto(handle) ierr = idba_arrivederci(dbhandle) ``` You call [idba_presentati][] to connect to the databse. The parameters are the [database connection URL](fapi_connect.md), and two parameters that were used in the past and are now ignored. You can call [idba_preparati][] many times and get more handles. This allows to perform many operations on the database at the same time. [idba_preparati][] has three extra parameters that can be used to limit write operations on the database, as a limited protection against programming errors. The first extra parameter controls access to station values and can have these values: * `"read"`: station values cannot be modified. * `"write"`: station values can be added and removed. The second extra parameter control access to observed data and can have these values: * `"read"`: data cannot be modified in any way. * `"add"`: data can be added to the database, but existing data cannot be modified. Deletions are disabled. This is used to insert new data in the database while preserving the data that was already present in it. * `"write"`: data can freely be added, overwritten and deleted. The third extra parameter controls access to data attributes and can have these values: * `"read"`: attributes cannot be modified in any way. * `"write"`: attributes can freely be added, overwritten and deleted. Note that some combinations are illegal. For example, you cannot have "read" on station values and "add" on data, because when adding a new data, it is sometimes necessary to insert new station records). You also cannot have "rewrite" on data and "read` on attributes, because when deleting data, their attributes are deleted as well. ## Starting the work on a message Instead of connecting to a database, you can use the DB-All.e API to read and write message reports in BUFR, CREX format, and read, but not write, messages in AOF format. To do that, use [idba_messaggi][] instead of both [idba_presentati][] and [idba_preparati][]. To write a message, your code will look like: ```fortran ! Connect to the database and get a handle to work with it ierr = idba_messaggi(handle, "file.bufr", "r", "auto") ! ...do your work... ! End of the work ierr = idba_fatto(handle) ``` [idba_messaggi][] has three parameters: 1. the name of the file to open 2. the open mode ("r" for read, "w" for write or create, "a" for append). See the documentation of libc's `fopen` for more details. 3. the file format. It can be "BUFR", "CREX", "AOF" or "AUTO". "AUTO" tells DB-All.e to autodetect the file format, but it only works when reading files, not when writing new one. You can call [idba_messaggi][] many times and read or write many files. You can even call [idba_messaggi][] many time on the same file as long as you open it read only. Once you open a file, you can use the other DB-All.e functions on it. There are slight differences between working on a database and working on a file, and they are explained later in the section [Working with files](#db_file_differences). ## Setting input and reading output Input to action routines is done using the functions `idba_set*`, and output is read with the functions `idba_enq*` (see [the introduction](fapi_concepts.md#routines)): ```fortran ! Set the extremes of an area and retrieve all the stations in it ierr = idba_setd(handle, "latmin", 30.D0) ierr = idba_setd(handle, "latmax", 50.D0) ierr = idba_setd(handle, "lonmin", 10.D0) ierr = idba_setd(handle, "lonmax", 20.D0) ierr = idba_quantesono(handle, count) ! Get the informations about a station do while (count.gt.0) ierr = idba_elencamele(handle) ierr = idba_enqc(handle, "name", cname) ierr = idba_enqi(handle, "ana_id", id) ierr = idba_enqd(handle, "lat", lat) ierr = idba_enqd(handle, "lon", lon) ! .... count = count - 1 enddo ``` Note that, when one uses [idba_setc][], [idba_seti][], [idba_enqc][], [idba_enqi][] with parameters that have some decimal digits, DB-All.e will work with values as if they did not have a decimal point. That is, if latitude `10.124323` is read with [idba_enqi][], then the result will be `10124323`. The following example shows what happens: ```fortran ! Set the latitude to 30.0 degrees ierr = idba_setr(handle, "lat", 30.0) ! Set the latitude to 30.0 degrees ierr = idba_setd(handle, "lat", 30.0D0) ! Set the latitude to 0.00030 degrees ierr = idba_seti(handle, "lat", 30) ! Set !the latitude to 30.0 degrees ierr = idba_seti(handle, "lat", 3000000) ! Set the latitude to 0.00030 degrees ierr = idba_setc(handle, "lat", "30") ! Set the latitude to 30.0 degrees ierr = idba_setc(handle, "lat", "3000000") ``` ## Input/output shortcuts There are a few functions that are shortcuts to other input and output functions: `idba_enqdate(handle, year, month, day, hour, minute, second)` is a shortcut to: ```fortran idba_enqi(handle, "year", year) idba_enqi(handle, "month", month) idba_enqi(handle, "day", day) idba_enqi(handle, "hour", hour) idba_enqi(handle, "min", minute) idba_enqi(handle, "sec", second) ``` `idba_setdate(handle, year, month, day, hour, minute, second)` is a shortcut to: ```fortran idba_seti(handle, "year", year) idba_seti(handle, "month", month) idba_seti(handle, "day", day) idba_seti(handle, "hour", hour) idba_seti(handle, "min", minute) idba_seti(handle, "sec", second) ``` `idba_enqlevel(handle, type1, l1, type2, l2)` is a shortcut to: ```fortran idba_enqi(handle, "leveltype1", type1) idba_enqi(handle, "l1", l1) idba_enqi(handle, "leveltype2", type2) idba_enqi(handle, "l2", l2) ``` `idba_setlevel(handle, type1, l1, type2, l2)` is a shortcut to: ```fortran idba_seti(handle, "leveltype1", type1) idba_seti(handle, "l1", l1) idba_seti(handle, "leveltype2", type2) idba_seti(handle, "l2", l2) ``` `idba_enqtimerange(handle, type, p1, p2)` is a shortcut to: ```fortran idba_enqi(handle, "pindicator", type) idba_enqi(handle, "p1", p1) idba_enqi(handle, "p2", p2) ``` `idba_settimerange(handle, type, p1, p2)` is a shortcut to: ```fortran idba_seti(handle, "pindicator", type) idba_seti(handle, "p1", p1) idba_seti(handle, "p2", p2) ``` ## Parameter names There are three different kinds of parameter names one can use: * [DB-All.e parameters](fapi_parms.md), that have a special meaning to DB-All.e: for example they can be part of the coordinate system, or space/time extremes to use to query the database. They are indicated simply with their name (for example, `"lat"` or `"yearmin"`). * [WMO table B variables](fapi_btable.md), represent all possible sorts of observed data, and are indicated in the form `Bxxyyy`, where `xxyyy` are the X and Y values from the WMO table B. * [Variable aliases](fapi_aliases.md) that are short, easy to remember names which can be used instead of frequently used WMO B variables. ## Queries and observed data The `idba_set*` and `idba_enq*` functions can also be used to set and get observation data. To do so, use as parameter the string `"Bxxyyy"`, where `xx` and `yyy` are the X and Y values of the BUFR/CREX table B describing the observed data. For example: ```fortran ! Set the speed of the wind (very useful in summer) ierr = idba_setr(handle, "B11002", 1.8) ! Also set the temperature ierr = idba_setr(handle, "B12001", 21.8) ierr = idba_prendilo(handle) ``` ## Attributes The [idba_set][] and [idba_enq][] groups of functions can also be used to set and get attributes on data. To do so, use as parameter the string `"*Bxxyyy"`, where `xx` and `yyy` are the X and Y values of the BUFR/CREX table B describing the attribute. For example: ```fortran ! Set the confidence of the wind speed value we inserted ! in the last 'idba_prendilo' ierr = idba_setr(handle, "*B33007", 75.0) ierr = idba_setc(handle, "*var_related", "B11002") ierr = idba_critica(handle) ``` ## Querying the database Queries are made by giving one or more extremes of space, time, level or time range. See [the parameter table](fapi_parms.md) for a list of all available query parameters, in the column "On query input". ## Querying the station values Example code to query all the stations in a given area: ```fortran ierr = idba_setd(handle, "latmin", 30.D0) ierr = idba_setd(handle, "latmax", 50.D0) ierr = idba_setd(handle, "lonmin", 10.D0) ierr = idba_setd(handle, "lonmax", 20.D0) ierr = idba_quantesono(handle, count) do while (count.gt.0) ierr = idba_elencamele(handle) ierr = idba_enqi(handle, "ana_id", id) ! Pseudoana values can be read as well: ierr = idba_enqc(handle, "name", cname) ierr = idba_enqd(handle, "B07001", height) ! ...query more data and work with it... count = count - 1 enddo ``` This code introduces two new functions: * [idba_quantesono][]: performs the query and returns the number of stations it finds. * [idba_elencamele][]: gets a station out of the results of [idba_quantesono][]. If there are no more stations, the function fails. After [idba_elencamele][], the output record will also contain all the pseudoana values available for the station. If `rep_cod` or `rep_memo` are specified as query parameters, the pseudoana values of that network will be used. Else, [idba_elencamele][] will use all available pseudoana values, choosing the one in the network with the highest priority in case the same pseudoana value is available on more than one network. ## Querying the values Example code to query all the values in a given area and time: ```fortran ierr = idba_seti(handle, "latmin", 30) ierr = idba_seti(handle, "latmax", 50) ierr = idba_seti(handle, "lonmin", 10) ierr = idba_seti(handle, "lonmax", 20) ierr = idba_seti(handle, "yearmin", 2004) ierr = idba_seti(handle, "yearmax", 2004) ierr = idba_voglioquesto(handle, count) do while (count.gt.0) ierr = idba_dammelo(handle, param) ! get the value of this variable ierr = idba_enqc(handle, param, cvalue) ierr = idba_enqd(handle, "lat", dlat) ierr = idba_enqd(handle, "lon", dlon) ! query more data and work with it count = count - 1 enddo ``` This code introduces two new functions: * [idba_voglioquesto][]: performs the query and returns the number of values it finds. * [idba_dammelo][]: gets a value out of the result of [idba_voglioquesto][]. If there are no more stations, the function fails. ## Clearing the database You can initialise or reinitialise the database using [idba_scopa][]: ```fortran ! Start the work with a clean database ierr = idba_scopa(handle, "repinfo.csv") ``` [idba_scopa][] clears the database if it exists, then recreates all the needed tables. Finally, it populates the informations about the reports (such as the available report types, their mnemonics and their priority) using the data in the file given as argument. The file is in CSV format, with 6 columns: 1. Report code (corresponding to parameter `rep_cod`) 2. Mnemonic name (corresponding to parameter `rep_memo`) 3. Report description 4. Report priority (corresponding to parameter `priority`) 5. Ignored 6. Ignored If `""` is given instead of the file name, [idba_scopa][] will read the data from `/etc/repinfo.csv`. This is an example of the contents of the file: ```csv 01,synop,report synottico,100,oss,0 02,metar,metar,80,oss,0 03,temp,radiosondaggio,100,oss,2 04,ana_lm,valori analizzati LM,-1,ana,255 05,ana,analisi,-10,pre,255 06,pre_cleps_box1.5maxel001,previsti cosmo leps box 1.5 gradi valore max elemento 1,-1,pre,255 07,pre_lmn_box1.5med,previzione Lokal Model nudging box 1.5 gradi valore medio,-1,pre,255 08,pre_lmp_spnp0,previsione Lkal Model prognostica interpolato punto piu' vicino,-1,pre,255 09,boe,dati omdametrici,100,oss,31 ``` [idba_scopa][] will not work unless `rewrite` has been enabled for the data when opening the database. ## Inserting data Data is inserted using [idba_prendilo][]: ```fortran ! Insert a new data in the database ierr = idba_setr(handle, "ana_id", 4) ierr = idba_setr(handle, "rep_memo", "synop") ierr = idba_setd(handle, "lat", 44.500D0) ierr = idba_setd(handle, "lon", 11.328D0) ierr = idba_setr(handle, "year", 2005) ierr = idba_setr(handle, "month", 7) ierr = idba_setr(handle, "day", 26) ... ierr = idba_setr(handle, "B11002", 1.8) ierr = idba_prendilo(handle) ``` This code introduces a new function: * [idba_prendilo][]: inserts a new value in the database. All the information about the parameter to insert is taken from the input previously set by `idba_set*` functions. When data of the same kind and with the same characteristics already exists, the behaviour of [idba_prendilo][] is defined by the parameter passed to [idba_preparati][] when creating the handle. See [Starting the work](#ch_work_start) for more informations. [idba_prendilo][] will work in different ways according to the data opening mode of the database: * `read`: causes an error, because the data cannot be read. * `add`: new data can be inserted, but causes an error when trying to insert a value that already exists. * `rewrite`: new data can be inserted, and existing data is overwritten. Also, behaviour changes according to the station values opening mode: * `"reuse"`: when inserting data, if an existing pseudoana record for the data is found, it will be reused. * `"rewrite"`: when inserting data, if an existing pseudoana record for the data is found, it will be completely overwritten with the parameters in input. Note that the database cannot be opened in pseudoana `read` mode when data is `add` or `rewrite`. ## Deleting data Data is deleted using [idba_dimenticami][]: ```fortran ! Delete all data from the station with id 4 in year 2002 ierr = idba_seti(handle, "ana_id", 4) ierr = idba_seti(handle, "year", 2002) ierr = idba_dimenticami(handle) ``` This code introduces a new function: * [idba_dimenticami][]: deletes all the data found in the extremes specified in input. [idba_dimenticami][] will not work unless `rewrite` has been enabled for the data when opening the database. ## Reading attributes Attributes are read using [idba_ancora][]: ```fortran ! ...setup a query... idba_voglioquesto(handle, count) do while (count.gt.0) ierr = idba_dammelo(handle, param) ! Read QC informations about the last value read ierr = idba_voglioancora(handle, qc_count) do while (qc_count.gt.0) ierr = idba_ancora(handle, param) ierr = idba_enqc(handle, param, value) ! ...process the value... qc_count = qc_count - 1 enddo count = count - 1 enddo ``` This code introduces two new functions: * [idba_voglioancora][]: Performs a query to retrieve attributes for the last variable read by [idba_dammelo][]. It returns the number of attributes available. * [idba_ancora][]: Retrieves one by one the values queried by [idba_voglioancora][] if there are no more items available, the function will fail. The parameter `param` will be set to the name (in the form `*Bxxyyy`) of the attribute just read. It is possible to read attributes at a later time giving a context ID and a B table value: ```fortran ! Read the context ID after a prendilo or a dammelo idba_enqi(handle, "context_id", id) ! ...a while later... ! Query the attributes of the variable with the given ! context ID and B table value idba_seti(handle, "*context_id", id) idba_seti(handle, "*var_related", "B12001") ! These are ways one could choose specific attributes: ! one attribute: idba_setc(handle, "*var", "B33007") ! some attributes: idba_setc(handle, "*varlist", "B33007,B33036") ! by default, all attributes are returned ! Read QC informations about the last value read ierr = idba_voglioancora(handle, qc_count) do while (qc_count.gt.0) ierr = idba_ancora(handle, param) ierr = idba_enqc(handle, param, value) ! ...process the value... qc_count = qc_count - 1 enddo ``` ## Writing attributes Attributes are written using [idba_critica][], which can be used after an [idba_dammelo][], after an [idba_prendilo][] or at any time using a stored data id. These three case differ on how to communicate to [idba_critica][] what is the data about which to write attributes. When used after [idba_dammelo][], [idba_critica][] can refer directly to the last data retrieved: ```fortran ! ...setup a query... ierr = idba_voglioquesto(handle, count) do while (count.gt.0) ierr = idba_dammelo(handle, param) ! ...process data... ! Set the attributes ierr = idba_seti(handle, "*B33007", 75) ierr = idba_seti(handle, "*B33006", 42) ierr = idba_critica(handle) count = count - 1 enddo ``` After an [idba_prendilo][] instead, since [idba_prendilo][] can write more than one data at a time, we need to tell [idba_critica][] which of them we are referring to: ```fortran ! Insert wind speed and temperature ierr = idba_setr(handle, "B11002", 1.8) ierr = idba_setr(handle, "B12001", 22) ierr = idba_prendilo(handle) ! Set the attributes ierr = idba_seti(handle, "*B33007", 75) ! Use "*var_related" to indicate which of the two variables we are annotating ierr = idba_setc(handle, "*var_related", "B11002") ierr = idba_critica(handle) ``` [idba_critica][] can also be called at any time using a previously stored data it: ```fortran ! ...perform a query with idba_voglioquesto... do while (count.gt.0) ierr = idba_dammelo(handle, param) ! ...process data... ! This variable is interesting: save the context ID ! to refer to it later ierr = idba_enqi(handle, "context_id", saved_id) count = count - 1 enddo ! ...some time later... ! Insert attributes about that interesting variable ierr = idba_seti(handle, "*B33007", 75) ierr = idba_seti(handle, "*B33006", 42) ! Select the variable using its context id ! and variable code ierr = idba_seti(handle, "*context_id", saved_id) ierr = idba_seti(handle, "*var_related", "B11001") ierr = idba_critica(handle) ``` This code introduces a new function: * [idba_critica][] Set one or more attributes about a variable. The variable can be identified directly by using `idba_seti(handle, "*context_id", id)` and `idba_seti(handle, "*var_related", name)`. These parameters are automatically set by the [idba_dammelo][] and [idba_prendilo][] action routines. The attributes and values are set as input to [idba_critica][] using the `idba_set*` functions with an asterisk in front of the variable name. [idba_critica][] will work in different ways according to the attributes opening mode of the database: * `"read"`: attributes cannot be modified in any way. * `"rewrite"`: attributes can be added, and existing attributes can be overwritten. ## Deleting attributes Attributes are deleted using [[idba_scusa][]](fapi_reference.md#idba_scusa): ```fortran ! Delete the confidence interval from the wind speed ! The referring variable is identified in the same way as with ! idba_critica: ierr = idba_seti(handle, "*context_id", saved_id) ierr = idba_seti(handle, "*var_related", "B11002") ! The attributes to delete are selected by setting "*varlist": ierr = idba_setc(handle, "*varlist", "*B33007") ierr = idba_scusa(handle) ``` This code introduces a new function: * [idba_scusa][]: Delete attributes from a variable identified in the same way as with [idba_scusa][] will not work unless the database has been opened in attribute `rewrite` mode. ## Ending the work When you are finished working with a handle, you release it with [idba_fatto][]: ```fortran ! We are finished with this handle ierr = idba_fatto(handle) ``` When you are finished working with DB-ALLe, you use [idba_arrivederci][] to close all connections and release all resources: ```fortran ! We do not need to work with dballe anymore ierr = idba_arrivederci(dbh) ``` ## Shortcuts to stations and data DB-All.e offers two shortcuts to represent pseudoana entries and data in the database: the `ana_id` and the `data_id` keys, that are set in the output of every [idba_dammelo][]. `ana_id` represents a pseudoana entry. Every time one needs to specify a set of latitude, longitude, fixed/mobile, one could use the corresponding `ana_id` value, if known, and get a faster search. `data_id` represents a data entry. Every time one needs to identify some data setting latitude, longitude, level layer, time range and so on, one can just provide the value of `data_id`, and also get a faster search. ## Helpers for pretty printing There are a number of functions in DB-All.e, the `idba_spiega\*` group of functions, that are not needed for normal processing but can be useful to improve the presentation of data to users. All these function take a number of parameters and a string, and they store a proper description of the values into the string. The functions are: * `idba_spiegal(handle,ltype1,l1,ltype2,l2,string)`: Describes a level. For example, `idba_spiegal(handle,106,10,106,20,string)` will store in `string` something like: *"Layer between 10hm and 20hm above ground"*. * `idba_spiegat(handle,ptype,p1,p2,string)`: Describes a time range. For example, `idba_spiegat(handle,3,0,600,string)` will store in `string` something like: *"Average between reference time+0s to reference time+600s"*. * `idba_spiegab(handle,varcode,value,string)`: Describe a value. For example, `idba_spiegab(handle,"B12001","280",string)` will store in `string` something like: *"280 (K) TEMPERATURE/DRY-BULB TEMPERATURE"*. ## Modifiers for queries DB-All.e allows to set special query behaviours using the `"query"` parameter. The available options are: * `best`: When measures from different kinds of reports exist in the same physical space, do not return them all, but only return the one of the record type with the highest priority. ## Working with files This is a list of the differences between working with files and working with databases: * You do not need to call [idba_presentati][] and [idba_arrivederci][]: the work session starts at [idba_messaggi][] and ends at [idba_fatto][] * When reading, performing [idba_quantesono][] or [idba_voglioquesto][] a second time advances to the next message in the file. * Query parameters set before an [idba_voglioquesto][] have no effect: filtering data is not implemented for files. Since it may be implemented in the future, it is suggested to avoid setting query parameters before an [idba_voglioquesto][] to avoid unexpected changes of behaviour with future versions of DB-All.e. * When reading, you will see that there are no more messages because [idba_quantesono][] or [idba_voglioquesto][] will return 0. * When writing, you can use the `query` input parameter to [idba_prendilo][] to control when a new message is started. If you set it to `subset`, then the data will be inserted in a new BUFR or CREX subset. If you set it to `message`, you will start a new message. After `"message"` you can specify a template for the message, using one of the names listed by `dbadb export -t list`, for example: `"message generic"`. If you do not specify a template name, an appropriate template will automatically be chosen for you. * Setting `rep_memo` you can influence the output template of messages: if you set it to a synop report code, you will create a synop message. ## Code examples ### Insert station data, then insert data ```fortran ierr = idba_preparati(dbhandle, handle, "write", "add", "write") ! Insert data about a station ierr = idba_setr (handle, "lat", 11.345) ierr = idba_setr (handle, "lon", 44.678) ierr = idba_setr (handle, "height", 23) ierr = idba_prendilo (handle) ! Read the station ID for the station we just inserted ! Use *ana_id instead of ana_id after an idba_prendilo ierr = idba_enqi (handle, "*ana_id", anaid) ! Reset the input data ierr = idba_unsetall (handle) ! Add data to the station we just inserted ierr = idba_seti (handle, "ana_id", anaid) ierr = idba_setlevel (handle, 100, 1, 0, 0) ierr = idba_settimerange (handle, 0, 0, 0) ierr = idba_setdate (handle, 2006, 06, 20, 19, 30, 0) ierr = idba_seti (handle, "t", 21) ierr = idba_setc (handle, "B12345", "ciao") ierr = idba_prendilo (handle) ``` ### Query data, then query station data ```fortran ierr = idba_preparati(dbhandle, handle, "read", "read", "read") ierr = idba_preparati(dbhandle, handleana, "read", "read", "read") ! Prepare a query ierr = idba_setd (handle, "latmin", 10) ... ierr = idba_setd (handle, "lonmax", 60) ! Make the query ierr = idba_voglioquesto (handle, N) ! Iterate the results do i=1,N ierr = idba_dammelo (handle, varname) ! Read data about the variable we just had ierr = idba_enqlevel (handle, ltype, l1, l2) ! Read pseudoana data about the variable we just had ! Setup a query for the station with 'quantesono' ierr = idba_enqi (handle, "ana_id", anaid) ierr = idba_seti (handleana, "ana_id", anaid) ! Query. Nstaz should always be 1 because we query a specific station ierr = idba_quantesono (handleana, Nstaz) ! Fetch the data ierr = idba_elencamele (handleana) ! Read the data about the station ! All the data inserted with setcontextana is available here ierr = idba_enqi (handleana, "height", height) enddo ``` # FAQ and Troubleshooting ## How do I access the station values? There are two ways: If you know in advances what variables you want to read, you can find them among the results of [idba_elencamele][]: ```fortran ! Query station data ierr = idba_quantesono(handle, count) ! Get the informations about a station do i=1,count ierr = idba_elencamele(handle) ierr = idba_enqc(handle, "name", cname) ierr = idba_enqi(handle, "B02001", type) ! .... enddo ``` If you want to see all the extra station data available, you can make an explicit query for the extra station data using [idba_voglioquesto][] and [idba_dammelo][]: ```fortran ierr = idba_seti("ana_id", id) ierr = idba_voglioquesto(handle, count) do i=1,count ierr = idba_dammelo(handle, param) ! get the value of this variable ierr = idba_enqc(handle, param, cvalue) print*,param,": ",cvalue enddo ``` [idba_error_code]: fapi_reference.md#idba_error_code [idba_error_message]: fapi_reference.md#idba_error_message [idba_error_context]: fapi_reference.md#idba_error_context [idba_error_details]: fapi_reference.md#idba_error_details [idba_error_set_callback]: fapi_reference.md#idba_error_set_callback [idba_error_remove_callback]: fapi_reference.md#idba_error_remove_callback [idba_default_error_handler]: fapi_reference.md#idba_default_error_handler [idba_error_handle_tolerating_overflows]: fapi_reference.md#idba_error_handle_tolerating_overflows [idba_presentati]: fapi_reference.md#idba_presentati [idba_arrivederci]: fapi_reference.md#idba_arrivederci [idba_preparati]: fapi_reference.md#idba_preparati [idba_messaggi]: fapi_reference.md#idba_messaggi [idba_fatto]: fapi_reference.md#idba_fatto [idba_seti]: fapi_reference.md#idba_seti [idba_setb]: fapi_reference.md#idba_setb [idba_setr]: fapi_reference.md#idba_setr [idba_setd]: fapi_reference.md#idba_setd [idba_setc]: fapi_reference.md#idba_setc [idba_enqi]: fapi_reference.md#idba_enqi [idba_enqb]: fapi_reference.md#idba_enqb [idba_enqr]: fapi_reference.md#idba_enqr [idba_enqd]: fapi_reference.md#idba_enqd [idba_enqc]: fapi_reference.md#idba_enqc [idba_unset]: fapi_reference.md#idba_unset [idba_unsetb]: fapi_reference.md#idba_unsetb [idba_unsetall]: fapi_reference.md#idba_unsetall [idba_setcontextana]: fapi_reference.md#idba_setcontextana [idba_setlevel]: fapi_reference.md#idba_setlevel [idba_settimerange]: fapi_reference.md#idba_settimerange [idba_setdate]: fapi_reference.md#idba_setdate [idba_setdatemin]: fapi_reference.md#idba_setdatemin [idba_setdatemax]: fapi_reference.md#idba_setdatemax [idba_enqlevel]: fapi_reference.md#idba_enqlevel [idba_enqtimerange]: fapi_reference.md#idba_enqtimerange [idba_enqdate]: fapi_reference.md#idba_enqdate [idba_scopa]: fapi_reference.md#idba_scopa [idba_quantesono]: fapi_reference.md#idba_quantesono [idba_elencamele]: fapi_reference.md#idba_elencamele [idba_voglioquesto]: fapi_reference.md#idba_voglioquesto [idba_dammelo]: fapi_reference.md#idba_dammelo [idba_prendilo]: fapi_reference.md#idba_prendilo [idba_dimenticami]: fapi_reference.md#idba_dimenticami [idba_remove_all]: fapi_reference.md#idba_remove_all [idba_voglioancora]: fapi_reference.md#idba_voglioancora [idba_ancora]: fapi_reference.md#idba_ancora [idba_critica]: fapi_reference.md#idba_critica [idba_scusa]: fapi_reference.md#idba_scusa [idba_messages_open_input]: fapi_reference.md#idba_messages_open_input [idba_messages_open_output]: fapi_reference.md#idba_messages_open_output [idba_messages_read_next]: fapi_reference.md#idba_messages_read_next [idba_messages_write_next]: fapi_reference.md#idba_messages_write_next [idba_spiegal]: fapi_reference.md#idba_spiegal [idba_spiegat]: fapi_reference.md#idba_spiegat [idba_spiegab]: fapi_reference.md#idba_spiegab dballe-7.21/doc/Makefile.in0000644000175000017500000004612513022512015012420 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @DO_DOCS_TRUE@am__append_1 = $(generic_mds) libdballe.doxytags \ @DO_DOCS_TRUE@ $(fapisources) @DO_DOCS_TRUE@am__append_2 = $(generic_mds) $(fapisources) \ @DO_DOCS_TRUE@ make_fortran_reference doxy2swig.py \ @DO_DOCS_TRUE@ add_templates_to_manpage introduzione.odt @DO_DOCS_TRUE@am__append_3 = libdballe.doxytags libwreport.doxytags \ @DO_DOCS_TRUE@ record_keyword.dox aliases.dox ltypes.dox \ @DO_DOCS_TRUE@ tranges.dox libdballef.doxytags \ @DO_DOCS_TRUE@ doxygen_sqlite3.db subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/m4_ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = libdballe.dox libdballef.dox CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(doc_DATA) $(noinst_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/libdballe.dox.in \ $(srcdir)/libdballef.dox.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDBALLEF_VERSION_INFO = @LIBDBALLEF_VERSION_INFO@ LIBDBALLE_VERSION_INFO = @LIBDBALLE_VERSION_INFO@ LIBOBJS = @LIBOBJS@ LIBPQ_CFLAGS = @LIBPQ_CFLAGS@ LIBPQ_LIBS = @LIBPQ_LIBS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MYSQL_CFLAGS = @MYSQL_CFLAGS@ MYSQL_LIBS = @MYSQL_LIBS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ WREPORT_CFLAGS = @WREPORT_CFLAGS@ WREPORT_LIBS = @WREPORT_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_doxygen = @have_doxygen@ have_gperf = @have_gperf@ have_rst2html = @have_rst2html@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mysql_config = @mysql_config@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ tabledir = @tabledir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ doc_DATA = $(am__append_1) noinst_DATA = EXTRA_DIST = mksnippet $(am__append_2) CLEANFILES = $(am__append_3) # Generic documentation @DO_DOCS_TRUE@generic_mds = dballe_env.md # C++ API documentation @DO_DOCS_TRUE@cppdeps = libdballe.dox \ @DO_DOCS_TRUE@ record_keyword.dox \ @DO_DOCS_TRUE@ aliases.dox \ @DO_DOCS_TRUE@ ltypes.dox \ @DO_DOCS_TRUE@ tranges.dox \ @DO_DOCS_TRUE@ libwreport.doxytags # Fortran API documentation @DO_DOCS_TRUE@fapisources = fapi.md fapi_concepts.md fapi_walkthrough.md fapi_reference.md \ @DO_DOCS_TRUE@ fapi_parms.md fapi_aliases.md fapi_connect.md fapi_ltypes.md \ @DO_DOCS_TRUE@ fapi_tranges.md fapi_btable.md @DO_DOCS_TRUE@fortrandeps = libdballef.dox all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): libdballe.dox: $(top_builddir)/config.status $(srcdir)/libdballe.dox.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ libdballef.dox: $(top_builddir)/config.status $(srcdir)/libdballef.dox.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @DO_DOCS_FALSE@install-data-local: @DO_DOCS_FALSE@uninstall-local: @DO_DOCS_FALSE@clean-local: clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-docDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-docDATA uninstall-local .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ clean-local cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-local install-docDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-docDATA uninstall-local .PRECIOUS: Makefile @DO_DOCS_TRUE@record_keyword.dox: $(top_builddir)/dballe/core/record_keyword.gperf mksnippet @DO_DOCS_TRUE@ $(top_srcdir)/doc/mksnippet key dox < $< > $@ || rm $@ @DO_DOCS_TRUE@aliases.dox: $(top_srcdir)/dballe/core/aliases.gperf mksnippet @DO_DOCS_TRUE@ $(top_srcdir)/doc/mksnippet alias dox < $< > $@ || rm $@ @DO_DOCS_TRUE@ltypes.dox: $(top_srcdir)/dballe/msg/ltypes.txt mksnippet @DO_DOCS_TRUE@ $(top_srcdir)/doc/mksnippet levels dox < $< > $@ || rm $@ @DO_DOCS_TRUE@tranges.dox: mksnippet @DO_DOCS_TRUE@ $(top_srcdir)/doc/mksnippet tranges dox > $@ || rm $@ @DO_DOCS_TRUE@libdballe.doxytags: $(cppdeps) @DO_DOCS_TRUE@ doxygen $< @DO_DOCS_TRUE@libwreport.doxytags: $(wildcard /usr/share/doc/*wreport*/libwreport.doxytags*) @DO_DOCS_TRUE@ if [ -z "$<" ]; then \ @DO_DOCS_TRUE@ ( echo "/usr/share/doc/*wreport*/libwreport.doxytags* not found" >&2 ; exit 1 ); \ @DO_DOCS_TRUE@ elif [ `basename "$<"` = libwreport.doxytags.gz ]; then \ @DO_DOCS_TRUE@ zcat $< > $@ ; \ @DO_DOCS_TRUE@ else \ @DO_DOCS_TRUE@ cat $< > $@ ; \ @DO_DOCS_TRUE@ fi @DO_DOCS_TRUE@libdballef.doxytags: $(fortrandeps) @DO_DOCS_TRUE@ doxygen $< @DO_DOCS_TRUE@fapi_reference.md: $(top_srcdir)/doc/make_fortran_reference libdballef.doxytags @DO_DOCS_TRUE@ $< > $@ fortran_xml || rm $@ @DO_DOCS_TRUE@fapi_parms.md: $(top_builddir)/dballe/core/record_keyword.gperf mksnippet @DO_DOCS_TRUE@ $(top_srcdir)/doc/mksnippet key md < $< > $@ || rm $@ @DO_DOCS_TRUE@fapi_aliases.md: $(top_srcdir)/dballe/core/aliases.gperf mksnippet @DO_DOCS_TRUE@ $(top_srcdir)/doc/mksnippet alias md < $< > $@ || rm $@ @DO_DOCS_TRUE@fapi_ltypes.md: $(top_srcdir)/dballe/msg/ltypes.txt mksnippet @DO_DOCS_TRUE@ $(top_srcdir)/doc/mksnippet levels md < $< > $@ || rm $@ @DO_DOCS_TRUE@fapi_tranges.md: mksnippet @DO_DOCS_TRUE@ $(top_srcdir)/doc/mksnippet tranges md > $@ || rm $@ @DO_DOCS_TRUE@fapi_btable.md: ../tables/dballe.txt mksnippet @DO_DOCS_TRUE@ $(top_srcdir)/doc/mksnippet btable md < $< > $@ || rm $@ # make install machinery @DO_DOCS_TRUE@install-data-local: @DO_DOCS_TRUE@ test -d c_api && \ @DO_DOCS_TRUE@ $(mkinstalldirs) $(DESTDIR)$(docdir)/c_api && \ @DO_DOCS_TRUE@ find c_api -type f -exec $(INSTALL_DATA) '{}' $(DESTDIR)$(docdir)/c_api/ \; @DO_DOCS_TRUE@uninstall-local: @DO_DOCS_TRUE@ rm -rf $(DESTDIR)$(docdir)/c_api @DO_DOCS_TRUE@clean-local: @DO_DOCS_TRUE@ rm -rf {c,fortran}_api @DO_DOCS_TRUE@ rm -rf {c,fortran}_xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dballe-7.21/doc/fapi.md0000644000175000017500000000326613022043102011607 00000000000000# DB-ALLe Guide to the Fortran API This document is a quick introduction to the Fortran API of DB-ALLe. It proceeds step by step to introducing different parts of the library using commented example code. ## Introduction DB-All.e is a fast, temporary, on-disk database where meteorological data can be stored, searched, retrieved and updated. To make computation easier, data is stored as physical data, that is, as measures of a variable in a specific point of space and time, rather than as a sequence of reports. This is a quick introduction to DB-All.e. It is intended as a quick read to get up to speed, and as a quick reference for everyday use. ## Fortran API documentation index * [Fortran API concepts](fapi_concepts.md), explains terms used through the documentation and concepts specific to DB-All.e. * [Walk through the API](fapi_walkthrough.md), introduces most aspects of the API. * [API function reference](fapi_reference.md), the complete reference to every function. * [Input/output/query parameters](fapi_parms.md), a table with all input, output and query parameters that are not B table entries. * [Varcode aliases](fapi_aliases.md), aliases that can be used in input routines instead of B table codes. * [Connection methods](fapi_connect.md), documents the various ways that can be used to connect to a DB-All.e database. * [Level types](fapi_ltypes.md), description of values that define vertical levels and layers. * [Time ranges](fapi_tranges.md), descriptions of values that define time ranges. * [Local B table](fapi_btable.md), contents of the local B table. * [Environment variable](dballe_env.md), environment variables that influence the behaviour of DB-All.e. dballe-7.21/doc/fapi_aliases.md0000644000175000017500000000164113022043102013303 00000000000000# Varcode aliases This table lists the aliases that can be used to refer to varcodes. | Alias | Variable | | ------------- | -------- | | block | B01001 | | conf | B33007 | | data_id | B33195 | | height | B07030 | | heightbaro | B07031 | | mslp | B10051 | | mwd | B22001 | | mwp | B22074 | | name | B01019 | | no | B15192 | | no2 | B15193 | | o3 | B15194 | | p | B10004 | | pm10 | B15195 | | pp1d | B22071 | | q | B13001 | | rh | B13003 | | station | B01002 | | swh | B22070 | | t | B12101 | | td | B12103 | | tmax | B12011 | | tmin | B12012 | | tp | B13011 | | u | B11003 | | v | B11004 | | z | B10003 | dballe-7.21/doc/fapi_ltypes.md0000644000175000017500000001661713022043102013213 00000000000000# Level type values This table lists the possible values for leveltype1 or leveltype2 and the interpretation of the corresponding numerical value l1 or l2. Leveltype values in the range 0-255 can be used for defining either a single level (leveltype1) or a surface delimiting a layer (leveltype1 and leveltype2) with any meaningful combination of leveltypes; values of leveltype >255 have a special use for encoding cloud values in SYNOP reports and they do not strictly define physical surfaces. The idea is borrowed from the GRIB edition 2 fixed surface concept and the values for leveltype coincide with the GRIB standard where possible. | Level Type | Meaning | Unit/contents of l1/l2 | | ----------- | -------------------------------------- | --------------------------- | | 0 | Reserved | | | 1 | Ground or Water Surface | | | 2 | Cloud Base Level | | | 3 | Level of Cloud Tops | | | 4 | Level of 0C Isotherm | | | 5 | Level of Adiabatic Condensation Lifted from the Surface | | | 6 | Maximum Wind Level | | | 7 | Tropopause | | | 8 | Nominal Top of the Atmosphere | DB-All.e encodes the channel number of polar satellites in L1 | | 9 | Sea Bottom | | | 10-19 | Reserved | | | 20 | Isothermal Level | K/10 | | 21-99 | Reserved | | | 100 | Isobaric Surface | Pa | | 101 | Mean Sea Level | | | 102 | Specific Altitude Above Mean Sea Level | mm | | 103 | Specified Height Level Above Ground | mm | | 104 | Sigma Level | 1/10000 | | 105 | Hybrid Level | | | 106 | Depth Below Land Surface | mm | | 107 | Isentropic (theta) Level | K/10 | | 108 | Level at Specified Pressure Difference from Ground to Level | Pa | | 109 | Potential Vorticity Surface | 10-9 K m2 kg-1 s-1 | | 110 | Reserved | | | 111 | Eta (NAM) Level (see note below) | 1/10000 | | 112 | 116 Reserved | | | 117 | Mixed Layer Depth | mm | | 118-159 Reserved | | | | 160 | Depth Below Sea Level | mm | | 161-191 Reserved | | | | 200 | Entire atmosphere (considered as a single layer) | | | 201 | Entire ocean (considered as a single layer) | | | 204 | Highest tropospheric freezing level | | | 206 | Grid scale cloud bottom level | | | 207 | Grid scale cloud top level | | | 209 | Boundary layer cloud bottom level | | | 210 | Boundary layer cloud top level | | | 211 | Boundary layer cloud layer | | | 212 | Low cloud bottom level | | | 213 | Low cloud top level | | | 214 | Low cloud layer | | | 215 | Cloud ceiling | | | 220 | Planetary Boundary Layer | | | 222 | Middle cloud bottom level | | | 223 | Middle cloud top level | | | 224 | Middle cloud layer | | | 232 | High cloud bottom level | | | 233 | High cloud top level | | | 234 | High cloud layer | | | 235 | Ocean Isotherm Level | K/10 | | 240 | Ocean Mixed Layer | | | 241 | Ordered Sequence of Data | | | 242 | Convective cloud bottom level | | | 243 | Convective cloud top level | | | 244 | Convective cloud layer | | | 245 | Lowest level of the wet bulb zero | | | 246 | Maximum equivalent potential temperature level | | | 247 | Equilibrium level | | | 248 | Shallow convective cloud bottom level | | | 249 | Shallow convective cloud top level | | | 251 | Deep convective cloud bottom level | | | 252 | Deep convective cloud top level | | | 253 | Lowest bottom level of supercooled liquid water layer | | | 254 | Highest top level of supercooled liquid water layer | | | 256 | Clouds | | | 257 | Information about the station that generated the data | | | 258 | (use when ltype1=256) Cloud Data group, L2 = 1 low clouds, 2 middle clouds, 3 high clouds, 0 others | | | 259 | (use when ltype1=256) Individual cloud groups, L2 = group number | | | 260 | (use when ltype1=256) Cloud drift, L2 = group number | | | 261 | (use when ltype1=256) Cloud elevation, L2 = group number; (use when ltype1=264) L2 = swell wave group number | | | 262 | (use when ltype1=256) Direction and elevation of clouds, L2 is ignored | | | 263 | (use when ltype1=256) Cloud groups with bases below station level, L2 = group number | | | 264 | Waves | | dballe-7.21/doc/Makefile.am0000644000175000017500000000546013022043102012400 00000000000000## Process this file with automake to produce Makefile.in doc_DATA = noinst_DATA = EXTRA_DIST = mksnippet CLEANFILES = if DO_DOCS # Generic documentation generic_mds = dballe_env.md doc_DATA += $(generic_mds) EXTRA_DIST += $(generic_mds) # C++ API documentation cppdeps = libdballe.dox \ record_keyword.dox \ aliases.dox \ ltypes.dox \ tranges.dox \ libwreport.doxytags record_keyword.dox: $(top_builddir)/dballe/core/record_keyword.gperf mksnippet $(top_srcdir)/doc/mksnippet key dox < $< > $@ || rm $@ aliases.dox: $(top_srcdir)/dballe/core/aliases.gperf mksnippet $(top_srcdir)/doc/mksnippet alias dox < $< > $@ || rm $@ ltypes.dox: $(top_srcdir)/dballe/msg/ltypes.txt mksnippet $(top_srcdir)/doc/mksnippet levels dox < $< > $@ || rm $@ tranges.dox: mksnippet $(top_srcdir)/doc/mksnippet tranges dox > $@ || rm $@ libdballe.doxytags: $(cppdeps) doxygen $< libwreport.doxytags: $(wildcard /usr/share/doc/*wreport*/libwreport.doxytags*) if [ -z "$<" ]; then \ ( echo "/usr/share/doc/*wreport*/libwreport.doxytags* not found" >&2 ; exit 1 ); \ elif [ `basename "$<"` = libwreport.doxytags.gz ]; then \ zcat $< > $@ ; \ else \ cat $< > $@ ; \ fi doc_DATA += libdballe.doxytags CLEANFILES += libdballe.doxytags libwreport.doxytags record_keyword.dox aliases.dox ltypes.dox tranges.dox # Fortran API documentation fapisources = fapi.md fapi_concepts.md fapi_walkthrough.md fapi_reference.md \ fapi_parms.md fapi_aliases.md fapi_connect.md fapi_ltypes.md \ fapi_tranges.md fapi_btable.md fortrandeps = libdballef.dox libdballef.doxytags: $(fortrandeps) doxygen $< fapi_reference.md: $(top_srcdir)/doc/make_fortran_reference libdballef.doxytags $< > $@ fortran_xml || rm $@ fapi_parms.md: $(top_builddir)/dballe/core/record_keyword.gperf mksnippet $(top_srcdir)/doc/mksnippet key md < $< > $@ || rm $@ fapi_aliases.md: $(top_srcdir)/dballe/core/aliases.gperf mksnippet $(top_srcdir)/doc/mksnippet alias md < $< > $@ || rm $@ fapi_ltypes.md: $(top_srcdir)/dballe/msg/ltypes.txt mksnippet $(top_srcdir)/doc/mksnippet levels md < $< > $@ || rm $@ fapi_tranges.md: mksnippet $(top_srcdir)/doc/mksnippet tranges md > $@ || rm $@ fapi_btable.md: ../tables/dballe.txt mksnippet $(top_srcdir)/doc/mksnippet btable md < $< > $@ || rm $@ doc_DATA += $(fapisources) CLEANFILES += libdballef.doxytags EXTRA_DIST += $(fapisources) make_fortran_reference # make install machinery install-data-local: test -d c_api && \ $(mkinstalldirs) $(DESTDIR)$(docdir)/c_api && \ find c_api -type f -exec $(INSTALL_DATA) '{}' $(DESTDIR)$(docdir)/c_api/ \; uninstall-local: rm -rf $(DESTDIR)$(docdir)/c_api EXTRA_DIST += doxy2swig.py add_templates_to_manpage introduzione.odt CLEANFILES += doxygen_sqlite3.db clean-local: rm -rf {c,fortran}_api rm -rf {c,fortran}_xml endif dballe-7.21/doc/doxy2swig.py0000755000175000017500000002727413022043102012667 00000000000000#!/usr/bin/env python """Doxygen XML to SWIG docstring converter. Converts Doxygen generated XML files into a file containing docstrings that can be used by SWIG-1.3.x. Note that you need to get SWIG version > 1.3.23 or use Robin Dunn's docstring patch to be able to use the resulting output. Usage: doxy2swig.py input.xml output.i input.xml is your doxygen generated XML file and output.i is where the output will be written (the file will be clobbered). """ # This code is implemented using Mark Pilgrim's code as a guideline: # http://www.faqs.org/docs/diveintopython/kgp_divein.html # # Author: Prabhu Ramachandran # License: BSD style from xml.dom import minidom import re import textwrap import sys import types import os.path def my_open_read(source): if hasattr(source, "read"): return source else: return open(source) def my_open_write(dest): if hasattr(dest, "write"): return dest else: return open(dest, 'w') class Doxy2SWIG: """Converts Doxygen generated XML files into a file containing docstrings that can be used by SWIG-1.3.x that have support for feature("docstring"). Once the data is parsed it is stored in self.pieces. """ def __init__(self, src): """Initialize the instance given a source object (file or filename). """ f = my_open_read(src) self.my_dir = os.path.dirname(f.name) self.xmldoc = minidom.parse(f).documentElement f.close() self.pieces = [] self.pieces.append('\n// File: %s\n'%\ os.path.basename(f.name)) self.space_re = re.compile(r'\s+') self.lead_spc = re.compile(r'^(%feature\S+\s+\S+\s*?)"\s+(\S)') self.multi = 0 self.ignores = ('inheritancegraph', 'param', 'listofallmembers', 'innerclass', 'name', 'declname', 'incdepgraph', 'invincdepgraph', 'programlisting', 'type', 'references', 'referencedby', 'location', 'collaborationgraph', 'reimplements', 'reimplementedby', 'derivedcompoundref', 'basecompoundref') #self.generics = [] def generate(self): """Parses the file set in the initialization. The resulting data is stored in `self.pieces`. """ self.parse(self.xmldoc) def parse(self, node): """Parse a given node. This function in turn calls the `parse_` functions which handle the respective nodes. """ pm = getattr(self, "parse_%s"%node.__class__.__name__) pm(node) def parse_Document(self, node): self.parse(node.documentElement) def parse_Text(self, node): txt = node.data txt = txt.replace('\\', r'\\\\') txt = txt.replace('"', r'\"') # ignore pure whitespace m = self.space_re.match(txt) if m and len(m.group()) == len(txt): pass else: self.add_text(textwrap.fill(txt)) def parse_Element(self, node): """Parse an `ELEMENT_NODE`. This calls specific `do_` handers for different elements. If no handler is available the `generic_parse` method is called. All tagNames specified in `self.ignores` are simply ignored. """ name = node.tagName ignores = self.ignores if name in ignores: return attr = "do_%s" % name if hasattr(self, attr): handlerMethod = getattr(self, attr) handlerMethod(node) else: self.generic_parse(node) #if name not in self.generics: self.generics.append(name) def add_text(self, value): """Adds text corresponding to `value` into `self.pieces`.""" if type(value) in (types.ListType, types.TupleType): self.pieces.extend(value) else: self.pieces.append(value) def get_specific_nodes(self, node, names): """Given a node and a sequence of strings in `names`, return a dictionary containing the names as keys and child `ELEMENT_NODEs`, that have a `tagName` equal to the name. """ nodes = [(x.tagName, x) for x in node.childNodes \ if x.nodeType == x.ELEMENT_NODE and \ x.tagName in names] return dict(nodes) def generic_parse(self, node, pad=0): """A Generic parser for arbitrary tags in a node. Parameters: - node: A node in the DOM. - pad: `int` (default: 0) If 0 the node data is not padded with newlines. If 1 it appends a newline after parsing the childNodes. If 2 it pads before and after the nodes are processed. Defaults to 0. """ npiece = 0 if pad: npiece = len(self.pieces) if pad == 2: self.add_text('\n') for n in node.childNodes: self.parse(n) if pad: if len(self.pieces) > npiece: self.add_text('\n') def space_parse(self, node): self.add_text(' ') self.generic_parse(node) do_ref = space_parse do_emphasis = space_parse do_bold = space_parse do_computeroutput = space_parse do_formula = space_parse def do_compoundname(self, node): self.add_text('\n\n') data = node.firstChild.data self.add_text('%%feature("docstring") %s "\n'%data) def do_compounddef(self, node): kind = node.attributes['kind'].value if kind in ('class', 'struct'): prot = node.attributes['prot'].value if prot <> 'public': return names = ('compoundname', 'briefdescription', 'detaileddescription', 'includes') first = self.get_specific_nodes(node, names) for n in names: if first.has_key(n): self.parse(first[n]) self.add_text(['";','\n']) for n in node.childNodes: if n not in first.values(): self.parse(n) elif kind in ('file', 'namespace'): nodes = node.getElementsByTagName('sectiondef') for n in nodes: self.parse(n) def do_includes(self, node): self.add_text('C++ includes: ') self.generic_parse(node, pad=1) def do_parameterlist(self, node): self.add_text(['\n', '\n', 'Parameters:', '\n']) self.generic_parse(node, pad=1) def do_para(self, node): self.add_text('\n') self.generic_parse(node, pad=1) def do_parametername(self, node): self.add_text('\n') self.add_text("%s: "%node.firstChild.data) def do_parameterdefinition(self, node): self.generic_parse(node, pad=1) def do_detaileddescription(self, node): self.generic_parse(node, pad=1) def do_briefdescription(self, node): self.generic_parse(node, pad=1) def do_memberdef(self, node): prot = node.attributes['prot'].value id = node.attributes['id'].value kind = node.attributes['kind'].value tmp = node.parentNode.parentNode.parentNode compdef = tmp.getElementsByTagName('compounddef')[0] cdef_kind = compdef.attributes['kind'].value if prot == 'public': first = self.get_specific_nodes(node, ('definition', 'name')) name = first['name'].firstChild.data if name[:8] == 'operator': # Don't handle operators yet. return defn = first['definition'].firstChild.data self.add_text('\n') self.add_text('%feature("docstring") ') anc = node.parentNode.parentNode if cdef_kind in ('file', 'namespace'): ns_node = anc.getElementsByTagName('innernamespace') if not ns_node and cdef_kind == 'namespace': ns_node = anc.getElementsByTagName('compoundname') if ns_node: ns = ns_node[0].firstChild.data self.add_text(' %s::%s "\n%s'%(ns, name, defn)) else: self.add_text(' %s "\n%s'%(name, defn)) elif cdef_kind in ('class', 'struct'): # Get the full function name. anc_node = anc.getElementsByTagName('compoundname') cname = anc_node[0].firstChild.data self.add_text(' %s::%s "\n%s'%(cname, name, defn)) for n in node.childNodes: if n not in first.values(): self.parse(n) self.add_text(['";', '\n']) def do_definition(self, node): data = node.firstChild.data self.add_text('%s "\n%s'%(data, data)) def do_sectiondef(self, node): kind = node.attributes['kind'].value if kind in ('public-func', 'func'): self.generic_parse(node) def do_simplesect(self, node): kind = node.attributes['kind'].value if kind in ('date', 'rcs', 'version'): pass elif kind == 'warning': self.add_text(['\n', 'WARNING: ']) self.generic_parse(node) elif kind == 'see': self.add_text('\n') self.add_text('See: ') self.generic_parse(node) else: self.generic_parse(node) def do_argsstring(self, node): self.generic_parse(node, pad=1) def do_member(self, node): kind = node.attributes['kind'].value refid = node.attributes['refid'].value if kind == 'function' and refid[:9] == 'namespace': self.generic_parse(node) def do_doxygenindex(self, node): self.multi = 1 comps = node.getElementsByTagName('compound') for c in comps: refid = c.attributes['refid'].value fname = refid + '.xml' if not os.path.exists(fname): fname = os.path.join(self.my_dir, fname) print "parsing file: %s"%fname p = Doxy2SWIG(fname) p.generate() self.pieces.extend(self.clean_pieces(p.pieces)) def write(self, fname): o = my_open_write(fname) if self.multi: o.write("".join(self.pieces)) else: o.write("".join(self.clean_pieces(self.pieces))) o.close() def clean_pieces(self, pieces): """Cleans the list of strings given as `pieces`. It replaces multiple newlines by a maximum of 2 and returns a new list. It also wraps the paragraphs nicely. """ ret = [] count = 0 for i in pieces: if i == '\n': count = count + 1 else: if i == '";': if count: ret.append('\n') elif count > 2: ret.append('\n\n') elif count: ret.append('\n'*count) count = 0 ret.append(i) _data = "".join(ret) ret = [] for i in _data.split('\n\n'): if i == 'Parameters:': ret.extend(['Parameters:', '\n\n']) elif i.find('// File:') > -1: # leave comments alone. ret.extend([i, '\n']) else: _tmp = textwrap.fill(i.strip()) _tmp = self.lead_spc.sub(r'\1"\2', _tmp) ret.extend([_tmp, '\n\n']) return ret def main(input, output): p = Doxy2SWIG(input) p.generate() p.write(output) if __name__ == '__main__': if len(sys.argv) != 3: print __doc__ sys.exit(1) main(sys.argv[1], sys.argv[2]) dballe-7.21/doc/introduzione.odt0000644000175000017500000004013713022043102013605 00000000000000PKŠä4^Æ2 ''mimetypeapplication/vnd.oasis.opendocument.textPKŠä4Configurations2/statusbar/PKŠä4'Configurations2/accelerator/current.xmlPKPKŠä4Configurations2/floater/PKŠä4Configurations2/popupmenu/PKŠä4Configurations2/progressbar/PKŠä4Configurations2/menubar/PKŠä4Configurations2/toolbar/PKŠä4Configurations2/images/Bitmaps/PKŠä4 content.xmlí]KoIr¾ûW$hxA.Øï'©#+@£¥‡ZïÞ„dUv3­êÊRVUSÒiþO¶/k`à“>ÍÍWëŸÌðopDdf=úÅêf7»9àb1bWå#"2_DfU}ó‡O“€M…Ž¥ ŸµêÍ#&BOù2??úó»ïkã?\üÝ7j4’ž8÷•—ND˜Ô<&ð/ƒÞa|nî>?Jux®x,ãóOD|žxç*¡ëu^l}Ns™+qò9¨Ü{'âSRµ3¶-õå×Õg¦ÆÅÞ¾æ·U;c[j±ûHUíü)j#RŸD<‘3T| døáùÑM’DçÆíímý¶SWzÜh5ènF°—µ‹RP+ßkˆ@àdq£Uo5\Û‰HxUú°m‘¤0\ ]Y4<ás«OÇ•5b:^"ï†ëʺAËËÛñ«/oÇ/öðäfÉš ?ÀMúÏor]ГªsaÛ’¨<-£ÊlšÖÅþJ©ŒTì` ”Èm7›Ý†ù]h}»²ù­–‰Ð…æÞÊæ¼Lâj²HhЮՀ51E5Í/éÐn˜ÛYãØ_:ô_xså݈ ÏË»×d'u|+ãø®©ËôÏ^çi$Ò«Ñ8™bÒK„^¶²¹,‰×|¬ytãnÀ ô£f%Á÷}»ùþZùŸÜàYÇZ¤Á=èD‚ÔG ¨˰–¨èùQÓ›®]«$AGá.cP¯ñ@ŽÁòÀ"uâhøç4Näès-†À TÜ* >`ă؈£ÀÝ VÛ;gu·ôw6¡ÿ‚#DZkÑïÁHèü·È@÷Þ `›2.7zÓ~×þr¶:¹»]0é`7“vWN:Üͤ½•“ž=”¯Ä(AìÓîµÊ–¢åø&™1ú0§½h†ÇøS+Ý\W“ZÍ߯¦Ý+L]í‹qÌRz°èm¤ÔÜ—6ì>tï–Ï 5g£Û·ÂB"4 Í­d‹<\Õóê@|Êš¬!ý€Ç¥˜¶ñ$>®®ÆØdUž7Â*÷çyo¶*¹¿+X½{v·Ö #èñ8ã…M"oˆå¸ØjEIÉìñ²ó ‹ofn¯!ëW5Û_€ÞÍ…»¤¨p³‚;çùn.rU"Ù®i—­¥µnϬõ<Î(Ã’þ›‹`.|ViJ ’Ï‘X*¥í!¨wsn~ç´†Zιû•jùH˜š‹w,æU¢•)¼šD7Xoì˜óÌë-ëEÚ»Ë}‰…7X¥Êb*·h´ÅÌM¼㻹á^Í@‘çG¿… \Sÿ Fr~ w|ijÿˆ::ÖE«(Xƒ¾öÓ×9púºN_ïÀéë8}ƒ§oxàô8}yïa ,Ü®sÚKcÎuà›9ô³ˆ$^P3Df7.²§£‘„`X·͘´·ûüèןþ³Š8âwù®1Ý&A ºCL)gDu+}<¬PHŸ+þÂöóráº×T{ÿ’jÕÏÎz‡/©Îþ%Õ©·»í×Twÿ’êֻó×Toÿ’êÕþáKª¿IõëgÃÎáKj°I ëíG ¨áþuVïH8Û¿¤Z€§Ú% šÞ»¬Q ö‡Öö=ûÿ—M€}¿³RÍí}+âvýÿýë/›ûöàðµe\ÿo?o”5Jm×ob|íz¯{ø‚Ú.¬ßÈö:õÖà¨Ô–aý&Æ×©SÁêÀµeT¿‰íANÝ}*µ]X¿‘ñõêÍ•¨þ0µeT¿‰íõêƒÖ#P©mƒúM¬¯_ß#ê\ÒwŸ ý¤‚ô@¥ž ý¤‚ôOþ°%õéŸ ý¤ß+¤ï=Aú'HÿéJ=Aú'HÿéŸ ýaKê Ò?Aú'H¿WHß_ó)®9Ù¾¥föÍE«Å›_t´v‰é·ølØÞ¹®ŒÏ·øÀÙ0]koñ1¶½s]7oñÙ¸½3]oñ‰»àº"žÝâc|{gº:6ÝâÃ{çº2ÎÜâ‡ÀtU̸Íç÷Îveü·öÑ¥ï µ7ð¥-Ùìne—hî}>¢ÚpŒíéªùå×´Kz¥ÿüÈKzÃá°Ûë7:”aŒüª0Üô­Ép¤.¾ñ½sO ž(}qå©PÅž ¿i®cŸ'â¢ÝlökÍA­Ù}מ7›ðjH73KÃ7fih, ¿OÃfÆ“¯ÙKDÁͼ®^êp§J“@†¢–ÁÑ‹w7"ŒkÁ’Á&\† Óî% æ1¨EÌÔˆY)Ý8qåün*¾³ÎY·»{•h=¤Jœu <íL%ª°DDó*q .H[þ¢-.f¯ÓkÿÖ³×=ëübòÐßÁr¶šÝáom9ÛÃîîÝõ}—ÓÜŒøU†/Úúêž5›öpç’hßS;a¼×;|Åé.…f±˜DuÌ€³ê$¿NúvʤQER©‰˜(-¿|Á žšö1åa"“¯?³‘Œqé@Ǥ §»§šFKCÎ̹d ˜ á‚bq$<œY‘ž+P$À«<õ›D88`¨4(eÜØŽCk„êÛ’ÉÎ4À˜b&Üø&‰Ÿv‚i¯XNN”Z'Éþòß؋?ÿ#ýòÇWeÇôÁL ×浜Šðn¥‰ HT@´œ Ñvxჭ~“¨Á & vl?uÆ`.öêåùž@p=Ù)ÓÀ,¬Ó¨ˆ½¥<Y'°ÂŸN?Ÿ~9Eµä8 ø_6vš/ò©qcÐÖðCòP|tcc¡ÆšŒÆ|A½Ënrü*+¸n…6€X‚[7¨h>-“QVÕÛ˜ºyã¯æP\ó»Š)^7.@å ?:© baÖO£`sWM?œ  Pqë>c‡"òÅH†Ò¬NÊ©òðZÀðs ´Z0Býi’ £•}ý…ñ)…$Ñò:%3ÙD êt¢‘Á  cŽ‹N¶ÇQSAæR•ÛÅi€ h ß1j®oMCÿ²0qÂÄA6˜ ChH3d€˜b«ÁõgÕ5ƒŠð‹DFqÈãUÔÛPqpJžb ^µ‚ÎP¼Q9TšÂrãBT$Ë6Ïw¤*Du^èC§ù$«#øŽrð6‘ {ÒüP (:QßÒjÿ“B±ä¨ÒøÑ$I5§  4ãÏ­)×+óKx Õ*N‘&¬` FbŒf˜@§.*»LPa|=‘a®D¦?S…~:Ç@¸YgE… epºß$…IòŠÂ46±ÎOx„b0Æûå_ˆ*,4¡3!¹0𢣠w¹5©]–q&¤f Âk~ÄzŒª"ÑÁLS4Žq耲ùTî–IJTò¿¨D][ļk BA9 7…ˆj¼ªD­ £@œYâ|ŽRºÓhí–¤ Bµì óÞ²A¢SææJšÈð©Òˆ"¾¶@ÒE§Üh4pµªßVÐ_X`½A»@äS•¯ªH÷4ÀÝQ/BwèÄQO Ê„€((-šÂßì­H<Ä k*çfÛÊ™ÊÙ0Ä]öíåë»S˹L}eùqÀ¹M?ÑQ(ëù¬Æ ÕäBПp‹%F~ÃqÅHe·L@®‘‚pX)\e}òªòÈ]Büš7ù]Eö ÉI’/µ©¼$÷Iºé¨|–1:•"ÇLf}aŠBKÃÕ¶É!|ôå)Þ¦¥07{A~ÔJR„ûðWŽá´ñÒ¸¨WŒá¶ùŒ‚Ý[ ø3šýÊ FƱƒ³±‡å{똋 )¥›C•„#!›#Ï&-Å,“Vªp$}Šg0â-· %Ròñ«knU•mÖ|Û²Ísœs¦2äM’-)!«{ŒBü„ù¸þÏ0e*„ ß%Úfˆƒóâ—!:ë!úG˜ä‘fH˜Y@|²à…V%‹îèчcIŠ(·É¾ {àĶŠ€È Ï—g[šäËùÒQ[œ*YÒnHÛÔmXØl-K+œ@Г6Ž8Ï"Šø²kK ¸¬˜ø °nš&”¾)<€ïB}<%PDŽÞUáš…C 4 …¶·Ú²<øsvP ñ)3é;È=•eo# †OˆÜ©ÛŠ X^:I¢~"|‰] Jg‰_ܸ8˜r‰ü¹¥Ç²™çƒ°ò‚Ÿ:4uç$<åKècÉrÜÀZ ð© Ï çãÅ=ÑÔz.RscÚÁÑdVlúS )<äÆh!„¸õͯaK‘„OËÃ} JsPØØŽIu%Ð"„œ%·€["àš(!2)l‚—µô!EÅÖ¥‚cŽ3SØÐDu4÷ªñÆlÎ7.Ê$T >®o¡ˆVyZÚ?pU­µ¯‡iFÎÌ•Ü[§("$0ŠU"ƒ³õ“Fš<—#FfúPVÒÑù~«9!7ð.–‚þŒ8¡/š·ì›ýéo8ú¯?ýX¬)‘”Â¥k•YMrÛÁÞÕ „gÙû©ÅÐÅ¢ÆO“Ç*Bçì0è©Ps™J‚I ‚â§37±&“]ÉËy*«éTZOgP³aŒd•åa>„0“i¢“ƒ"XzT+ ?Áý[Na=V£äÖØ¶331›ûl¸“X)?‚”Ô›Ù&ò…M“Ü&Ééާaé ègp?°Ë1„Qdu×Yƒ£ Üp…JZ›-GРã(|Ë}õ±“NŽ*óu®“ìß—#áè<ŒqèÖF XF¦*yF“›?©ú &›Šòù²U#CÈf»#Ö[E,èŠZ½ŠZ4‚ýSÛÏ©õWQë«ôüÍÎém5WEìËÖ]‡9{sFfY¢Ï„»åIHÃk¥>L¸þP<Í:Jà O„ï:¾tíʆaö÷á~Nì#°áµÈ†Úðávf„An‡t޶”'jJéP+ÆédQ¾XeÖl_‰³O€>œãyÙçG4£@Ùk7ZŒžÝ$ItÞhÄ‘ Ufà:â¼_>6@–{Õ' _y5<7Ù0üzõ›dü=Ç'ÖHêi¾ÓÒÇ/رÛ0v ALœÌ&¼‡ÀA§Èt(0aˆ?©Bt·b%mÉé| ⥠Cs’ °aœýehpÏPVª¡]ji¶-ÍVy9yÃE´Ù`ñ²íNòwWoÙñwX̽R©†pñF>aÊ¿ölF§5•ý|ëÙ—Ÿ|Ž?6#)[LEØXãáµì_3{LÓTÑÉ*sT¥Îr°-&žæ´±ƒR‹üœ,¶Y ›u ”+Mžg½*?ÉöŠö€HLâ01BxJ®Pzt OóPØB¯p"§D~V@ÔÓ­¶IýhrªíZ’DiXÏë3n:§cÝÊq¹DrB#pVO~ý…ö®°Ï8E’*ù‘ÞjÞÖcad:Nô€¢ýë²ëõãÐ9^óoãé‰(_ ¾UÚ7¿ªXÜÙ è`Jó—é€%ðËS®ºR‘€:ýo]bi e ßRêÌ5–¢|¡=y¼2b Ž.œ,=³zÂ{ï ,ª"­›‘¿´û…X&ב߬Xýï¯S7maùn¬P6bÇO¨sZÜ–S•mfè &Þ…uݼpŠ$µë­Ûs®ô$ŸÑ³R%ùÞ{ÊqPغºg±µ¼¢è”²Zª«à‰À†6»–1xHNûn…Cø¸Ù,‚ Ô¸õŒÝ1\gáÚ̸ÌL°S°TsæÙÏi˜#î Sö<†IßKÿ„¶Ù=ýïbwFÛÚ q <î—Ùìx¦3¬}sˆ1ó‰V0ôL¸€)7å´½)§FÈ rK…åÀf1Ô–ž ˱°c¸^M:£–¹ðn±z§”D8Ο½“ì÷9Å@ðï÷Zà3Ws²Û„_es‹ùÍ€Åqaݰv•? š lUØÁj¯U/|(5 Íœç,ZôðfM‹„ÛÌcªÝ~£\¿ð+y—4æU ¢æä-,r‰Üf©º=Ô‚²mó©ÝЦvνf©Ýèkw+qy­qGMK·É]ú’Õyl§%°{ æQ= àåÌÚn¼H6IÿߟrQ\ÁŽRh+Êî·§Ò0Ùt¹öÃgÏÕ£âñÆì Ó<Ÿ' HÛº*®l¿s™i1†‚”™çZ×cRÍNA®Óá‘Ù³[ö›¸mK¾ÒÎÀf5q¬?( °ä‘Ëq}Éþ·‰Ûø¨>w–=³€;yÂ/PU!ŠA¸‰úõgÞ˜O¸©d̤9|”¡@a¶_—®Ã©Y€‰ñy¡Ý¿Ð6*V^\T§÷ ·‘LíÍ|sÃ=܉²y 9‡ræâÉúaäìak³®¦oìÓœ©-Ø‚³^HûÀÒîó 8ÿUdçTÙR¿Ðs•òíúëE)þnÜqœ^Ó‘©Eÿvüðò¼ÀÅËÂùp±ñFÅ^:h^82‰Ñ7?éÃR%s¤ÅX™ÒÚTŽ•vÇ>ó½Ç+E)…}ˆf&ðKçUÉyê`pøþ¬13ÄÕÙë¹0ÜÊ*m®iB§êqj,ÓÛ.èˆ^æ¸U Ì[i H.*]/˜Á„";Ï‚ûY†b^·^?·Ò…xhßœSز5Ýï~&̼€³xϱÄÊlÝæùIiĥό¹ñîé-ÄK´]LÐñJÐW‹Xpó¬Â1‘ªáz隊h´êÒš÷–—¶tä7/Åç´Î±ƒdF¦ÓÜÙÃÁ;ٱ܇I~Î\òc ˆ`yõë-y&ó©jÊôŽÖÒz—Niïå®—ë.¸›þ~7;÷ëßÙ’oï_ÈkÀh”2ñu£ü÷æ©åìMr´qÅCJ–Ì#öqGzDÌœäÉ6)Ã‚Ä Ôfæ…\¥Ï¹_æKEîH;Å)kæ WÉÅÿPK¡7DÁ'ÅPKŠä4 styles.xmlÍ[[¯Û¸~ï¯0T´o²%;Ù»9Y´A/²‹¢9íë‚–h‹]‰(êØÞ_ßR”(Y’eûìÆybÎ…Ão†3CRùðý1Kg¯TLðg/œÞŒòHČÿ¼üÝò¾ÿø»b·cÝÄ"*3Ê•_¨SJ‹óbcˆÏ^)ùF‚N2ZlT´9åVhãroôTfD+›*®™]iEjª0ò¶dÉvúÌšÙ•Ž%9LF^ÀÔ߉©ÂÇ"õwÂD–Å:VSÆ~ö¥òÍbq8æ‡Õ\Èý"\¯× M­ Žj¾¼”©æŠ£M)NV,Ây¸°¼Udª}ÈëšÄËlKådhˆ"g^-^÷“#âu?M”9964sÛ½«xº{W±+›• øäiñõ_?|ibAfSçBÞT‘dùäenW^Q›Šfƒjs—Aðna~;܇QöƒdŠJ‡=eHÕˆ‹¬4à ÀáÓW SoV¥VÚúhsÔN@~Ú‘ˆú1Òâã[õðÌüFŒž½¯ŠÈ¯§l+Roqd¹2–ž:ÄF JAð£_êb|’O¢”ŒÊÙôÐ3ËI.Š?;7Ûñá©‹+ŠKS/†â¯7%ÓšÓ)ÓªZÍ•A{Iò„Ežå­~û¹„ $à°œlŠ„Äâàƒ~GÿøìóU”y}ÄS‡‘­|( Ô/rAaò!Ù/`:I‘uù4ÊüŠfDç¬m¦j=cíÑYÁ’Â:L%¾)õ;’޳s"‰FÈÅÇß'¥8D‹©0¬$Í“:ε[I ”ÑBÇ•¥`.CÛp¿={©ôÕ¶ŒÇS,¶Dîb¬‘ÖFhÀÓ"/0N†Í®ÙÑî³Õ”8zÕä!‘ (²J–œwÂXT°_ÀÒp™+=–¾/É×n"Qr%!>¿´V‚r>­t…M¥ÀÒXM©4YBŸ>¬Ê)=h¬©ç:khm kí™)©ÆØ €%9å åÐAî§$†ìêk[ž=.À³YcâĘÊK©Ò(<ê¬BãrÐÙ`ñc[ã$á|ù>lvD;,s³Ù7ÄŽã¶$~ot¡Z(=5æ­ƒOOWÇÐЄonðP»í»%iF׃ «åS^I‡åŽÐׇ7ÿ¤Ô s–Ù ‰‘Žaib"%y1zïľ‡Îä0ÒÙs?SšûJì©Jð°€{êÒÄî„uÇc"copë[祤(À<ØÍf9×÷ôŸ–ÁO[Ÿ¬(ìÃ<%'¿á˜¹äÁ)a >+ûýæºV]ÊQ‘@1H&&ƒfl+”ÂÞ*g¸RãøþIIì$¥{–Â1ñ¸ }PÞ¼Þù»åj|ÍuHéVëV¤r*.%G'óU½`'ß½kòÃÕé¬WöŠÜ„ò׺Qû£·â˜…·¸¼-W{ÜZTmmQ*]S8×Aþ ½!7uܾÿCã¢eû\ ç°xØ ZÄ!)Kî—m|0 ]3hù[œ´wÒòñœ´œê¤wU`ÆPK)Iá\s¥ïº;È,¦n ŒÊ›}ۯݩþCúï÷þjÜû«Çóþê&ïßææûÜxŸ“¾@ç} ú#覨r¬ñÀ. e?ùæš«·û@¶Y—ç Z°\’ñš¬oÏÍÝ®>íu¿«):PìÕo0ìzåØí[øýÊ ÀÓ€€6Ç¿”í!&#Ђ7Fâe¡Øîäc “ ·nãs rã›lpC]Ø3÷mŠO$ǃÊosg}`Óì õo vçÌÛWφRÚòÊÊ5|,)M“ý÷™Çôø†ÞcZß·Èÿ’AˆR4ÆýâV®VÖp9g.Û¬?QYú&‡6s`ëBÇý=  FÎ)íGˆ€íUPܨŠ&lƒkN,Xi/W=äú5ŠÞ5.LéRnØö¡4‰ØzV{éûàjШƻ ¿E¬/±¯ƒi´Dj”~Íý³nF3ø6hþ¨SNÕ…›¾À«9g¶úºëÂ}Ò_Ë4¥êâ<†mt’ÉÂ}¶l'ˆõH~xìtÓC¯x½ïÇÔLëkrÃgl¯¸AÏ|ÆÐåš¹,“ÓÖúü÷üy Zwü%Ä–4:¦Ú"eñËÅøà¯ï0û9ª™šÛ÷é8ü—¬ªt.$_!©f54_î€æ ±yTh¾*)Ì6þ[–'øñC?"†oÖešŠÅ7ìº_($†SNïË C¥{J‡0ÜL^Ä?Ì öî^ºu£Hx”é#íRöºßmm€ŸZu¼»qÁkð쳟 ¼ðùAâ5ÇY±lž±dûäçP;âgéÕØK•¾1}ÑR=¬˜Ù^ŽZ@ËÌ7-í³W㆗ •hº ‹-Ù¥yN æ«§°z&š}¢]˵kõ v½{P»Þ?¨]ß=¨]zP»žÔ®õƒÚ¿½am’k-ŠPkùŽíK©¿ ˜Õ¿:fí„Pø»Ïð°ºY1ßl½’´D«ªA+X`cJ:©?qe¸=ñø¨Ï~<Š+šn!åñ¬ß@«i,è›fð2É|馟Š×ë¦ èC§RÒ €§ÑŠÆx$õçИÏú´¶æk>lgA'ô*–`½{ð69w[Pž…^O§ÏÔ”ªa^óµYˆ%$Uº\Ï¿Yb5 ¨|èL`)¤òµJ’êS÷bjàFµ3lŽìËÞ#ûrèã¤Î7s&ýŒëÕ`ÃÖ|¸Y14·ê Á<ŸšIì–ó·x¿§ù‘' ²ƒf­—…Äxko¼mbÀŒCW»¡yûu‹{]ÙïP»¨„üÊFÿX¸+uÏ5‘wj!#E­£ž­DM“Rûrǵ¹ Q'à;ÚýÿäãÿPKÝ”f¡ÒB2PKŠä4I0((meta.xml OpenOffice.org/2.0$Linux OpenOffice.org_project/680m1$Build-89902006-06-27T12:48:522006-07-04T19:16:50it-IT18PT11H34M36SPKŠä4Thumbnails/thumbnail.png èõ‰PNG  IHDRq ;ƒZ ÞIDATxœí]Ùvë* m×ÊÿÿrîÍiÝbªak`°£ý’Ø!’ Îãù|~®Çj q”o€Râ PJ¼J‰7@)ñ(%Þ¥Äd|~~þz??gò¾œ_9¾¿:Ô^Sh;ÍÑ4í õíPåGû}ã“’R¥ª}—Sbß!ËS¯Ñ¶å-Un©c‘ËÂërJ,ü…¨ÄÖ,H4”¹áh4p¦¹çi‘%™-q[€¬%Ty»Vp4mÔúAÑr÷u)§Öº^.Nv¤ÌJ¯ÉßÖy´7)Bޱ´®¶¦d´•…«/ñµŽ§§ïGZo€Râ PJ¼'ïçµPz×Ao]®ž‡ŸµN¤¿áw&R<9Ùu=ü¬u"2S0<Y!ÍÙœfuH{¢åQúL4mÇ(pð‹\Å5ŒYµíË)zk§VšÅ#g®–#óã‡Ñ Ö†w…k&ÎJOí˜Û¬¹m™¶œª××i·k¤ÔWŽlå¼;X%¢é0naÖöÒ¨‡¤ßŸ£hW¡—![&”5ÞêLD7aµû?ä;%¼–Жà©Ïmxå@­Ž„–V‰‘MX‰ïJ‘dsÖìËœÅÃÒn#LàfuG¨JŒ˜.´®ä@¡|ßY¹ªgŽg߯°ù.ztbæ Î÷ÈåñÂÞiÔ+D ëdA½FÄãFú­ÝCg ÇX4LñN-OØ “Šô)ãØˆÖnÌŽ'ëÒ׫5-éŽM)h>¶plv‹)'*ê” Žw¿•c©cÓòÔxK¹Ø~`Qž–¶Zpü)‡IŠ‘6Z~ýýãûùŒ QIKd· ­OÖ‰×çù¼ UGãÑFfcÄ2Pa*5y8™ZرáÜg˓ϕ?™rÏì”Ê£ÖD GZXf™TŽÐ¦86á°à{zFWk;#DÒê¯væ ™ˆ,ò¯kwFÅ8ÙSòú¤œ ¹­´t0Úk΄RS_Z#@.ÔD{dò8PٴК¨:$F››Õæl5XïÔͬ4^ïá¯0ø= ˆÑz~p?„v#0Ï@‘é}½À¹Öª÷J7þ<}‚ÞåÏúÇЉ^2Õ>Ièos|%Ìž&8 ¨ÇIÞKž]žñVË“±“Âÿa†<ôy«ý‚p<ÛâÖ¹ þï“cÃ.ö`¢\KÑ!9ÚÂ_„ŠNªSŠÉÇ4s꩟eb£ñekm¬1îŒeÂlN9s‰Äm’éõìXeˆ¤û¸4#ÚoDFË.I Øœ¶OšŠ£f@5ÃO« Ù°ò¶.7ÓA)4é,ñhïy3B^Y¤à‘aLI€{øàqueqzPj¥33‹ïHû}"E{ðñ —±ïèá×{¢»#õ¸9A­`å ^E/lgN-<¯4[Fbº9ÕRuHŠîG^Í,z;¥îS@c-F¤êx•&Ú©‹«#ɲâ¡Ù±Ac½,G™½=M?§¾¾®þËÒn³›LžÕÚü»?NfÇf§Ø/Úf¿GÌ8Ú^æRq€=ž!¥Å¬ñ–TÇ’6ãÌ{TÎVFŠWFZO‡HJpøA)¤~ÄìfÉé•g%Ï[ü>±Cèð°µ®…>ºNDÖŸ«Å–쟛 °®uÑ-,´‰GvNv5Ä?7‰bÖÓì îèWQ…½QŽÍ pZ3f%—{lijöçâ4# ~ï`PÊ´öÃÍ)¥ÌB.R½ÓììLC967@)ñ(%Þ¥Äà”×bÅщaMÉÓ&×GmvÏ8÷'®ÅqYqž” ×Îçp§á¨-p#–•·ž ²´žqš×š¸¦çé{_ÜN@Î-ýÉØxÍ©täåßÒõ#âHPãÓߣf3E? Kß(e:cV´½rü*Ø¿J‰7@)ñp+‘‹'ûûRÜÙ×ó¬+Ç!j}óÆ~ÖØÕü‡_h Õ—¡)%.¦”R€ÖtRW‹© %§ûYå¢ÊÕ8é’²³ðÐfw_&Ýéâ#ýž”7{f‚%Û•kF¬¶—Š%\]þÊ;½J‰7@)ñ(%ÞC”¨mY½>µ8ë+þü“i$pn„}lhI”’±Üœf=4ïŒ?qâì'œÊÔÔ,³aùL,Ä‘¦Ä»…/„w1Zx#)9^Ð1䥵¥„¹˜'fÖ)|aØKk=¦U:`[à1üG¦¥„ñ€Þža9CáWð~ó0ÇÀãÕruJ¹>LýÍ~)i †86¥¬¹Øúí ®—e::™õ#|û#ŽÒáh‹ŒYéH‰9í¦Ñfl-ÚžBùjËI4­x@‹£Ñc[Yœ}ØW¢=.üÕ¿ÞËj¨09­£{ã?*­¡†¢Î°IEND®B`‚PK< h  PKŠä4 settings.xmlÍY]SâJ}¿¿ÂÊë-—Ù]¡„­¢¸€âÛ4$:™IÍL øë·'€å"ìr©º>d&ý•Ó§»'—?f=y!CÎJÖÙÛ:æq?dÓ’õЯŸ^X?Êÿ\òÉ$ô ès/‰€©S Jáy‚·3Y\,—¬D°"'2”EF"Eåy lu[ñãîb¦lqeFCöR²¥âb.—¦é—ôü ÓÜY¡PÈe««­g“pº«ªÅîª8çïŠô c2eŽmçs‹ßÖÉÒÈßBS^Åaå~ùr©`ñq*ˆtlN–—µi% U_CHߣfmºï÷{¸ß@ú<¶V+jãJÈ”U>³mç2÷YÈî‚›0Qf$C_›D;ß ùeß@8 6Û]ÈÿºŸð^ÀÓ.øˆ2¨„MA®)sN0«¬Dûéh°Šà©„÷áÒO#Ÿ†Ì‡øŸCµaÙ=˜b¾[Àþš¥R „¯UÖ`>àAn…žs‘ß_ê¶LÉ;{ÂbÊpLÁD¢d‚ ¤v&·»-Eœ‹ò/]áJñh£l{ïô{â<꣤u°\ `{¡uâ).6‹Ýר†ìO_xa[*O•[ryÃʼn¹my™ë›7`aÙ½-.$‚(,lÿ¥&¹¾ß!‚ô "¡OsÁщ²ƒ£º ë.¬óÏ.áý›ü»Di¢o¢: ú²DcpæmMì\bŸ¨MÄ¿„âÙžHœ2.  ©P 4L5˜Io°: Ì)UŤž¹zè…[>ÞZŠpcñ@êi¢˜âwJ27:$¡õ@%ël -˜’ÝM&˜È&‚•ù¡k`‡iŒ–WGp…´Š€ú óu-D·|%dDÌ­ÜŽ&g,eÀ^ÊM_ ÈV9VN ØŸ‰±ã\îOoþÍ·ŸGÃÙëøz÷k£·–ûÿý»?Ü?¼Åo#§.ÇÎŒÂͽÓzÛ¸uèº-—.är× zøõÊǽ¨v¯ëö¨çΪ¬2'ïöÓc£à9í`|]OÝ~n¥Õ¨€kƒÄǽdXH:ƒÊ«ÇºóÑÚÕ¨ýê]Sê½Ù(#‹!íô¯Ò–«Ñã-C™/£a|æwÕÊïô]Ùª¦i³æþ99>¿}yz¬Ø¤fÏÛnœzè $îû°þœ‡ʼ¸ê֯޶3¸=vƒê´T:.c\eíÁöªµ'»79ñ»@|Îè§4?êeÙôyÆU &2 u]Í0•¡MôÈH7äÆ1?H5¢ÈñÅ×ud’Ìzä‹#”;V¥\š(µZÉ5åcBkËÓÝv™(† ùŸ·+CÂ: óT’%‰ Ópʼ=Åã—áŸÔPË!0Z[šûõg'Âû”ò‹¹×Ò ¢ýy4ZHP4|¦¾Ò ÖÉl»’ Å+CD- ß±»ñ3FÚT• å†Z¨†l’1¼ƒßDÇ,¡ÎEBOýg嶺z ®ãíÝ¥b3>Õx›ã<‹Ý¹vÍUJHÔ‹SZyT‹¹Cpc;mJþ5Æ+=E•Ržf:pø«æ5Î{8ÍF„ù&ÙìhkOšÊüm"U8™ë´‘ÃP-ÂB+È‹É4E.ç¿*f€½¤z}î ß»èªKæPK. x§PKŠä4^Æ2 ''mimetypePKŠä4MConfigurations2/statusbar/PKŠä4'…Configurations2/accelerator/current.xmlPKŠä4ÜConfigurations2/floater/PKŠä4Configurations2/popupmenu/PKŠä4JConfigurations2/progressbar/PKŠä4„Configurations2/menubar/PKŠä4ºConfigurations2/toolbar/PKŠä4ðConfigurations2/images/Bitmaps/PKŠä4¡7DÁ'Å -content.xmlPKŠä4Ý”f¡ÒB2 fstyles.xmlPKŠä4I0((p&meta.xmlPKŠä4< h  ¾*Thumbnails/thumbnail.pngPKŠä4¯Ü¼F« 5settings.xmlPKŠä4. x§ :META-INF/manifest.xmlPKî[<dballe-7.21/doc/fapi_concepts.md0000644000175000017500000003055213022043102013503 00000000000000# Fortran API concepts ### Connections, sessions and handles DB-All.e stores meteorological values in a database. This database can be optionally shared or accessed using the network. You contact DB-All.e by creating a *connection*, and you work in DB-All.e using one or more *sessions*. A connection is an established link between your program and DB-All.e, and you usually open it at the beginning of your work and close it at the end. Within a connection you can create many working sessions. This is used to do different things at the same time, like reading a set of values while writing computed results. You can also set some safety features on sessions: for example, when you create a session for reading values you can set it to disable all writes, which helps you catch some programming mistakes. You refer to the connection and the sessions using *handles*. A handle is an integer value that you use when you need to refer to something that is not otherwise representable in any Fortran data type. When you create a connection or a session, DB-All.e will give you the integer handle that you will later use to refer to it. Values in DB-All.e are associated to informations about their source, such as what kind of station generated the data and some characteristics of the station. What follows are the main concept of DB-All.e data representation. ### Report A homogeneous group of stations with the same kind of measures and management (for example: `synop`, `metar`, a specific kind of forecast...). The type of report implicitly defines a priority of the measured value over other equivalent values. This can be used to select a "best value" from a specific set of coordinates, where for example, values measured by synoptic stations are preferred over values measured by a satellite, which in turn is preferred over a value computed by a forecast model. Priorities associated to the report type can be customized when creating the database (see [[idba_scopa][]](fapi_reference.md#idba_scopa)). ### Station Stations are uniquely identified by: * *latitude*. * *longitude*. * *station identifier* (if the station is mobile). * *rep_memo* (currently only in `memdb:` databases; in the future, on all databases) ### Station values Each station entry can have zero or more values associated to it. They are just like measured variables, but lack date, time, level, and time range information. They can be used to store station attributes, like the height above sea level, or the center operating it. The interface to work with station values is the same as the interface to work with normal values, except that date, time, level, and timerange information are not set when inserting or querying data, and [[idba_setcontextana][]](fapi_reference.md#idba_setcontextana) is called instead, to signal the intention of working with station values. See section \ref{sec-querying} for examples on how to work with values. ### Level or layer The vertical coordinate of a value in DB-All.e is described using a level description or a layer description. A level is defined univocally by a code table (`leveltype1`) and a numerical value (`l1`). A layer is defined univocally by its two bounding levels (`leveltype1`, `l1`, `leveltype2`, `l2`). See [the levels table](fapi_levels.md) for a description of the level types and associated level values. ### Time range Another characteristic of a value in DB-All.e is the time period to which the datum refers: it can be, for example, a value measured in a specific instant, or a cumulated or averaged value over an interval of time. The time range is defined by a table code (`pindicator`) and two numerical values (`p1` and `p2`). For their meaning, see [the Time ranges table](fapi_tranges.md). ### Variable code (varcode) A code from a local variation of BUFR/CREX Table B that describes the nature of the variable, such as what it measures and the units used for measuring. It is identified by a [*local B table descriptor*](fapi_btable.md). ### Value The main work of DB-All.e is to store and access *measured values*. A measured value is a datum that can be expressed as a floating point (single or double precision), integer, character or byte, depending on what value it measures. Every datum is univocally defined by a system of coordinates with 7 dimensions: 1. A [report](#report) type. 2. The [variable code](#varcode). 3. The *date and time* of validity of the datum, be it observed, forecast or estimated. 4. *station* information about what generated the value (also defining its x and y coordinates). 5. The vertical coordinates in space, as a description of the *level*. 6. The *time range* of the measurement. See section [Querying](#sec_querying) for examples on how to work with values. ### Attributes Values in DB-All.e are also associated to zero or more *attributes*. An attribute is a value that describes an aspect of a variable, like for example a confidence interval. Attributes in DB-All.e consist on a value and a local B table descriptor, which describes the nature of the variable, such as what it represents and the units in which it is represented. Attributes are uniquely identified by the variable they refer to and the B table descriptor of the attribute. As a consequence, you can only have one attribute per value with a specific B table descriptor. This means that, for example, a variable can have at most one confidence interval attribute. See section [Attributes](#sec_attrs) for examples on how to handle attributes. ### Input, output, actions Work with DB-All.e happens using *action routines*. An action routine typically reads some input, performs an action and produces some output. Example of action routines are [idba_voglioquesto][] to query data from a database and [idba_prendilo][] to write data into the database. The input and the output of action routines are collections of parameters which have a name and a value. A list of parameters can be found [in the appendix](#parmtable). You can set the input parameters using the `idba_set*` functions: * `idba_seti(handle, "param", intvalue)`: Set the input parameter to the integer value `intvalue`. * `idba_setc(handle, "param", charvalue)`: Set the input parameter to the character value `charvalue` * `idba_setr(handle, "param", realvalue)`: Set the input parameter to the real value `realvalue` * `idba_setd(handle, "param", doublevalue)`: Set the input parameter to the `real*8` value `doublevalue` * `idba_setcontextana(handle)`: Sets the date, time, level and time range in the input record to some magic values, to signal that we are going to work with station attributes instead of normal values. You can read the output parameters using the `idba_enq*` functions: * `idba_enqi(handle, "param", intvalue)`: Read the output parameter into the integer value `intvalue` * `idba_enqc(handle, "param", charvalue)`: Read the output parameter into the character value `charvalue` * `idba_enqr(handle, "param", realvalue)`: Read the output parameter into the real value `realvalue` * `idba_enqd(handle, "param", doublevalue)`: Read the output parameter into the `real*8` value `doublevalue` Note that all [idba_set][] functions set input parameters, while all `idb_enq*` functions read output parameters. You cannot read input parameters or set output parameters: that is the job of action routines. In other words, input and output parameters are different things. In this code: ```fortran ! A possible misunderstanding ierr = idba_seti(handle, "height", 1) ierr = idba_enqi(handle, "height", val) ``` the value of `val` after the [idba_enqi][] will not probably be 1, and it could be either a value indicating ``missing value'' (in case no `height` parameter is set in the output parameters) or a `height` value previously retrieved by an action routine. To reset one input parameter you can use [idba_unset][]: ```fortran ! We do not want to limit results by latitude this time ierr = idba_unset(handle, "latmin") ierr = idba_unset(handle, "latmax") ierr = idba_voglioquesto(handle, count) ``` Alternatively, you can reset an input parameter by setting it to one of the special ``missing value'' values listed below. To reset all input parameters you can use [idba_unsetall][]: ```fortran ! Restart the query from scratch ierr = idba_unsetall(handle) ierr = idba_setd(handle, "latmin", 10.D0) ``` To reset only Bxxyyy variables you can use [idba_unsetb][]: ```fortran ! Insert a new variable with the old station, level and so on ierr = idba_unsetb(handle) ierr = idba_setd(handle, "B12101", 21.5) ``` There is no way to reset output parameters: it is not needed since all action routines will get rid of old output values before producing new ones. In case one of the `idba_enq*` functions is called on a parameter which does not exist, it will return a special value that indicates "missing value". This is a list of such special values:
Data TypeMissing value indicator
String ""
Int 0x7fffffff
Real -1.1754944E-38
Double -2.22507E-308
[idba_error_code]: fapi_reference.md#idba_error_code [idba_error_message]: fapi_reference.md#idba_error_message [idba_error_context]: fapi_reference.md#idba_error_context [idba_error_details]: fapi_reference.md#idba_error_details [idba_error_set_callback]: fapi_reference.md#idba_error_set_callback [idba_error_remove_callback]: fapi_reference.md#idba_error_remove_callback [idba_default_error_handler]: fapi_reference.md#idba_default_error_handler [idba_error_handle_tolerating_overflows]: fapi_reference.md#idba_error_handle_tolerating_overflows [idba_presentati]: fapi_reference.md#idba_presentati [idba_arrivederci]: fapi_reference.md#idba_arrivederci [idba_preparati]: fapi_reference.md#idba_preparati [idba_messaggi]: fapi_reference.md#idba_messaggi [idba_fatto]: fapi_reference.md#idba_fatto [idba_seti]: fapi_reference.md#idba_seti [idba_setb]: fapi_reference.md#idba_setb [idba_setr]: fapi_reference.md#idba_setr [idba_setd]: fapi_reference.md#idba_setd [idba_setc]: fapi_reference.md#idba_setc [idba_enqi]: fapi_reference.md#idba_enqi [idba_enqb]: fapi_reference.md#idba_enqb [idba_enqr]: fapi_reference.md#idba_enqr [idba_enqd]: fapi_reference.md#idba_enqd [idba_enqc]: fapi_reference.md#idba_enqc [idba_unset]: fapi_reference.md#idba_unset [idba_unsetb]: fapi_reference.md#idba_unsetb [idba_unsetall]: fapi_reference.md#idba_unsetall [idba_setcontextana]: fapi_reference.md#idba_setcontextana [idba_setlevel]: fapi_reference.md#idba_setlevel [idba_settimerange]: fapi_reference.md#idba_settimerange [idba_setdate]: fapi_reference.md#idba_setdate [idba_setdatemin]: fapi_reference.md#idba_setdatemin [idba_setdatemax]: fapi_reference.md#idba_setdatemax [idba_enqlevel]: fapi_reference.md#idba_enqlevel [idba_enqtimerange]: fapi_reference.md#idba_enqtimerange [idba_enqdate]: fapi_reference.md#idba_enqdate [idba_scopa]: fapi_reference.md#idba_scopa [idba_quantesono]: fapi_reference.md#idba_quantesono [idba_elencamele]: fapi_reference.md#idba_elencamele [idba_voglioquesto]: fapi_reference.md#idba_voglioquesto [idba_dammelo]: fapi_reference.md#idba_dammelo [idba_prendilo]: fapi_reference.md#idba_prendilo [idba_dimenticami]: fapi_reference.md#idba_dimenticami [idba_remove_all]: fapi_reference.md#idba_remove_all [idba_voglioancora]: fapi_reference.md#idba_voglioancora [idba_ancora]: fapi_reference.md#idba_ancora [idba_critica]: fapi_reference.md#idba_critica [idba_scusa]: fapi_reference.md#idba_scusa [idba_messages_open_input]: fapi_reference.md#idba_messages_open_input [idba_messages_open_output]: fapi_reference.md#idba_messages_open_output [idba_messages_read_next]: fapi_reference.md#idba_messages_read_next [idba_messages_write_next]: fapi_reference.md#idba_messages_write_next [idba_spiegal]: fapi_reference.md#idba_spiegal [idba_spiegat]: fapi_reference.md#idba_spiegat [idba_spiegab]: fapi_reference.md#idba_spiegab dballe-7.21/doc/fapi_btable.md0000644000175000017500000017631313022503467013143 00000000000000# Local B table This table lists all the entries of the local B table. You can use them to provide context information for a measured value. Every entry is listed together with its measure unit, length in characters or digits and description. | Code | Description | Unit | Format | | ------ | ------------------------------------------------------------------ | ------------------ | -------------- | | 001001 | WMO BLOCK NUMBER | Numeric | 2 digits | | 001002 | WMO STATION NUMBER | Numeric | 3 digits | | 001006 | AIRCRAFT FLIGHT NUMBER | Character | 8 chars | | 001007 | SATELLITE IDENTIFIER | CODE TABLE 1007 | 3 chars | | 001008 | AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION | Character | 8 chars | | 001011 | SHIP OR MOBILE LAND STATION IDENTIFIER | Character | 9 chars | | 001012 | DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM** | DEGREE TRUE | 3 digits | | 001013 | SPEED OF MOTION OF MOVING OBSERVING PLATFORM* | M/S | 3 digits | | 001019 | LONG STATION OR SITE NAME | Character | 32 chars | | 001023 | OBSERVATION SEQUENCE NUMBER | Numeric | 3 digits | | 001033 | IDENTIFICATION OF ORIGINATING/GENERATING CENTRE | CODE TABLE 001033 | 3 chars | | 001034 | IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE | CODE TABLE 001034 | 3 chars | | 001063 | ICAO LOCATION INDICATOR | Character | 8 chars | | 001192 | [SIM] MeteoDB station ID | Numeric | 8 digits | | 001193 | [SIM] Report code | Numeric | 5 digits | | 001194 | [SIM] Report mnemonic | Character | 16 chars | | 001212 | AIR QUALITY OBSERVING STATION LOCAL CODE | Character | 7 chars | | 001213 | AIRBASE AIR QUALITY OBSERVING STATION CODE | Character | 7 chars | | 001214 | GEMS AIR QUALITY OBSERVING STATION CODE | Character | 6 chars | | 001215 | AIR QUALITY OBSERVING STATION DOMINANT EMISSION SOURCE | CODE TABLE 001215 | 1 chars | | 001216 | AIR QUALITY OBSERVING STATION AREA TYPE | CODE TABLE 001216 | 1 chars | | 001217 | AIR QUALITY OBSERVING STATION TERRAIN TYPE | CODE TABLE 001217 | 2 chars | | 002001 | TYPE OF STATION | CODE TABLE 2001 | 1 chars | | 002002 | TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT | FLAG TABLE 2002 | 2 digits | | 002003 | TYPE OF MEASURING EQUIPMENT USED | CODE TABLE 2003 | 2 chars | | 002004 | TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C | CODE TABLE 2004 | 2 chars | | 002005 | PRECISION OF TEMPERATURE OBSERVATION | K | #.## | | 002011 | RADIOSONDE TYPE | CODE TABLE 2011 | 3 chars | | 002012 | RADIOSONDE COMPUTATIONAL METHOD | CODE TABLE 2012 | 2 chars | | 002013 | SOLAR AND INFRARED RADIATION CORRECTION | CODE TABLE 2013 | 2 chars | | 002014 | TRACKING TECHNIQUE/STATUS OF SYSTEM USED | CODE TABLE 2014 | 3 chars | | 002038 | METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT | CODE TABLE 2038 | 2 chars | | 002039 | METHOD OF WET-BULB TEMPERATURE MEASUREMENT | CODE TABLE 2039 | 1 chars | | 002048 | SATELLITE SENSOR INDICATOR | CODE TABLE 2048 | 2 chars | | 002061 | AIRCRAFT NAVIGATIONAL SYSTEM | CODE TABLE 2061 | 1 chars | | 002062 | TYPE OF AIRCRAFT DATA RELAY SYSTEM | CODE TABLE 2062 | 2 chars | | 002063 | AIRCRAFT ROLL ANGLE | DEGREE | ###.## | | 002064 | AIRCRAFT ROLL ANGLE QUALITY | CODE TABLE 2064 | 1 chars | | 002070 | ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE | CODE TABLE 2070 | 2 chars | | 002121 | MEAN FREQUENCY | Hz | ###00000000 | | 002125 | PULSE REPETITION FREQUENCY | Hz | ###0 | | 004001 | YEAR | YEAR | 4 digits | | 004002 | MONTH | MONTH | 2 digits | | 004003 | DAY | DAY | 2 digits | | 004004 | HOUR | HOUR | 2 digits | | 004005 | MINUTE | MINUTE | 2 digits | | 004006 | SECOND | SECOND | 2 digits | | 004086 | LONG TIME PERIOD OR DISPLACEMENT | SECOND | 5 digits | | 004192 | [SIM] Time range type | Numeric | 4 digits | | 004193 | [SIM] Time range P1 | Numeric | 10 digits | | 004194 | [SIM] Time range P2 | Numeric | 10 digits | | 004195 | [SIM] Temperature event - time of occurrence | MINUTE | 4 digits | | 004196 | [SIM] Relative humidity event - time of occurrence | MINUTE | 4 digits | | 004197 | [SIM] Wind velocity event - time of occurrence | MINUTE | 4 digits | | 004198 | [SIM] Pressure event - time of occurrence | MINUTE | 4 digits | | 005001 | LATITUDE (HIGH ACCURACY) | DEGREE | ##.##### | | 005015 | LATITUDE DISPLACEMENT (HIGH ACCURACY) | DEGREE | ##.##### | | 005021 | BEARING OR AZIMUTH | DEGREE TRUE | ###.## | | 005022 | SOLAR AZIMUTH | DEGREE TRUE | ###.## | | 005040 | ORBIT NUMBER | Numeric | 8 digits | | 005041 | SCAN LINE NUMBER | Numeric | 3 digits | | 005043 | FIELD OF VIEW NUMBER | Numeric | 3 digits | | 006001 | LONGITUDE (HIGH ACCURACY) | DEGREE | ###.##### | | 006015 | LONGITUDE DISPLACEMENT (HIGH ACCURACY) | DEGREE | ###.##### | | 007002 | HEIGHT OR ALTITUDE | M | #####0 | | 007004 | PRESSURE | PA | #####0 | | 007007 | HEIGHT | M | 6 digits | | 007010 | FLIGHT LEVEL | FT | #####0 | | 007024 | SATELLITE ZENITH ANGLE | DEGREE | ###.## | | 007025 | SOLAR ZENITH ANGLE | DEGREE | ###.## | | 007030 | HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3) | M | ####.# | | 007031 | HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4) | M | ####.# | | 007032 | HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) | M | ###.## | | 007192 | [SIM] First level type | Numeric | 4 digits | | 007193 | [SIM] Level L1 | Numeric | 10 digits | | 007194 | [SIM] Level L2 | Numeric | 10 digits | | 007195 | [SIM] Second level type | Numeric | 4 digits | | 008002 | VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS) | CODE TABLE 8002 | 2 chars | | 008004 | PHASE OF AIRCRAFT FLIGHT | CODE TABLE 8004 | 1 chars | | 008009 | DETAILED PHASE OF FLIGHT | CODE TABLE 8009 | 2 chars | | 008021 | TIME SIGNIFICANCE | CODE TABLE 8021 | 2 chars | | 008042 | EXTENDED VERTICAL SOUNDING SIGNIFICANCE | FLAG TABLE 8042 | 6 digits | | 008044 | (VAL) CAS REGISTRY NUMBER | Character | 11 chars | | 008192 | [SIM] Number of wind velocity mean values present | Numeric | 2 digits | | 008193 | [SIM] Number of wind velocity minimum values present | Numeric | 2 digits | | 008194 | [SIM] Number of wind velocity maximum values present | Numeric | 2 digits | | 008195 | [SIM] Number of wind prevalent direction values present | Numeric | 2 digits | | 008196 | [SIM] Number of mean temperature values present | Numeric | 2 digits | | 008197 | [SIM] Number of minimum temperature values present | Numeric | 2 digits | | 008198 | [SIM] Number of maximum temperature values present | Numeric | 2 digits | | 008199 | [SIM] Number of mean relative humidity values present | Numeric | 2 digits | | 008200 | [SIM] Number of minimum relative humidity values present | Numeric | 2 digits | | 008201 | [SIM] Number of maximum relative humidity values present | Numeric | 2 digits | | 008202 | [SIM] Number of mean pressure values present | Numeric | 2 digits | | 008203 | [SIM] Number of minimum pressure values present | Numeric | 2 digits | | 008204 | [SIM] Number of maximum pressure values present | Numeric | 2 digits | | 008205 | [SIM] Number of precipitation values present | Numeric | 2 digits | | 008206 | [SIM] Number of leaf wetness values present | Numeric | 2 digits | | 008207 | [SIM] Number of scalar wind velocity mean values present | Numeric | 2 digits | | 008208 | [SIM] Number of cloud cover mean values present | Numeric | 2 digits | | 008209 | [SIM] Number of cloud cover maximum values present | Numeric | 2 digits | | 008210 | [SIM] Number of cloud cover minimum values present | Numeric | 2 digits | | 010004 | PRESSURE | PA | #####0 | | 010007 | HEIGHT | M | 6 digits | | 010008 | GEOPOTENTIAL | M**2/S**2 | 7 digits | | 010009 | GEOPOTENTIAL HEIGHT | GPM | 5 digits | | 010051 | PRESSURE REDUCED TO MEAN SEA LEVEL | PA | #####0 | | 010052 | ALTIMETER SETTING (QNH) | PA | #####0 | | 010060 | PRESSURE CHANGE | PA | ####0 | | 010063 | CHARACTERISTIC OF PRESSURE TENDENCY | CODE TABLE 10063 | 2 chars | | 010197 | ANEMOMETER HEIGHT | M | 3 digits | | 011001 | WIND DIRECTION | DEGREE TRUE | 3 digits | | 011002 | WIND SPEED | M/S | ###.# | | 011003 | U-COMPONENT | M/S | ###.# | | 011004 | V-COMPONENT | M/S | ###.# | | 011005 | W-COMPONENT | PA/S | ###.# | | 011006 | W-COMPONENT | M/S | ##.## | | 011016 | EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND | DEGREE TRUE | 3 digits | | 011017 | EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND | DEGREE TRUE | 3 digits | | 011031 | DEGREE OF TURBULENCE | CODE TABLE 11031 | 2 chars | | 011036 | MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED | M/S | ###.# | | 011037 | TURBULENCE INDEX | CODE TABLE 11037 | 2 chars | | 011039 | EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE | CODE TABLE 11039 | 2 chars | | 011041 | MAXIMUM WIND GUST SPEED | M/S | ###.# | | 011043 | MAXIMUM WIND GUST DIRECTION | DEGREE TRUE | 3 digits | | 011050 | STANDARD DEVIATION OF HORIZONTAL WIND SPEED | M/S | ###.# | | 011061 | ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW | M/S | ###.# | | 011062 | ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE | M/S | ###.# | | 011075 | MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE) | M**(2/3)/S | #.## | | 011076 | PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE) | M**(2/3)/S | #.## | | 011077 | REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE | S | 4 digits | | 011192 | [SIM] W-component terrain following | M/S | ##.## | | 011193 | [SIM] Stability class | Numeric | 2 digits | | 011194 | [SIM] Friction velocity (calmet) | M/S | #.### | | 011195 | [SIM] Mixing height (calmet) | M | 4 digits | | 011196 | [SIM] Obukov lenght (calmet) | M | ####.# | | 011197 | [SIM] Convective velocitiy scale (calmet) | M/S | #.### | | 011198 | [SIM] SQRT(2*TKE) | M/S | ##.#### | | 011199 | [SIM] Surface Roughness | M | ###.# | | 011200 | [SIM] U-component of momentum flux | N/M**2 | ##.#### | | 011201 | [SIM] V-component of momentum flux | N/M**2 | ##.#### | | 011202 | [SIM] Friction velocity (diagmet) | M/S | #.### | | 011203 | [SIM] Mixing height (diagmet) | M | 4 digits | | 011204 | [SIM] Obukov lenght (diagmet) | M | ####.# | | 011205 | [SIM] Convective velocitiy scale (diagmet) | M/S | #.### | | 011206 | [SIM] Friction velocity (COSMO) | M/S | #.### | | 011207 | [SIM] Obukov lenght (COSMO) | M | ####.# | | 011208 | [SIM] Distance covered by the hourly mean wind | M | 7 digits | | 012001 | TEMPERATURE/AIR TEMPERATURE | C | ##.# | | 012003 | DEW-POINT TEMPERATURE | C | ##.# | | 012030 | SOIL TEMPERATURE | C | ##.# | | 012049 | Temperature change over specified period | C | 2 digits | | 012061 | SKIN TEMPERATURE | K | ###.# | | 012063 | BRIGHTNESS TEMPERATURE | K | ###.# | | 012101 | TEMPERATURE/DRY-BULB TEMPERATURE | K | ###.## | | 012102 | WET-BULB TEMPERATURE | C | ##.## | | 012103 | DEW-POINT TEMPERATURE | K | ###.## | | 012121 | GROUND MINIMUM TEMPERATURE | C | ##.## | | 012131 | SNOW TEMPERATURE | C | ##.## | | 012192 | POTENTIAL TEMPERATURE | K | ###.## | | 012193 | PSEUDO-EQUIVALENT POTENTIAL TEMPERATURE | K | ###.## | | 012194 | [SIM] Air density | KG/M**3 | .###### | | 013001 | SPECIFIC HUMIDITY | KG/KG | .##### | | 013002 | MIXING RATIO | KG/KG | .##### | | 013003 | RELATIVE HUMIDITY | % | 3 digits | | 013011 | TOTAL PRECIPITATION / TOTAL WATER EQUIVALENT | KG/M**2 | ####.# | | 013012 | DEPTH OF FRESH SNOW | M | ##.## | | 013013 | TOTAL SNOW DEPTH | M | ###.### | | 013031 | EVAPOTRANSPIRATION | KG/M**2 | 3 digits | | 013033 | EVAPORATION/EVAPOTRANSPIRATION | KG/M**2 | ###.# | | 013080 | WATER PH | pH | ##.# | | 013081 | WATER CONDUCTIVITY | S/M | #.### | | 013082 | WATER TEMPERATURE | K | ###.# | | 013083 | DISSOLVED OXYGEN | KG/M**3 | .###### | | 013192 | [SIM] Cloud liquid water content | KG/KG | .######## | | 013193 | [SIM] Cloud ice content | KG/KG | .######## | | 013194 | [SIM] Water table depth | M | ###.### | | 013195 | [SIM] Precipitating liquid water | KG/KG | .######## | | 013196 | [SIM] Precipitating ice | KG/KG | .######## | | 013197 | [SIM] Total precipitating water+ice | KG/KG | .######## | | 013198 | [SIM] Total liquid water (cloud+precipitating) | KG/KG | .######## | | 013199 | [SIM] Total ice (cloud+precipitating) | KG/KG | .######## | | 013200 | [SIM] Grid-scale liquid precipitation | KG/M**2 | ####.# | | 013201 | [SIM] Grid-scale snowfall | KG/M**2 | ####.# | | 013202 | [SIM] Convective liquid precipitation | KG/M**2 | ####.# | | 013203 | [SIM] Convective snowfall | KG/M**2 | ####.# | | 013204 | [SIM] Total convective precipitation (liquid + snow) | KG/M**2 | ####.# | | 013205 | [SIM] Snowfall (grid-scale + convective) | KG/M**2 | ####.# | | 013206 | [SIM] Soil water content | KG/M**2 | ####.# | | 013210 | [SIM] Penetration of the probe in the snow | M | #.## | | 013212 | [SIM] Leaf wetness duration | S | #######0 | | 013215 | [SIM] River level | M | ####.## | | 013216 | [SIM] Hourly precipitation | KG/M**2 | ####.# | | 013217 | [SIM] 5 minutes precipitation | KG/M**2 | ####.# | | 013218 | [SIM] 10 minutes precipitation | KG/M**2 | ####.# | | 013219 | [SIM] 15 minutes precipitation | KG/M**2 | ####.# | | 013220 | [SIM] 20 minutes precipitation | KG/M**2 | ####.# | | 013221 | [SIM] 30 minutes precipitation | KG/M**2 | ####.# | | 013222 | [SIM] 180 minutes precipitation | KG/M**2 | ####.# | | 013223 | [SIM] 360 minutes precipitation | KG/M**2 | ####.# | | 013224 | [SIM] 720 minutes precipitation | KG/M**2 | ####.# | | 013225 | [SIM] 1440 minutes precipitation | KG/M**2 | ####.# | | 013226 | [SIM] River discharge | M**3/S | #####.## | | 013227 | [SIM] Soil volumetric water content | % | ###.# | | 013228 | [SIM] Piezometric level | M | ###.### | | 013229 | [SIM] Density of snow | KG/M**3 | ####.# | | 013230 | [SIM] Convective Available Potential Energy (CAPE) | J/KG | ####.# | | 013231 | [SIM] Ossigeno disciolto sat | % | ###.# | | 014002 | Long-wave radiation, integrated over period specified | J M-2 | #####000 | | 014004 | Short-wave radiation, integrated over period specified | J M-2 | #####000 | | 014016 | NET RADIATION | J/M**2 | #####0000 | | 014017 | INSTANTANEOUS LONG-WAVE RADIATION (incoming) | W/M**2 | 4 digits | | 014018 | INSTANTANEOUS SHORT-WAVE RADIATION (incoming) | W/M**2 | ####000 | | 014019 | SURFACE ALBEDO | % | 3 digits | | 014021 | GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED | J/M**2 | #####0000 | | 014028 | Global solar radiation (high accuracy), integrated over period s | J M-2 | ######00 | | 014029 | Diffuse solar radiation (high accuracy), integrated over period | J M-2 | ######00 | | 014030 | Direct solar radiation (high accuracy), integrated over period s | J M-2 | ######00 | | 014031 | TOTAL SUNSHINE | MINUTE | 4 digits | | 014192 | [SIM] Instantenous sensible heat flux | W/M**2 | 4 digits | | 014193 | [SIM] Instantenous latent heat flux | W/M**2 | 4 digits | | 014194 | [SIM] Instantenous direct solar radiation | W/M**2 | ####000 | | 014195 | [SIM] Instantenous diffuse solar radiation | W/M**2 | ####000 | | 014196 | [SIM] INSTANTANEOUS NET LONG-WAVE RADIATION | W/M**2 | 4 digits | | 014197 | [SIM] INSTANTANEOUS NET SHORT-WAVE RADIATION | W/M**2 | ####000 | | 014198 | [SIM] Visible radiation (downward) | W/M**2 | ####.### | | 014199 | [SIM] Visible radiation (upward) | W/M**2 | ####.### | | 014200 | [SIM] Infrared radiation (downward) | W/M**2 | ####.### | | 014201 | [SIM] Infrared radiation (upward) | W/M**2 | ####.### | | 015192 | [SIM] NO Concentration | KG/M**3 | .########## | | 015193 | [SIM] NO2 Concentration | KG/M**3 | .########## | | 015194 | [SIM] O3 Concentration | KG/M**3 | .########## | | 015195 | [SIM] PM10 Concentration | KG/M**3 | .########## | | 015196 | [SIM] CO Concentration | KG/M**3 | .########## | | 015197 | [SIM] SO2 Concentration | KG/M**3 | .########## | | 015198 | [SIM] PM2.5 Concentration | KG/M**3 | .########## | | 015199 | [SIM] NOY Concentration | KG/M**3 | .########## | | 015200 | [SIM] HCNM Concentration | KG/M**3 | .########## | | 015201 | [SIM] ALDE Concentration | KG/M**3 | .########## | | 015202 | [SIM] PM5 Concentration (tot. aerosol < 5 ug) | KG/M**3 | .########## | | 015203 | [SIM] PM1 Concentration (tot. aerosol < 1.25 ug) | KG/M**3 | .########## | | 015204 | [SIM] PM06 Concentration (tot. aerosol < 0.6 ug) | KG/M**3 | .########## | | 015205 | [SIM] PM03 Concentration (tot. aerosol < 0.3 ug) | KG/M**3 | .########## | | 015206 | [SIM] PM015 Concentration (tot. aerosol < 0.15 ug) | KG/M**3 | .########## | | 015207 | [SIM] PM008 Concentration (tot. aerosol < 0.08 ug) | KG/M**3 | .########## | | 015208 | [SIM] Concentration of primary particulate matter in PM10 | KG/M**3 | .########## | | 015209 | [SIM] Concentration of sulfate in PM10 | KG/M**3 | .########## | | 015210 | [SIM] Concentration of nitrate in PM10 | KG/M**3 | .########## | | 015211 | [SIM] Concentration of ammonium in PM10 | KG/M**3 | .########## | | 015212 | [SIM] Concentration of black carbon in PM10 | KG/M**3 | .########## | | 015213 | [SIM] Concentration of organic carbon in PM10 | KG/M**3 | .########## | | 015214 | [SIM] Concentration of dust in PM10 | KG/M**3 | .########## | | 015215 | [SIM] Concentration of anthrop. A1D in PM10 | KG/M**3 | .########## | | 015216 | [SIM] Concentration of anthrop. BmP in PM10 | KG/M**3 | .########## | | 015217 | [SIM] Concentration of biogenic A1D in PM10 | KG/M**3 | .########## | | 015218 | [SIM] Concentration of biogenic BmP in PM10 | KG/M**3 | .########## | | 015219 | [SIM] Concentration of water in PM10 | KG/M**3 | .########## | | 015220 | [SIM] Concentration of sea salt in PM10 | KG/M**3 | .########## | | 015221 | [SIM] Concentration of secondary organic aerosol in PM10 | KG/M**3 | .########## | | 015222 | [SIM] Total concentration of primary aerosol in PM10 | KG/M**3 | .########## | | 015223 | [SIM] Total concentration of secondary aerosol in PM10 | KG/M**3 | .########## | | 015224 | [SIM] Uncertainity in O3 estimate (Pesco) | KG/M**3 | .########## | | 015225 | [SIM] Uncertainity in PM10 estimate (Pesco) | KG/M**3 | .########## | | 015226 | [SIM] Uncertainity in NO2 estimate (Pesco) | KG/M**3 | .########## | | 015227 | [SIM] Uncertainity in PM2.5 estimate (Pesco) | KG/M**3 | .########## | | 015228 | [SIM] NH3 Concentration | KG/M**3 | .########## | | 015229 | [SIM] Concentration of primary part. matter in aerosol | KG/M**3 | .########## | | 015230 | [SIM] Concentration of sulfate in aerosol | KG/M**3 | .########## | | 015231 | [SIM] Concentration of nitrate in aerosol | KG/M**3 | .########## | | 015232 | [SIM] Concentration of ammonium in aerosol | KG/M**3 | .########## | | 015233 | [SIM] Concentration of anthrop. sec. org. in aerosol | KG/M**3 | .########## | | 015234 | [SIM] Concentration of biogenic sec. org. in aerosol | KG/M**3 | .########## | | 015235 | [SIM] Concentration of ISOPA1 in PM10 | KG/M**3 | .########## | | 015236 | [SIM] C6H6 Concentration | KG/M**3 | .########## | | 015237 | [SIM] Concentration of anthropogenic aerosol in PM10 | KG/M**3 | .########## | | 015238 | [SIM] Concentration of biogenic aerosol in PM10 | KG/M**3 | .########## | | 015239 | [SIM] Concentration of anthropogenic aerosol in PM2.5 | KG/M**3 | .########## | | 015240 | [SIM] Concentration of biogenic aerosol in PM2.5 | KG/M**3 | .########## | | 015241 | [SIM] Aerosol Optical Thickness | Numeric | #.#### | | 020001 | HORIZONTAL VISIBILITY | M | ####0 | | 020003 | PRESENT WEATHER (SEE NOTE 1) | CODE TABLE 20003 | 3 chars | | 020004 | PAST WEATHER (1) (SEE NOTE 2) | CODE TABLE 20004 | 2 chars | | 020005 | PAST WEATHER (2) (SEE NOTE 2) | CODE TABLE 20005 | 2 chars | | 020009 | GENERAL WEATHER INDICATOR (TAF/METAR) | CODE TABLE 20009 | 2 chars | | 020010 | CLOUD COVER (TOTAL) | % | 3 digits | | 020011 | CLOUD AMOUNT | CODE TABLE 20011 | 2 chars | | 020012 | CLOUD TYPE | CODE TABLE 20012 | 2 chars | | 020013 | HEIGHT OF BASE OF CLOUD | M | 5 digits | | 020017 | CLOUD TOP DESCRIPTION | CODE TABLE 20017 | 2 chars | | 020019 | SIGNIFICANT PRESENT OR FORECAST WEATHER | Character | 9 chars | | 020021 | TYPE OF PRECIPITATION | FLAG TABLE 20021 | 10 digits | | 020031 | ICE DEPOSIT (THICKNESS) | M | #.## | | 020032 | RATE OF ICE ACCRETION | CODE TABLE 20032 | 1 chars | | 020033 | CAUSE OF ICE ACCRETION | FLAG TABLE 20033 | 2 digits | | 020034 | SEA ICE CONCENTRATION | CODE TABLE 20034 | 2 chars | | 020035 | AMOUNT AND TYPE OF ICE | CODE TABLE 20035 | 2 chars | | 020036 | ICE SITUATION | CODE TABLE 20036 | 2 chars | | 020037 | ICE DEVELOPMENT | CODE TABLE 20037 | 2 chars | | 020038 | BEARING OF ICE EDGE (SEE NOTE 3) | DEGREE TRUE | 3 digits | | 020042 | AIRFRAME ICING PRESENT | CODE TABLE 20042 | 1 chars | | 020043 | PEAK LIQUID WATER CONTENT | KG/M**3 | .#### | | 020044 | AVERAGE LIQUID WATER CONTENT | KG/M**3 | .#### | | 020045 | SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS | CODE TABLE 20045 | 2 chars | | 020062 | STATE OF THE GROUND (WITH OR WITHOUT SNOW) | CODE TABLE 20062 | 2 chars | | 020192 | [SIM] Presence of rain > 1mm | BOOLEAN | 1 digits | | 020193 | [SIM] Cloud type (METAR) | Character | 2 chars | | 020194 | [SIM] Presence of shower | BOOLEAN | 1 digits | | 020195 | [SIM] Presence of hail | BOOLEAN | 1 digits | | 020196 | [SIM] Presence of thunderstorm | BOOLEAN | 1 digits | | 020197 | [SIM] Presence of snow | BOOLEAN | 1 digits | | 020198 | [SIM] Presence of frost | BOOLEAN | 1 digits | | 020199 | [SIM] Presence of dew | BOOLEAN | 1 digits | | 020200 | [SIM] Presence of fog | BOOLEAN | 1 digits | | 020201 | [SIM] Presence of water-spout | BOOLEAN | 1 digits | | 020202 | [SIM] State of the ground with snow | CODE TABLE | 2 chars | | 022001 | DIRECTION OF WAVES | DEGREE TRUE | 3 digits | | 022002 | DIRECTION OF WIND WAVES | DEGREE TRUE | 3 digits | | 022003 | DIRECTION OF SWELL WAVES | DEGREE TRUE | 3 digits | | 022004 | DIRECTION OF CURRENT | DEGREE TRUE | 3 digits | | 022011 | PERIOD OF WAVES | S | 2 digits | | 022012 | PERIOD OF WIND WAVES | S | 2 digits | | 022013 | PERIOD OF SWELL WAVES | S | 2 digits | | 022021 | HEIGHT OF WAVES | M | ###.# | | 022022 | HEIGHT OF WIND WAVES | M | ###.# | | 022023 | HEIGHT OF SWELL WAVES | M | ###.# | | 022031 | SPEED OF CURRENT | M/S | ##.## | | 022032 | SPEED OF SEA SURFACE CURRENT | M/S | ##.## | | 022037 | Tidal elevation with respect to national land datum | M | ##.### | | 022038 | Tidal elevation with respect to local chart datum | M | ##.### | | 022043 | SEA/WATER TEMPERATURE | K | ###.## | | 022049 | SEA-SURFACE TEMPERATURE | K | ###.## | | 022062 | SALINITY | PART PER THOUSAND | ###.## | | 022063 | TOTAL WATER DEPTH | M | 5 digits | | 022066 | WATER CONDUCTIVITY | S M-1 | ##.###### | | 022070 | SIGNIFICANT WAVE HEIGHT | M | ##.## | | 022071 | SPECTRAL PEAK WAVE PERIOD | S | ##.# | | 022073 | MAXIMUM WAVE HEIGHT | M | ##.## | | 022074 | AVERAGE WAVE PERIOD | S | ##.# | | 022192 | [SIM] Current X component | M/S | ##.## | | 022193 | [SIM] Current Y component | M/S | ##.## | | 022194 | [SIM] Concentrazione clorofilla a | microg/l | ####.## | | 023192 | [SIM] Dry deposition of H2SO4 | MOL/M**3 | #.##### | | 023193 | [SIM] Wet deposition of H2SO4 | MOL/M**3 | #.##### | | 023194 | [SIM] Dry deposition of NH4 | MOL/M**3 | #.##### | | 023195 | [SIM] Wet deposition of NH4 | MOL/M**3 | #.##### | | 023196 | [SIM] Dry deposition of HNO3 | MOL/M**3 | #.##### | | 023197 | [SIM] Wet deposition of HNO3 | MOL/M**3 | #.##### | | 023198 | [SIM] Solid transport by river | KG/S | ######.## | | 025076 | LOG-10 OF (TEMP-RAD CENTRAL WAVENUMBER) FOR ATOVS | LOGM-1 | ##.######## | | 029192 | [SIM] Land fraction | % | ###.# | | 031000 | SHORT DELAYED DESCRIPTOR REPLICATION FACTOR | Numeric | 1 digits | | 031001 | DELAYED DESCRIPTOR REPLICATION FACTOR | Numeric | 3 digits | | 031002 | EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR | Numeric | 5 digits | | 031011 | DELAYED DESCRIPTOR AND DATA REPETITION FACTOR | Numeric | 3 digits | | 031012 | EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR | Numeric | 5 digits | | 031021 | ASSOCIATED FIELD SIGNIFICANCE | CODE TABLE 31021 | 2 chars | | 031031 | DATA PRESENT INDICATOR | FLAG TABLE 31031 | 1 digits | | 033002 | QUALITY INFORMATION | CODE TABLE 33002 | 1 chars | | 033003 | QUALITY INFORMATION | CODE TABLE 33003 | 1 chars | | 033005 | QUALITY INFORMATION (AWS DATA) | FLAG TABLE 33005 | 10 digits | | 033006 | INTERNAL MEASUREMENT STATUS INFORMATION (AWS) | CODE TABLE 33006 | 1 chars | | 033007 | PER CENT CONFIDENCE | % | 3 digits | | 033015 | DATA QUALITY CHECK INDICATOR | CODE TABLE 33015 | 2 chars | | 033020 | QUALITY CONTROL INDICATION OF FOLLOWING VALUE | CODE TABLE 33020 | 1 chars | | 033021 | QUALITY OF FOLLOWING VALUE | CODE TABLE 33021 | 1 chars | | 033022 | QUALITY OF BUOY SATELLITE TRANSMISSION | CODE TABLE 33022 | 1 chars | | 033023 | QUALITY OF BUOY LOCATION | CODE TABLE 33023 | 1 chars | | 033024 | STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) | CODE TABLE 33024 | 2 chars | | 033025 | ACARS INTERPOLATED VALUES | CODE TABLE 33025 | 1 chars | | 033026 | MOISTURE QUALITY | CODE TABLE 33026 | 2 chars | | 033027 | LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) | CODE TABLE 33027 | 1 chars | | 033030 | SCAN LINE STATUS FLAGS FOR ATOVS | FLAG TABLE 33030 | 8 digits | | 033031 | SCAN LINE QUALITY FLAGS FOR ATOVS | FLAG TABLE 33031 | 8 digits | | 033032 | CHANNEL QUALITY FLAGS FOR ATOVS | FLAG TABLE 33032 | 8 digits | | 033033 | FIELD OF VIEW QUALITY FLAGS FOR ATOVS | FLAG TABLE 33033 | 8 digits | | 033035 | MANUAL/AUTOMATIC QUALITY CONTROL | CODE TABLE 33035 | 2 chars | | 033036 | NOMINAL CONFIDENCE THRESHOLD | % | 3 digits | | 033037 | WIND CORRELATION ERROR | FLAG TABLE 33037 | 7 digits | | 033038 | QUALITY FLAGS FOR GROUND-BASED GNSS DATA | FLAG TABLE 33038 | 4 digits | | 033040 | CONFIDENCE INTERVAL | PERCENT | 3 digits | | 033041 | ATTRIBUTE OF FOLLOWING VALUE | CODE TABLE 33041 | 1 chars | | 033050 | GLOBAL GTSPP QUALITY FLAG | CODE TABLE 33050 | 2 chars | | 033192 | [SIM] Climatological and consistency check | PERCENT | 3 digits | | 033193 | [SIM] Time consistency | PERCENT | 3 digits | | 033194 | [SIM] Space consistency | PERCENT | 3 digits | | 033195 | [SIM] MeteoDB variable ID | Numeric | 8 digits | | 033196 | [SIM] Data has been invalidated | CODE TABLE 33196 | 1 chars | | 033197 | [SIM] Manual replacement in substitution | CODE TABLE 33197 | 1 chars | | 033198 | [SIM] Observation increment | Numeric | ######.#### | | 033201 | [SIM] Kalman coefficient, state vector (s.v.) x1 | Numeric | ######.#### | | 033202 | [SIM] Kalman coefficient, state vector (s.v.) x2 | Numeric | ######.#### | | 033203 | [SIM] Kalman coefficient, s.v. error covariance matrix(1,1) | Numeric | ######.#### | | 033204 | [SIM] Kalman coefficient, s.v. error covariance matrix(1,2) | Numeric | ######.#### | | 033205 | [SIM] Kalman coefficient, s.v. error covariance matrix(2,1) | Numeric | ######.#### | | 033206 | [SIM] Kalman coefficient, s.v. error covariance matrix(2,2) | Numeric | ######.#### | | 033207 | [SIM] Kalman observation sequential counter | Numeric | 3 digits | | 033208 | [SIM] Kalman osservation missing counter | Numeric | 3 digits | | 033209 | [SIM] Normalized Density Index | PERCENT | 3 digits | | 048001 | [SIM] Graminacee_Graminacee indistinte | POLLEN/M**3 | #######.# | | 048002 | [SIM] Betulacee_Ontano nero | POLLEN/M**3 | #######.# | | 048003 | [SIM] Betulacee_Betulla | POLLEN/M**3 | #######.# | | 048004 | [SIM] Betulacee_Betulacee indistinte | POLLEN/M**3 | #######.# | | 048005 | [SIM] Composite_Ambrosia | POLLEN/M**3 | #######.# | | 048006 | [SIM] Composite_Artemisia | POLLEN/M**3 | #######.# | | 048007 | [SIM] Composite_Composite indistinte | POLLEN/M**3 | #######.# | | 048008 | [SIM] Corilacee_Nocciolo | POLLEN/M**3 | #######.# | | 048009 | [SIM] Corilacee_Carpino bianco -Carpino nero | POLLEN/M**3 | #######.# | | 048010 | [SIM] Corilacee_Corilacee indistinte | POLLEN/M**3 | #######.# | | 048011 | [SIM] Fagacee_Castagno | POLLEN/M**3 | #######.# | | 048012 | [SIM] Fagacee_Faggio | POLLEN/M**3 | #######.# | | 048013 | [SIM] Fagacee_Quercia | POLLEN/M**3 | #######.# | | 048014 | [SIM] Fagacee_Fagacee indistinte | POLLEN/M**3 | #######.# | | 048015 | [SIM] Oleacee_Olivo | POLLEN/M**3 | #######.# | | 048016 | [SIM] Oleacee_Frassino | POLLEN/M**3 | #######.# | | 048017 | [SIM] Oleacee_Oleacee indistinte | POLLEN/M**3 | #######.# | | 048018 | [SIM] Plantaginacee_Plantaginacee indistinte | POLLEN/M**3 | #######.# | | 048019 | [SIM] Urticacee_Urticacee indistinte | POLLEN/M**3 | #######.# | | 048020 | [SIM] Cupressacee - Taxacee indistinte_Cipresso comune | POLLEN/M**3 | #######.# | | 048021 | [SIM] Cupressacee - Taxacee indistinte_Cupressacee - Taxacee ind | POLLEN/M**3 | #######.# | | 048022 | [SIM] Chenopodiacee - Amarantacee Indistinte_Amaranto | POLLEN/M**3 | #######.# | | 048023 | [SIM] Chenopodiacee - Amarantacee Indistinte_Chenopodiacee - Ama | POLLEN/M**3 | #######.# | | 048024 | [SIM] Poligonacee_Poligonacee indistinte | POLLEN/M**3 | #######.# | | 048025 | [SIM] Euphorbiacee_Euforbiacee indistinte | POLLEN/M**3 | #######.# | | 048026 | [SIM] Mirtacee_Mirtacee indistinte | POLLEN/M**3 | #######.# | | 048027 | [SIM] Ulmacee_Bagolaro comune | POLLEN/M**3 | #######.# | | 048028 | [SIM] Ulmacee_Olmo campestre | POLLEN/M**3 | #######.# | | 048029 | [SIM] Ulmacee_Ulmacee indistinte | POLLEN/M**3 | #######.# | | 048030 | [SIM] Platanacee_Platanacee indistinte | POLLEN/M**3 | #######.# | | 048031 | [SIM] Aceraceae_Aceracee indistinte | POLLEN/M**3 | #######.# | | 048032 | [SIM] Pinacee_Pinacee indistinte | POLLEN/M**3 | #######.# | | 048033 | [SIM] Salicacee_Salice comune | POLLEN/M**3 | #######.# | | 048034 | [SIM] Salicacee_Pioppo | POLLEN/M**3 | #######.# | | 048035 | [SIM] Salicacee_Salicacee indistinte | POLLEN/M**3 | #######.# | | 048036 | [SIM] Ciperacee_Ciperacee indistinte | POLLEN/M**3 | #######.# | | 048037 | [SIM] Juglandacee_Juglandacee indistinte | POLLEN/M**3 | #######.# | | 048038 | [SIM] Ippocastanacee_Ippocastanacee indistinte | POLLEN/M**3 | #######.# | | 048039 | [SIM] Spore fungine_Alternaria | POLLEN/M**3 | #######.# | | 048040 | [SIM] Spore fungine_Botrytis | POLLEN/M**3 | #######.# | | 048041 | [SIM] Spore fungine_Stemphylium | POLLEN/M**3 | #######.# | | 048042 | [SIM] Spore fungine_Cladosporium | POLLEN/M**3 | #######.# | | 048043 | [SIM] Spore fungine_Epicoccum | POLLEN/M**3 | #######.# | | 048044 | [SIM] Altri Pollini / Non Identificati_Altri pollini identificat | POLLEN/M**3 | #######.# | | 048045 | [SIM] Altri Pollini / Non Identificati_Pollini non identificati | POLLEN/M**3 | #######.# | | 048046 | [SIM] Altre Spore / Non identificati_Altre spore fungine | POLLEN/M**3 | #######.# | | 048047 | [SIM] Altre Spore / Non identificati_Spore fungine non identific | POLLEN/M**3 | #######.# | | 048048 | [SIM] Graminacee_Graminacee indistinte 1 | POLLEN/M**3 | #######.# | | 048049 | [SIM] Plantaginacee_Plantaginacee indistinte 1 | POLLEN/M**3 | #######.# | | 048050 | [SIM] Urticacee_Urticacee indistinte 1 | POLLEN/M**3 | #######.# | | 048051 | [SIM] Poligonacee_Poligonacee indistinte 1 | POLLEN/M**3 | #######.# | | 048052 | [SIM] Euphorbiacee_Euforbiacee indistinte 1 | POLLEN/M**3 | #######.# | | 048053 | [SIM] Mirtacee_Mirtacee indistinte 1 | POLLEN/M**3 | #######.# | | 048054 | [SIM] Platanacee_Platanacee indistinte 1 | POLLEN/M**3 | #######.# | | 048055 | [SIM] Aceraceae_Aceracee indistinte 1 | POLLEN/M**3 | #######.# | | 048056 | [SIM] Pinacee_Pinacee indistinte 1 | POLLEN/M**3 | #######.# | | 048057 | [SIM] Ciperacee_Ciperacee indistinte 1 | POLLEN/M**3 | #######.# | | 048058 | [SIM] Juglandacee_Juglandacee indistinte 1 | POLLEN/M**3 | #######.# | | 048059 | [SIM] Ippocastanacee_Ippocastanacee indistinte 1 | POLLEN/M**3 | #######.# | | 048060 | [SIM] Oleacee_Ligustro | POLLEN/M**3 | #######.# | | 048128 | [SIM] Conta Graminacee_Graminacee indistinte | Numeric | 7 digits | | 048129 | [SIM] Conta Betulacee_Ontano nero | Numeric | 7 digits | | 048130 | [SIM] Conta Betulacee_Betulla | Numeric | 7 digits | | 048131 | [SIM] Conta Betulacee_Betulacee indistinte | Numeric | 7 digits | | 048132 | [SIM] Conta Composite_Ambrosia | Numeric | 7 digits | | 048133 | [SIM] Conta Composite_Artemisia | Numeric | 7 digits | | 048134 | [SIM] Conta Composite_Composite indistinte | Numeric | 7 digits | | 048135 | [SIM] Conta Corilacee_Nocciolo | Numeric | 7 digits | | 048136 | [SIM] Conta Corilacee_Carpino bianco -Carpino nero | Numeric | 7 digits | | 048137 | [SIM] Conta Corilacee_Corilacee indistinte | Numeric | 7 digits | | 048138 | [SIM] Conta Fagacee_Castagno | Numeric | 7 digits | | 048139 | [SIM] Conta Fagacee_Faggio | Numeric | 7 digits | | 048140 | [SIM] Conta Fagacee_Quercia | Numeric | 7 digits | | 048141 | [SIM] Conta Fagacee_Fagacee indistinte | Numeric | 7 digits | | 048142 | [SIM] Conta Oleacee_Olivo | Numeric | 7 digits | | 048143 | [SIM] Conta Oleacee_Frassino | Numeric | 7 digits | | 048144 | [SIM] Conta Oleacee_Oleacee indistinte | Numeric | 7 digits | | 048145 | [SIM] Conta Plantaginacee_Plantaginacee indistinte | Numeric | 7 digits | | 048146 | [SIM] Conta Urticacee_Urticacee indistinte | Numeric | 7 digits | | 048147 | [SIM] Conta Cupressacee - Taxacee indistinte_Cipresso comune | Numeric | 7 digits | | 048148 | [SIM] Conta Cupressacee - Taxacee indistinte_Cupressacee - Taxac | Numeric | 7 digits | | 048149 | [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Amaranto | Numeric | 7 digits | | 048150 | [SIM] Conta Chenopodiacee - Amarantacee Indistinte_Chenopodiacee | Numeric | 7 digits | | 048151 | [SIM] Conta Poligonacee_Poligonacee indistinte | Numeric | 7 digits | | 048152 | [SIM] Conta Euphorbiacee_Euforbiacee indistinte | Numeric | 7 digits | | 048153 | [SIM] Conta Mirtacee_Mirtacee indistinte | Numeric | 7 digits | | 048154 | [SIM] Conta Ulmacee_Bagolaro comune | Numeric | 7 digits | | 048155 | [SIM] Conta Ulmacee_Olmo campestre | Numeric | 7 digits | | 048156 | [SIM] Conta Ulmacee_Ulmacee indistinte | Numeric | 7 digits | | 048157 | [SIM] Conta Platanacee_Platanacee indistinte | Numeric | 7 digits | | 048158 | [SIM] Conta Aceraceae_Aceracee indistinte | Numeric | 7 digits | | 048159 | [SIM] Conta Pinacee_Pinacee indistinte | Numeric | 7 digits | | 048160 | [SIM] Conta Salicacee_Salice comune | Numeric | 7 digits | | 048161 | [SIM] Conta Salicacee_Pioppo | Numeric | 7 digits | | 048162 | [SIM] Conta Salicacee_Salicacee indistinte | Numeric | 7 digits | | 048163 | [SIM] Conta Ciperacee_Ciperacee indistinte | Numeric | 7 digits | | 048164 | [SIM] Conta Juglandacee_Juglandacee indistinte | Numeric | 7 digits | | 048165 | [SIM] Conta Ippocastanacee_Ippocastanacee indistinte | Numeric | 7 digits | | 048166 | [SIM] Conta Spore fungine_Alternaria | Numeric | 7 digits | | 048167 | [SIM] Conta Spore fungine_Botrytis | Numeric | 7 digits | | 048168 | [SIM] Conta Spore fungine_Stemphylium | Numeric | 7 digits | | 048169 | [SIM] Conta Spore fungine_Cladosporium | Numeric | 7 digits | | 048170 | [SIM] Conta Spore fungine_Epicoccum | Numeric | 7 digits | | 048171 | [SIM] Conta Altri Pollini / Non Identificati_Altri pollini ident | Numeric | 7 digits | | 048172 | [SIM] Conta Altri Pollini / Non Identificati_Pollini non identif | Numeric | 7 digits | | 048173 | [SIM] Conta Altre Spore / Non identificati_Altre spore fungine | Numeric | 7 digits | | 048174 | [SIM] Conta Altre Spore / Non identificati_Spore fungine non ide | Numeric | 7 digits | | 048175 | [SIM] Conta Graminacee_Graminacee indistinte 1 | Numeric | 7 digits | | 048176 | [SIM] Conta Plantaginacee_Plantaginacee indistinte 1 | Numeric | 7 digits | | 048177 | [SIM] Conta Urticacee_Urticacee indistinte 1 | Numeric | 7 digits | | 048178 | [SIM] Conta Poligonacee_Poligonacee indistinte 1 | Numeric | 7 digits | | 048179 | [SIM] Conta Euphorbiacee_Euforbiacee indistinte 1 | Numeric | 7 digits | | 048180 | [SIM] Conta Mirtacee_Mirtacee indistinte 1 | Numeric | 7 digits | | 048181 | [SIM] Conta Platanacee_Platanacee indistinte 1 | Numeric | 7 digits | | 048182 | [SIM] Conta Aceraceae_Aceracee indistinte 1 | Numeric | 7 digits | | 048183 | [SIM] Conta Pinacee_Pinacee indistinte 1 | Numeric | 7 digits | | 048184 | [SIM] Conta Ciperacee_Ciperacee indistinte 1 | Numeric | 7 digits | | 048185 | [SIM] Conta Juglandacee_Juglandacee indistinte 1 | Numeric | 7 digits | | 048186 | [SIM] Conta Ippocastanacee_Ippocastanacee indistinte 1 | Numeric | 7 digits | | 048187 | [SIM] Conta Oleacee_Ligustro | Numeric | 7 digits | dballe-7.21/doc/fapi_connect.md0000644000175000017500000000410113022043102013305 00000000000000# Connecting to DB-All.e DB-All.e can work with several storage backends, identified via a URL. This is how to connect via URL using various ways of working with DB-All.e. `dbtype://info` is a placeholder for the connetion URL, that is documented below. Specifying the URL directly: Fortran: ```fortran ierr = idba_presentati(dbhandle, "dbtype://info", DBA_MVC, DBA_MVC) ``` dbadb: ```sh dbadb --dsn="dbtype://info" import … ``` provami: ```sh provami "dbtype://info" ``` python: ```py db = dballe.DB.connect_from_url("dbtype://info") ``` Specifying the URL via an environment variable: ```sh # Export the environment variable export DBA_DB="dbtype://info" ``` Fortran: ```fortran ierr = idba_presentati(dbhandle, DBA_MVC, DBA_MVC, DBA_MVC) ``` dbadb: ```sh dbadb import … ``` provami: ```sh provami ``` ```py db = dballe.DB.connect_from_url(os.environ["DBA_DB"]) ``` ## URL syntax ### For SQLite SQLite URLs need only specify the `.sqlite` file name. They can be either in the form `sqlite:file.sqlite` or `sqlite://file.sqlite`. If the environment variable `DBA_INSECURE_SQLITE` is set, then SQLite access will be faster but data consistency will not be guaranteed. ### For PostgreSQL DB-All.e uses standard PostgreSQL connection URIs. For example: `postgresql://user@host/db` See [the PostgreSQL documentation](http://www.postgresql.org/docs/9.4/static/libpq-connect.html#LIBPQ-CONNSTRING) for the complete documentation. ### For MySQL DB-All.e uses a MySQL connection URL with a syntax similar to [the one used by the JDBC connector](http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html): mysql://[host][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]... The only property names currently used by DB-All.e are `user` and `password`; the rest are ignored. For example: `mysql://host/db?user=username&password=secret` ### For memdb memdb is an internal memory-only storage that can be used to process small amounts of data without requiring a database server or a file. Its url is just `mem:`. dballe-7.21/doc/mksnippet0000755000175000017500000005661213022043102012311 00000000000000#!/usr/bin/python3 import textwrap import argparse import sys import os import re from collections import OrderedDict from itertools import zip_longest import logging log = logging.getLogger() class TextTable: def __init__(self, colsizes, titles): self.colsizes = colsizes self.titles = titles self.wrappers = [textwrap.TextWrapper(width=x) for x in colsizes] def print_row(self, vals): wrapped_vals = [wrapper.wrap(val) for wrapper, val in zip(self.wrappers, vals)] for cols in zip_longest(*wrapped_vals, fillvalue=""): row = [] for sz, val in zip(self.colsizes, cols): row.append(val.ljust(sz)) print(" ".join(row)) def print_head(self): self.print_row(self.titles) self.print_row(["-" * x for x in self.colsizes]) class MdTable: def __init__(self, colsizes, titles): self.colsizes = colsizes self.titles = titles def print_row(self, vals): row = [] for sz, val in zip(self.colsizes, vals): row.append(val.ljust(sz)) print("|", " | ".join(row), "|") def print_head(self): self.print_row(self.titles) self.print_row(["-" * x for x in self.colsizes]) def mkformat(unit, sz, dec): if "CHARACTER" in unit or "CODE TABLE" in unit: return "{} chars".format(sz) elif dec == 0: return "{} digits".format(sz) elif dec > 0: return ('#' * (sz - dec)) + '.' + ('#' * dec) else: return ('#' * sz) + ('0' * (-dec)); class Keywords: def __init__(self): # The values are: # required/optional/ignored on insert # required/optional/ignored on query # present/absent on results # comment about the field [optional value] self.comments = OrderedDict(( ("priority", [ "ignored", "optional", "present", "Every type of report has an associated priority that controls " "which data are first returned when there is more than one in the " "same physical space. It can be changed by editing " "/etc/dballe/repinfo.csv"]), ("priomax", [ "ignored", "optional", "absent" ]), ("priomin", [ "ignored", "optional", "absent" ]), ("rep_memo", [ "required", "optional", "present" ]), ("ana_id", [ "optional", "optional", "present", "Internal DB-ALLe ID referring to a pseudoana entry, used as " "a shortcut reference instead of specifying the full data" ]), ("block", [ "optional", "optional", "present" ]), ("station", [ "optional", "optional", "present" ]), ("mobile", [ "required", "optional", "present", "Set to 1 if the station is mobile, such as a ship or a flight; else 0"]), ("ident", [ "required if mobile=1", "optional", "present if mobile=1" ]), ("name", [ "optional", "optional", "present" ]), ("lat", [ "required", "optional", "present", "on insert, it has priority over ana_id" ]), ("lon", [ "required", "optional", "present", "on insert, it has priority over ana_id" ]), ("latmax", [ "ignored", "optional", "absent" ]), ("latmin", [ "ignored", "optional", "absent" ]), ("lonmax", [ "ignored", "optional", "absent" ]), ("lonmin", [ "ignored", "optional", "absent" ]), ("height", [ "optional", "optional", "present" ]), ("heightbaro", [ "optional", "optional", "present" ]), ("year_ident", [ "required if mobile=1", "optional", "present if mobile=1", "Only needed when the station is mobile"]), ("month_ident", [ "required if mobile=1", "optional", "present if mobile=1", "Only needed when the station is mobile"]), ("day_ident", [ "required if mobile=1", "optional", "present if mobile=1", "Only needed when the station is mobile"]), ("hour_ident", [ "required if mobile=1", "optional", "present if mobile=1", "Only needed when the station is mobile"]), ("min_ident", [ "required if mobile=1", "optional", "present if mobile=1", "Only needed when the station is mobile"]), # "datetime", [ "ignored", "ignored", "present", # "Convenience parameter: after a query it contains the datetime informations ", # " all in a single string"], ("year", [ "required", "optional", "present" ]), ("month", [ "required", "optional", "present" ]), ("day", [ "required", "optional", "present" ]), ("hour", [ "required", "optional", "present" ]), ("min", [ "required", "optional", "present" ]), ("sec", [ "required", "optional", "present" ]), ("yearmax", [ "ignored", "optional", "absent" ]), ("yearmin", [ "ignored", "optional", "absent" ]), ("monthmax", [ "ignored", "optional", "absent" ]), ("monthmin", [ "ignored", "optional", "absent" ]), ("daymax", [ "ignored", "optional", "absent" ]), ("daymin", [ "ignored", "optional", "absent" ]), ("hourmax", [ "ignored", "optional", "absent" ]), ("hourmin", [ "ignored", "optional", "absent" ]), ("minumax", [ "ignored", "optional", "absent" ]), ("minumin", [ "ignored", "optional", "absent" ]), ("secmax", [ "ignored", "optional", "absent" ]), ("secmin", [ "ignored", "optional", "absent" ]), ("leveltype", [ "required", "optional", "present" ]), ("l1", [ "required", "optional", "present" ]), ("l2", [ "required", "optional", "present" ]), ("pindicator", [ "required", "optional", "present" ]), ("p1", [ "required", "optional", "present" ]), ("p2", [ "required", "optional", "present" ]), ("var", [ "ignored", "optional", "present, indicates the name of the last variable returned" ]), ("varlist", [ "ignored", "optional", "absent", "Comma-separated list of variable codes wanted on output" ]), ("query", [ "ignored", "optional", "absent", "Comma-separated list of query modifiers. Can have one of: " "'best', 'bigana', 'nosort', 'stream'. " "Examples: 'best', 'nosort,stream'" ]), ("ana_filter", [ "ignored", "optional", "absent", "Restricts the results to only those stations which " "have a pseudoana value that matches the filter. " "Examples: 'height>=1000', 'B02001=1', '1000<=height<=2000" ]), ("data_filter", [ "ignored", "optional", "absent", "Restricts the results to only the variables of the given type, which " "have a value that matches the filter. " "Examples: 't<260', 'B22021>2', '10<=B22021<=20'" ]), ("attr_filter", [ "ignored", "optional", "absent", "Restricts the results to only those data which " "have an attribute that matches the filter. " "Examples: 'conf>70', 'B33197=0', '25<=conf<=50'" ]), ("limit", [ "ignored", "optional", "absent", "Maximum number of results to return" ]), )) self.data = OrderedDict() def read_kw(self, key, const): self.data[const] = {"key": key} def read_info_string(self, const, desc, len): if const not in self.data: return self.data[const]["desc"] = desc self.data[const]["unit"] = "CCITTIA5" self.data[const]["scale"] = 0 self.data[const]["len"] = int(len) def read_info_maxint(self, const, desc, unit): if const not in self.data: return self.data[const]["desc"] = desc self.data[const]["unit"] = unit self.data[const]["scale"] = 0 self.data[const]["len"] = 10 def read_info_int(self, const, desc, unit, len): if const not in self.data: return self.data[const]["desc"] = desc self.data[const]["unit"] = unit self.data[const]["scale"] = 0 self.data[const]["len"] = len def read_info_bufr(self, const, desc, unit, scale, len): if const not in self.data: return self.data[const]["desc"] = desc self.data[const]["unit"] = unit self.data[const]["scale"] = int(scale) self.data[const]["len"] = int(len) def read(self): parser = ( (self.read_kw, re.compile(r"^(?P[a-z0-9_]+),\s+(?P[A-Z0-9_]+)$")), (self.read_info_string, re.compile(r"""^\s+infos\[(?P[A-Z0-9_]+)\s*\].set_string\s*\(0,\s*"(?P[^"]+)",\s*(?P\d+)""")), (self.read_info_maxint, re.compile(r"""^\s+infos\[(?P[A-Z0-9_]+)\s*\].set_bufr\s*\(0,\s*"(?P[^"]+)",\s*"(?P[^"]+)",\s*DEF_MAXINT""")), (self.read_info_int, re.compile(r"""^\s+infos\[(?P[A-Z0-9_]+)\s*\].set_bufr\s*\(0,\s*"(?P[^"]+)",\s*"(?P[^"]+)",\s*DEF_INT\((?P\d+)\)""")), (self.read_info_bufr, re.compile(r"""^\s+infos\[(?P[A-Z0-9_]+)\s*\].set_bufr\s*\(0,\s*"(?P[^"]+)",\s*"(?P[^"]+)",\s*(?P\d+),\s*(?P\d+),""")), ) for line in sys.stdin: for fun, regex in parser: mo = regex.match(line) if not mo: continue fun(**mo.groupdict()) for const, info in self.data.items(): if "desc" not in info: raise RuntimeError("keyword {} has no description".format(const)) def print_dox(self): print("""/**@defgroup dba_record_keywords Keywords used by dballe::Record @ingroup tables This table lists the keywords used by dballe::Record. You can use them to query and set data using function such as Record::enq() and Record::set(). Every keyword is listed together with its measure unit, length in characters or digits and description. \\verbatim """) table = TextTable( colsizes=(13, 9, 13, 53), titles=("Name", "Unit", "Format", "Description") ) table.print_head() for const, info in self.data.items(): #tag, unit, sz, dec, desc fmt = mkformat(info["unit"], info["len"], info["scale"]) table.print_row((info["key"], info["unit"], fmt, info["desc"])) print() print("\\endverbatim") print("*/") def print_md(self): print("# Input/output/query parameters") print() table = MdTable( colsizes=(13, 9, 10, 27, 9, 8, 10, 31), titles=("Name", "Unit", "Format", "Description", "On insert", "On query", "On results", "Comment") ) table.print_head() for const, kwinfo in self.data.items(): #for tag, unit, sz, dec, desc in self.data: info = self.comments.get(kwinfo["key"], None) if info is None: ins = que = res = com = "" else: ins, que, res, com = info + ([""] * (4 - len(info))) fmt = mkformat(kwinfo["unit"], kwinfo["len"], kwinfo["scale"]) table.print_row((kwinfo["key"], kwinfo["unit"], fmt, kwinfo["desc"], ins, que, res, com)) print() print("## Input parameters for attribute-related action routines") print() table = MdTable( colsizes=(13, 9, 10, 27, 9, 8, 10, 31), titles=("Name", "Unit", "Format", "Description", "On insert", "On query", "On results", "Comment") ) table.print_head() table.print_row(("`*Bxxyyy`", "depends", "depends", "Value of the attribute", "required", "ignored", "present", "")) table.print_row(("`*var`", "Character", "7 chars", "Acoderibute queried", "ignored", "optional", "present, indicates the name of the last attribute returned", "")) table.print_row(("`*varlist`", "Character", "255 chars", "List of attributes to query", "ignored", "optional", "absent", "Comma-separated list of attribute B codes wanted on output")) table.print_row(("`*var_related`", "Character", "6 chars", "Variable related to the attribute to query", "required", "required", "absent", "It is automatically set by `idba_dammelo` and `idba_prendilo` (when `idba_prendilo` inserts a single variable)")) table.print_row(("`*context_id`", "Numeric", "10 digits", "Context ID of the variable related to the attribute to query", "required", "required", "absent", "It is automatically set by `idba_dammelo` and `idba_prendilo`")) class Aliases: def read(self): # Skip the declaration section for line in sys.stdin: if line.startswith("%%"): break alias_line = re.compile(r"^(?P[^,]+),\s*WR_VAR\((?P\d+),\s*(?P\d+),\s*(?P\d+)\)") # Read the data data = [] for line in sys.stdin: line = line.strip() if line == "%%": break mo = alias_line.match(line) if not mo: raise RuntimeError("Cannot parse {}".format(repr(line))) data.append(( mo.group("name"), "B{x:02d}{y:03d}".format(x=int(mo.group("x")), y=int(mo.group("y"))) )) data.sort() self.data = data def print_dox(self): print("""/**@defgroup dba_core_aliases Variable aliases @ingroup tables This table lists the aliases that can be used to refer to varcodes. \\verbatim""") table = TextTable( colsizes=(13, 8), titles=("Alias", "Variable")) table.print_head() for alias, var in self.data: table.print_row((alias, var)) print("""\\endverbatim */""") def print_md(self): print("""# Varcode aliases This table lists the aliases that can be used to refer to varcodes. """) table = MdTable( colsizes=(13, 8), titles=("Alias", "Variable")) table.print_head() for alias, var in self.data: table.print_row((alias, var)) class Levels: def read(self): re_split = re.compile(r"\t+") # Read the data self.data = [] for line in sys.stdin: line = line.strip() l = re_split.split(line) if len(l) < 3: l += [""] * (3 - len(l)) elif len(l) > 3: raise RuntimeError("line {} has too many fields".format(repr(l))) self.data.append(l) def print_dox(self): print("""/**@defgroup level_table Level type values @ingroup tables This table lists the possible values for leveltype1 or leveltype2 and the interpretation of the corresponding numerical value l1 or l2. Leveltype values in the range 0-255 can be used for defining either a single level (leveltype1) or a surface delimiting a layer (leveltype1 and leveltype2) with any meaningful combination of leveltypes; values of leveltype >255 have a special use for encoding cloud values in SYNOP reports and they do not strictly define physical surfaces. The idea is borrowed from the GRIB edition 2 fixed surface concept and the values for leveltype coincide with the GRIB standard where possible. \\verbatim """) table = TextTable( colsizes=(11, 38, 27), titles=("Level Type", "Meaning", "Unit/contents of l1/l2") ) table.print_head() for type, desc, li in self.data: table.print_row((type, desc, li)) print("""\\endverbatim */""") def print_md(self): print("""# Level type values This table lists the possible values for leveltype1 or leveltype2 and the interpretation of the corresponding numerical value l1 or l2. Leveltype values in the range 0-255 can be used for defining either a single level (leveltype1) or a surface delimiting a layer (leveltype1 and leveltype2) with any meaningful combination of leveltypes; values of leveltype >255 have a special use for encoding cloud values in SYNOP reports and they do not strictly define physical surfaces. The idea is borrowed from the GRIB edition 2 fixed surface concept and the values for leveltype coincide with the GRIB standard where possible. """) table = MdTable( colsizes=(11, 38, 27), titles=("Level Type", "Meaning", "Unit/contents of l1/l2") ) table.print_head() for type, desc, li in self.data: table.print_row((type, desc, li)) class Tranges: def __init__(self): self.descs = ( ( 0, "Average" ), ( 1, "Accumulation" ), ( 2, "Maximum" ), ( 3, "Minimum" ), ( 4, "Difference (value at the end of the time range minus value at the beginning)" ), ( 5, "Root Mean Square" ), ( 6, "Standard Deviation" ), ( 7, "Covariance (temporal variance)" ), ( 8, "Difference (value at the beginning of the time range minus value at the end)" ), ( 9, "Ratio" ), ( 51, "Climatological Mean Value" ), ( '10-191', "Reserved" ), ( '192-254', "Reserved for Local Use" ), ( 200, "Vectorial mean" ), ( 201, "Mode" ), ( 202, "Standard deviation vectorial mean" ), ( 203, "Vectorial maximum" ), ( 204, "Vectorial minimum" ), ( 205, "Product with a valid time ranging inside the given period" ), ( 254, "Istantaneous value" ), ) self.notes = ( "Validity time is defined as the time at which the data are measured or at which forecast is valid; for statistically processed data, the validity time is the end of the time interval.", "Reference time is defined as the nominal time of an observation for observed values, or as the time at which a model forecast starts for forecast values.", "The date and time in DB-All.e are always the validity date and time of a value, regardless of the value being an observation or a forecast.", "P1 is defined as the difference in seconds between validity time and reference time. For forecasts it is the positive forecast time. For observed values, the reference time is usually the same as the validity time, therefore P1 is zero. However P1 < 0 is a valid case for reports containing data in the past with respect to the nominal report time.", "P2 is defined as the duration of the period over which statistical processing is performed, and is always nonnegative. Note that, for instantaneous values, P2 is always zero.", # "The Eta (NAM) vertical coordinate system involves normalizing the pressure at some point on a specific level by the mean sea level pressure at that point.", ) def read(self): pass def print_dox(self): print("""/**@defgroup trange_table Time range values @ingroup tables Definition of the main concepts related to the description of time range and statistical processing for observed and forecast data: """) re_newlines = re.compile(r"\n+") for n in self.notes: print("\\li {}".format(re_newlines.sub(n, "\n"))) print(""" The following table lists the possible values for pindicator and the interpretation of the corresponding values of P1 and P2 specifying a time range: """) for d in self.descs: print('\\li \b {} {}'.format(d[0], re_newlines.sub(d[1], "\n"))) print("*/") def print_md(self): print("""# Time range values" Definition of the main concepts related to the description of time range and statistical processing for observed and forecast data: """) re_newlines = re.compile(r"\n+") for n in self.notes: print("* {}".format(re_newlines.sub(n, "\n"))) print(""" The following table lists the possible values for pindicator and the interpretation of the corresponding values of P1 and P2 specifying a time range: """) for d in self.descs: print('* **{}** {}'.format(d[0], re_newlines.sub(d[1], "\n"))) class Btable: def read(self): import struct reader = struct.Struct("x 6s x 64s x 24s x 3s x 12s x 3s x 24s x 3s x 10s") self.data = [] for lineno, line in enumerate(sys.stdin.buffer, 1): self.data.append(tuple(x.decode("utf-8") for x in reader.unpack(line[:158]))) def print_dox(self): print("""/**@defgroup local_b_table Local B table @ingroup tables This table lists all the entries of the local B table. You can use them to provide context information for a measured value. Every entry is listed together with its measure unit, length in characters or digits and description. \\verbatim """) table = TextTable( colsizes=(6, 66, 18, 14), titles=("Code", "Description", "Unit", "Format") ) table.print_head() for info in self.data: code, desc, unit, dec, sz = info[0], info[1], info[6], int(info[7]), int(info[8]) fmt = mkformat(unit, sz, dec) unit = re.sub("CHARACTER", "Character", unit) unit = re.sub("(NUMERIC|NUMBER)", "Numeric", unit) table.print_row((code, desc, unit, fmt)) print("""\\endverbatim */""") def print_md(self): print("""# Local B table This table lists all the entries of the local B table. You can use them to provide context information for a measured value. Every entry is listed together with its measure unit, length in characters or digits and description. """) table = MdTable( colsizes=(6, 66, 18, 14), titles=("Code", "Description", "Unit", "Format") ) table.print_head() for info in self.data: code, desc, unit, dec, sz = info[0], info[1], info[6], int(info[7]), int(info[8]) fmt = mkformat(unit, sz, dec) unit = re.sub("CHARACTER", "Character", unit) unit = re.sub("(NUMERIC|NUMBER)", "Numeric", unit) table.print_row((code, desc, unit, fmt)) def main(): parser = argparse.ArgumentParser(description="Format dballe data snippets for documentation.") parser.add_argument("intype", help="input type") parser.add_argument("outtype", help="output type") parser.add_argument("-v", "--verbose", action="store_true", help="verbose output") parser.add_argument("--debug", action="store_true", help="verbose output") args = parser.parse_args() FORMAT = "%(asctime)-15s %(levelname)s %(message)s" if args.debug: logging.basicConfig(level=logging.DEBUG, stream=sys.stderr, format=FORMAT) elif args.verbose: logging.basicConfig(level=logging.INFO, stream=sys.stderr, format=FORMAT) else: logging.basicConfig(level=logging.WARN, stream=sys.stderr, format=FORMAT) inputs = { "key": Keywords, "alias": Aliases, "levels": Levels, "tranges": Tranges, "btable": Btable, } Proc = inputs.get(args.intype, None) if Proc is None: raise RuntimeError("Input type {} not supported".format(args.intype)) proc = Proc() proc.read() gen = getattr(proc, "print_" + args.outtype, None) if gen is None: raise RuntimeError("Output type {} not supported for input {}".format(args.outtype, args.intype)) gen() if __name__ == "__main__": main() dballe-7.21/doc/add_templates_to_manpage0000755000175000017500000000151713022043102015271 00000000000000#!/usr/bin/env python import sys, re, subprocess SPLIT=re.compile(r"\s*,\s*") # Read the aliases templates = [] proc = subprocess.Popen(["./run-local", "dbamsg", "convert", "--template=list"], stdout=subprocess.PIPE) out, err = proc.communicate() for line in out.split("\n"): if not line: continue name, desc = line.split(" - ") templates.append(dict(name=name, desc=desc)) templates.sort(key=lambda x: x["name"]) for line in sys.stdin: if line.startswith(".SH AUTHOR"): print r""" .SH TEMPLATE NAMES This is a list of possible template names for the \fB\-\-template\fP switch: .P """ for a in templates: print ".TP" print r"\fB%s\fP" % a["name"] print ".br" print a["desc"] print r""" .P \-\-template=list will also print the list. """ print line, dballe-7.21/doc/fapi_tranges.md0000644000175000017500000000371213022043102013326 00000000000000# Time range values" Definition of the main concepts related to the description of time range and statistical processing for observed and forecast data: * Validity time is defined as the time at which the data are measured or at which forecast is valid; for statistically processed data, the validity time is the end of the time interval. * Reference time is defined as the nominal time of an observation for observed values, or as the time at which a model forecast starts for forecast values. * The date and time in DB-All.e are always the validity date and time of a value, regardless of the value being an observation or a forecast. * P1 is defined as the difference in seconds between validity time and reference time. For forecasts it is the positive forecast time. For observed values, the reference time is usually the same as the validity time, therefore P1 is zero. However P1 < 0 is a valid case for reports containing data in the past with respect to the nominal report time. * P2 is defined as the duration of the period over which statistical processing is performed, and is always nonnegative. Note that, for instantaneous values, P2 is always zero. The following table lists the possible values for pindicator and the interpretation of the corresponding values of P1 and P2 specifying a time range: * **0** Average * **1** Accumulation * **2** Maximum * **3** Minimum * **4** Difference (value at the end of the time range minus value at the beginning) * **5** Root Mean Square * **6** Standard Deviation * **7** Covariance (temporal variance) * **8** Difference (value at the beginning of the time range minus value at the end) * **9** Ratio * **51** Climatological Mean Value * **10-191** Reserved * **192-254** Reserved for Local Use * **200** Vectorial mean * **201** Mode * **202** Standard deviation vectorial mean * **203** Vectorial maximum * **204** Vectorial minimum * **205** Product with a valid time ranging inside the given period * **254** Istantaneous value dballe-7.21/doc/fapi_parms.md0000644000175000017500000002202413022043102013002 00000000000000# Input/output/query parameters | Name | Unit | Format | Description | On insert | On query | On results | Comment | | ------------- | --------- | ---------- | --------------------------- | --------- | -------- | ---------- | ------------------------------- | | priority | NUMBER | 10 digits | Priority of this type of report | ignored | optional | present | Every type of report has an associated priority that controls which data are first returned when there is more than one in the same physical space. It can be changed by editing /etc/dballe/repinfo.csv | | priomax | NUMBER | 10 digits | Maximum priority of reports queried | ignored | optional | absent | | | priomin | NUMBER | 10 digits | Minimum priority of reports queried | ignored | optional | absent | | | rep_memo | CCITTIA5 | 20 digits | Mnemonic alias for type of report | required | optional | present | | | ana_id | NUMERIC | 10 digits | Station database ID | optional | optional | present | Internal DB-ALLe ID referring to a pseudoana entry, used as a shortcut reference instead of specifying the full data | | mobile | NUMERIC | 10 digits | Station is mobile | required | optional | present | Set to 1 if the station is mobile, such as a ship or a flight; else 0 | | ident | CCITTIA5 | 64 digits | Identifier of flight or ship | required if mobile=1 | optional | present if mobile=1 | | | lat | DEGREE | ##.##### | Latitude | required | optional | present | on insert, it has priority over ana_id | | lon | DEGREE | ###.##### | Longitude | required | optional | present | on insert, it has priority over ana_id | | latmax | DEGREE | ##.##### | Maximum latitude queried | ignored | optional | absent | | | latmin | DEGREE | ##.##### | Minimum latitude queried | ignored | optional | absent | | | lonmax | DEGREE | ###.##### | Maximum longitude queried | ignored | optional | absent | | | lonmin | DEGREE | ###.##### | Minimum longitude queried | ignored | optional | absent | | | year | YEAR | 4 digits | Year | required | optional | present | | | month | MONTH | 2 digits | Month | required | optional | present | | | day | DAY | 2 digits | Day | required | optional | present | | | hour | HOUR | 2 digits | Hour | required | optional | present | | | min | MINUTE | 2 digits | Minutes | required | optional | present | | | sec | SECOND | 2 digits | Seconds | required | optional | present | | | yearmax | YEAR | 4 digits | Maximum year queried | ignored | optional | absent | | | yearmin | YEAR | 4 digits | Year or minimum year queried | ignored | optional | absent | | | monthmax | MONTH | 2 digits | Maximum month queried | ignored | optional | absent | | | monthmin | MONTH | 2 digits | Minimum month queried | ignored | optional | absent | | | daymax | DAY | 2 digits | Maximum day queried | ignored | optional | absent | | | daymin | DAY | 2 digits | Minimum day queried | ignored | optional | absent | | | hourmax | HOUR | 2 digits | Maximum hour queried | ignored | optional | absent | | | hourmin | HOUR | 2 digits | Minumum hour queried | ignored | optional | absent | | | minumax | MINUTE | 2 digits | Maxminum minutes queried | ignored | optional | absent | | | minumin | MINUTE | 2 digits | Minimum minutes queried | ignored | optional | absent | | | secmax | SECOND | 2 digits | Maxminum seconds queried | ignored | optional | absent | | | secmin | SECOND | 2 digits | Minimum seconds queried | ignored | optional | absent | | | leveltype1 | NUMBER | 10 digits | Type of first level | | | | | | l1 | NUMBER | 10 digits | Level layer L1 | required | optional | present | | | leveltype2 | NUMBER | 10 digits | Type of second level | | | | | | l2 | NUMBER | 10 digits | Level layer L2 | required | optional | present | | | pindicator | NUMBER | 10 digits | P indicator for time range | required | optional | present | | | p1 | SECOND | 10 digits | Time range P1 | required | optional | present | | | p2 | SECOND | 10 digits | Time range P2 | required | optional | present | | | var | CCITTIA5 | 7 digits | Variable queried | ignored | optional | present, indicates the name of the last variable returned | | | varlist | CCITTIA5 | 255 digits | List of variables to query | ignored | optional | absent | Comma-separated list of variable codes wanted on output | | context_id | NUMERIC | 10 digits | Context ID of the variable | | | | | | query | CCITTIA5 | 255 digits | Query behaviour modifier | ignored | optional | absent | Comma-separated list of query modifiers. Can have one of: 'best', 'bigana', 'nosort', 'stream'. Examples: 'best', 'nosort,stream' | | ana_filter | CCITTIA5 | 255 digits | Filter on anagraphical data | ignored | optional | absent | Restricts the results to only those stations which have a pseudoana value that matches the filter. Examples: 'height>=1000', 'B02001=1', '1000<=height<=2000 | | data_filter | CCITTIA5 | 255 digits | Filter on data | ignored | optional | absent | Restricts the results to only the variables of the given type, which have a value that matches the filter. Examples: 't<260', 'B22021>2', '10<=B22021<=20' | | attr_filter | CCITTIA5 | 255 digits | Filter on data attributes | ignored | optional | absent | Restricts the results to only those data which have an attribute that matches the filter. Examples: 'conf>70', 'B33197=0', '25<=conf<=50' | | limit | NUMBER | 10 digits | Maximum number of results to return | ignored | optional | absent | Maximum number of results to return | | var_related | CCITTIA5 | 6 digits | Variable related to attribute queried | | | | | ## Input parameters for attribute-related action routines | Name | Unit | Format | Description | On insert | On query | On results | Comment | | ------------- | --------- | ---------- | --------------------------- | --------- | -------- | ---------- | ------------------------------- | | `*Bxxyyy` | depends | depends | Value of the attribute | required | ignored | present | | | `*var` | Character | 7 chars | Acoderibute queried | ignored | optional | present, indicates the name of the last attribute returned | | | `*varlist` | Character | 255 chars | List of attributes to query | ignored | optional | absent | Comma-separated list of attribute B codes wanted on output | | `*var_related` | Character | 6 chars | Variable related to the attribute to query | required | required | absent | It is automatically set by `idba_dammelo` and `idba_prendilo` (when `idba_prendilo` inserts a single variable) | | `*context_id` | Numeric | 10 digits | Context ID of the variable related to the attribute to query | required | required | absent | It is automatically set by `idba_dammelo` and `idba_prendilo` | dballe-7.21/doc/libdballe.dox.in0000644000175000017500000032050013022043102013372 00000000000000# Doxyfile 1.8.11 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single 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 #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv # for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = libdballe # 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 = @VERSION@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. 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 = # 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 causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = 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. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES, 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. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, 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. # The default value is: YES. 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 and 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. # The default value is: NO. 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. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, 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 # The default value is: YES. FULL_PATH_NAMES = NO # 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. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. 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 list of 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. # The default value is: NO. 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-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = YES # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_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 behavior. 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 behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. 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. # The default value is: NO. 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. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that act 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 = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" # will allow you to use the command class in the itcl::class meaning. TCL_SUBST = # 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. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, Javascript, # C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: # FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: # Fortran. In the later case the parser tries to guess whether the code is fixed # or free formatted code, this is the default for Fortran type files), VHDL. For # instance to make doxygen treat .inc files as Fortran files (default is PHP), # and .f files as C (default is Fortran), use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # 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); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # 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. # The default value is: NO. DISTRIBUTE_GROUP_DOC = YES # If one adds a struct or class to a group and this option is enabled, then also # any nested class or struct is added to the same group. By default this option # is disabled and one has to add nested compounds explicitly via \ingroup. # The default value is: NO. GROUP_NESTED_COMPOUNDS = NO # Set the SUBGROUPING tag to YES 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. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # 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 respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = NO # 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. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = NO # This flag is only useful for Objective-C code. If 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, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO 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. # The default value is: NO. 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, these classes will be included in the various overviews. This option # has no effect if EXTRACT_ALL is enabled. # The default value is: NO. 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, these declarations will be # included in the documentation. # The default value is: NO. 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, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. 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 then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. 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. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES 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. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = 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 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. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = 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. # The default value is: YES. 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. # The default value is: YES. 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. # The default value is: YES. 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. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have 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 value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. 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. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # 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 command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = YES # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag 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. # The default value is: YES. WARN_IF_UNDOCUMENTED = NO # If the WARN_IF_DOC_ERROR tag 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. # The default value is: YES. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong or incomplete # parameter documentation, but not about the absence of documentation. # The default value is: NO. WARN_NO_PARAMDOC = NO # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. # The default value is: NO. WARN_AS_ERROR = 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) # The default value is: $file:$line: $text. 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 standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is 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. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. INPUT = ../dballe \ . # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: http://www.gnu.org/software/libiconv) for the list of # possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, # *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, # *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. FILE_PATTERNS = *.h \ *.c \ *.dox # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # 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. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. 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 = test-utils-*.h # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # 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. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be 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. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. 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 information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # 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 that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # function all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = 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. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the config file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES 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. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: http://clang.llvm.org/) for more accurate parsing at the # cost of reduced performance. This can be particularly helpful with template # rich C++ code for which doxygen's built-in parser lacks the necessary type # information. # Note: The availability of this option depends on whether or not doxygen was # generated with the -Duse-libclang=ON option for CMake. # The default value is: NO. CLANG_ASSISTED_PARSING = NO # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_OPTIONS = #--------------------------------------------------------------------------- # 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. # The default value is: YES. ALPHABETICAL_INDEX = NO # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. 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 a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. 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. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = c_api # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. 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 left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to YES can help to show when doxygen was last run and thus if the # documentation is up to date. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = NO # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: http://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # 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. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # 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. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # 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). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # 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. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location of Qt's # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the # generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value 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 # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has # the same information as the tab index, you could consider setting # DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # 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. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # http://www.mathjax.org) which uses client side Javascript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: # http://docs.mathjax.org/en/latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from http://www.mathjax.org before deployment. # The default value is: http://cdn.mathjax.org/mathjax/latest. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /